Summer of Code/2014/Music Keyboard Enchancements

From Sugar Labs
< Summer of Code‎ | 2014
Revision as of 13:29, 4 June 2014 by Walter (talk | contribs) (→‎About your project)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

About you

  • What is your name?

Aneesh Dogra

  • What is your email address? ;)

  • What is your Sugar Labs wiki username?


  • What is your IRC nickname on


  • What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)


  • Where are you located, and what hours (UTC) do you tend to work? (We also try to match mentors by general time zone if possible.)

I am located in India. UTC + 5:30. I usually tend to work in afternoons (2PM-6PM) and nights (9PM-2AM).

  • Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?

I have worked with a couple of opensource projects. Majorly Libav, FFMPEG and of course Sugarlabs (oh! yeah I am a homeboy!). I got involved with sugarlabs 2 years ago as a GCI 2012 participant and later a GCI winner. Then I continued my contribution for and mentored a student for GSoC 2013 and then some more students for GCI 2013. I am currently maintaining around 6 activities including Level Tool, Calculate, IRC and some others. My work on Libav also started as a GCI 2011 participant and later a winner. I continued my contribution in Libav and FFMPEG for over a year and worked on the Sunrast encoder, the Bytestream2 API, Multithreading and a few bug fixes. It was all done in C. Besides this I am pretty active on Github. I love to create my little opensource projects and contribute to some.

About your project

  • What is the name of your project?

Music Keyboard Enhancements

  • Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

I'll be working to improve the music keyboard activity. Making it more user friendly, adding ability to record notes and play them back and allowing a user to record his/her compositions and export it to a audio file. Major UI tweaks would include making the selection of the instrument more smooth in the application. I'd be using the stafflib on to display notes on the keys and then assigning a unique index to each of these keys, store them in the datastore and add an ability to play them back. The playback would ideally be triggering key down events on the keys after proper delays.

  • What is the timeline for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.

Dates Week Work to be Done
23rd May - 30th May Start with the UI improvements and get an overview of the code base.
1st June - 7th June 1 Finalize the UI improvements, do a few tests on XO-4 and sugar-build, make sure everything is working.
7th June - 14th June 2 Start working on the stafflib and show a couple of notes on each piano key.
14th June - 21st June 3 Add unique id's to notes and setup the initial playing back module.
21st June - 28th June 4 Finish the playing back module and test on XO-4.
17th June - 24th June 5 Host meetings with mentor to review the work done and discuss about the research on recorder.
24th June - 1st July 6 Mid-Term Evaluations - Research on modules for recording in csound. Try to find python libraries.
1st July - 8th July 7 Initial work on the recording.
8th July - 15th July 8 Work on recording.
15th July - 22nd July 9 Finish up recording.
22nd July - 29th July 10 Buffer
29th July - 5th August 11 Finalize the work, show it to mentor for review.
5th August - 12th August 12 Buffer-week for bug fixes.
12th August - 19th August 13 Final touches - reviews.
19th August - 26th August 14 Firm Pencil Down & Final Evaluations
  • Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

I have plenty of experience and exposure to sugar code. I am not new to any fructose activity and have contributed patches to Calculate, Read, Write, JukeBox, Chat and Browse. I have contributed to over 20 activities, and a plethora of bug fixes. Besides sugar, I have a very active github profile, one of my code sharing service website [[1]] I built is being used in Vimeo internally for code review. One of my projects got featured on Lifehacker [[2]]. I have won GCI twice and have mentored for GSoC once before. I love coding in python, I have around 15 little baby projects on github, and a few shell scripts. Besides, programming. I am an A student in school. I know how to manage my deadlines, and hardly miss any. I am also no new to summer internships, last summer I interned with Activity Central and did some work with Pathagar Book Server and Newpootle. Regarding skill sets mentioned in the prerequisites, I have done a ton of Gtk2->Gtk3 ports as a part of my work for GCI 2012, so I have a fair amount of idea of both Gtk2 and Gtk3. I have worked on a couple of python projects (sugar being one of them) and I think I have a fair amount of python knowledge to take this project forward.

I also have some research experience, Last winter I did a computer vision internship at school. More exhaustive list of my achievements and some recommendations can be found on my Linkedin [[3]] profile.

You and the community

  • If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.

I have mentioned this before in my proposal, I'll mention it again. From the user's perspective: The first time when you boot up an XO you see a little spiral of activities, these activities define sugar and our aim. The proper healthy functioning of these core activities are important to serve that first impression. The Activity Unit Tests (the project) will help to make sure this happens.

Unit testing will give us much better stability and control over changes and it will make it easier to verify other platforms, which is ever more important for us. --Walter (talk) 16:12, 17 March 2014 (EDT)

Would be a good addition have tests for our main activities, and a good start to include them in more activities. --Godiard (talk) 17:19, 18 March 2014 (EDT)

  • What will you do if you get stuck on your project and your mentor isn't around?

I'd try to ask on the mailing list. The mailing list is always active and am sure I'll get someone to help me there.

  • How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?

My initial strategy would be to send daily or bi-weekly to mails my mentor or the mailing list about my progress. As far as I am aware we also have a weekly SOC meeting, that's another way to inform about my progress. I'll mostly ask questions on IRC and the mailing list and also directly mailing the mentors if required.


  • We want to make sure that you can set up a development environment before the summer starts. Please do one of the following:
    • Send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "logout".
    • Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.

There are plenty -

  • Describe a great learning experience you had as a child.

I got a computer when I was in 2nd grade. My mother won't let me stay up at night, so my father and I used to sneak out of the bedroom and he used to teach me about paint and some other basic utilities. These were the initial days when I really fell in love with computers. We then continued these little sessions and I learned some basic VB scripting from him till I reached the 3rd grade. It was my first impression of computer programming as I know it.

  • Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?

Well, I am passionate about sugar and that's why I have contributed to the project for some while now. I share the same vision and would love to continue my work in sugar as a part of GSoC.