Summer of Code/2010/Adaptive UI Framework for Different Age Groups

From Sugar Labs
< Summer of Code‎ | 2010
Revision as of 12:50, 6 April 2010 by Mohanr (talk | contribs)
Jump to navigation Jump to search


TODO

  • Apply in melange, google's web app before April 9
  • Check the image requirements (Restart). Make changes to code and upload a new image if necessary.
  • Expand the timeline to outline my work beyond GSoC to the end of my thesis.
  • Obtain answers from members on the impact of this project on the community.
  • 'comment on the talk page of other applications'

About me

What is your name?
Mohan Raj Rajamanickam
What is your email address?
mohanraj dot cit at gmail dot com
What is your Sugar Labs wiki username?
Mohanr
What is your IRC nickname?
mohanr
What is your primary language?
English
Where are you located, and what hours do you tend to work?
Vancouver, Canada. I am a morning person and usually not very productive after 9pm.
Have you participated in an open-source project before? If not, why do you want to work on an open-source project this summer?
I have not contributed code directly so far. My contributions have been limited to a number of bug reports and ideas spread across several projects.

I was instrumental in introducing Linux in my undergraduate CS department back in 2001. I have been wanting to contribute to Open-source ever since. I had dreamed of making significant contributions when I quit my corporate job and joined an NGO as the IT manager. But my time there was spent in developing and deploying the IT infrastructure using 100% Open-source software (Plone, Django, Zope, MySQL, Apache, TeX, Ubuntu). I have had this deep desire to contribute. This would often turn to guilt especially when I would be awed by some feature in the Open-source software stack that I use (Linux has been my Primary OS since 2002). I am back in school doing my CS masters now and I think this summer, this SOC could pave way for me to finally take the role of a Open-source developer and community contributor.

About your project

What is the name of your project?
Adaptive UI Framework for Different Age Groups
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?
Can we design UI targeted at different age groups of children such that it improves their experience (usability) with the system ? Can such UI designed specifically for different age groups also facilitate learnability of the UI (the system features that it abstracts) as they move from one age group to another ? (culminating in a desktop, for e.g. from Ubuntu-sugar-remix to Ubuntu).
We would need to architect and build a UI abstraction layer that would enable users of different age groups to experience the system differently. This should be achieved requiring minimal change on part of the rest of the code base, especially activities.
Scope: A UI abstraction framework is too much work: for something that we aren't even sure we need. And I won't be able to do it in 3 months single handedly. So I could start paving way for what could eventually become a framework, but still manage to do something useful for the community in these 3 months. Lets take the feature of discoverability of keyboard shortcuts and context menus. I could start working on bringing this feature into Sugar. But do younger children need keyboard shortcuts? Can the clues for enhancing discoverability of such features lead to confusion for those who dont need it? So depending upon the age of the child using the system (obtained from user profile), the system could choose to expose certain clues or not. I will limit my target groups to two. What age ranges form the groups - needs to be explored (6-10 and 11-15 ?). I think this can be done in 3 months.
What is the timeline for development of your project?
This work will be part of my Master's thesis. I would hence be working on the project for the next 1.5 years.
  • May 1 - May 23:
    • Get to know the code base and the persons behind.
    • Back ground research of prior work concerning technology and children.
    • A small informal user study wherein observations of children from the 2 target age groups using the system are recorded.
  • Week 1: Brainstorm different designs based on the observations. Form basic UI design principles and sample mockups for the different age groups. Improvise with feedback from mentor & community. These principles will guide the rest of my work.
  • Week 2: Start building the necessary support structures in the core system for Adaptive UI.
  • Week 3: Continue building support structures for Adaptive UI. Code review and commit. No changes to system behavior at this point.
  • Week 4: Start work on improving discoverability of keyboard shortcuts.
  • Week 5: Code review and commit. Blog. System should now have enhanced (age agnostic) discoverability of keyboard shortcuts.
  • Week 6: Hook up the keyboard shortcuts discoverability feature with the Adaptive UI mechanism.
  • Week 7: Code review and commit. System should now have discoverability of keyboard shortcuts feature depending upon the age of the user.
  • Week 8: Refactoring week. Review all committed code and there should be better ways of doing the same thing. Refactor, code review and commit. Blog.
  • Week 9: Start work on improving discoverability of context menus.
  • Week 10: Code review and commit.
  • Week 11: Hook it up with the Adaptive core.
  • Week 12: Finish work, core review and commit.
  • Week 13: Document work. Blog. Put up a presentation summarizing my work and experience so far.
  • Sign-off GSoC
Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described.
  • Over 6 years experience in Python
    • Worked as a contractor at Google for 1 year 5 months (Python programming throughout)
      • Obtained Python readability (Google seal of approval that I can write readable Python code) from Alex Martelli
      • Improved quality of code by performing code reviews on daily basis for the team (for about 6 months)
  • Passionate about Opensource
    • Quit my jobs as software engineer in an MNC and went to work for an NGO as their IT manager
      • Had the opportunity to fully realize my long-time passion for Open Source Software (OSS)
      • Delivered the solutions using exclusively OSS
      • Instrumental in the introduction of Linux into the undergraduate CS lab
  • Penchant for clean design and efficiency
    • Won appreciation award for the self-initiative of single-handedly developing a custom test automation framework for streamlining QA
    • Received first prize in intra-college software competition
    • At the NGO, managed the development of web applications including a CMS website and CRM solutions. Increased the number of unique visitors to the website over 30 fold within a year. Saved around 20% in operational costs through streamlining various processes.


You and the community

If your project is successfully completed, what will its impact be on the Sugar Labs community?
Sugar (& OLPC), I believe, is based on the principles of Constructionism. Discoverability and learnability of the system with minimal/no external help hence becomes a very important factor. My work will pave way for a framework for improving the discoverability of the features of the system in a customized manner depending upon the individual using the system. I am going to bank upon only one factor: age. But once the framework is mature (couple of years from now), I can imagine various plugins that take into account other differences: culture, previous experience with technology, physical disabilities - to name a few. This will immensely improve the system's reach and usability among the millions of children using it every day.
Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?

I will be travelling between Canada and India. I am interested in observing how children with radically different levels of exposure to technology react to Sugar. I would like a primary deployment center at Vancouver. But I would also like to visit a center at India when I make a visit (once a year) and observe how differently the children who haven minimal exposure to technology react to the design of Sugar UI.

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

Use the alternate contacts obtained from mentor beforehand. Fall back on community: IRC and then if still the problem exists after 12h contact mailing list. If nothing works and if it seems like I am slipping behind on schedule, contact the GSoC person: Tim McNamara.

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?

Maintain wiki page documenting progress, encountered problems and solutions obtained. Blog when a milestone is reached. Mail a weekly summary to the mentor, other developers interested/knowledgeable in the area and if necessary, the developers mailing list.

Miscellaneous

Screenshot of my first modification to my development environment. Note that the drop-down menu text has my email address (in place of the word "Restart").
What is your t-shirt size?
XXL (I know, I have to lose weight :)
Describe a great learning experience you had as a child.
I have been star-eyed kid passionate about absolute energy conservation for as long as I can remember; drawing plans and trying to build perpetual motion systems during playtime. I am not sure when or how it happened, but eventually I began to realize that perfect energy conservation might not be possible. That friction, trade-offs and losses are an inevitable part of the equation.

I still catch myself wanting to design the perfect architecture, write the perfect program or buy the perfect laptop that will last perpetually. I have to often remind myself that Engineering (and much of life) is a balancing act of making the most elegant compromises in the limited time frame (and improvise later). Its been a tough and valuable lesson.

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?

Here is an excerpt from my 'Statement of Purpose' which was submitted as part of my graduate application:

 After Ph.D. ?
   After obtaining my Ph.D., I would like to 
     work on selected Open source projects; esp. those aimed at children, for e.g OLPC project's Sugar 
       build a team of volunteers and mentor them in areas of usability 
     work as a professor in a research oriented university or
       as a research scientist in a usability lab
     work with children in making computer a viable part of their creativity tool-set.