Marbles

From Sugar Labs
Revision as of 08:24, 3 April 2009 by Puneet (talk | contribs)
Jump to navigation Jump to search

About Me

Q1. What is your name?

Ans. Puneet Girdhar

Q2. What is your email address?

Ans. puneetgirdhar.iiit@gmail.com

Q3. What is your Sugar Labs wiki username?

Ans. puneet

Q4. What is your IRC nickname?

Ans. chasedspeed

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

Ans. english and hindi

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

Ans.Hyderabad, India-500032. In summer, I can devote full time on open source activity. Any time suits me fine.

Q7. 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?

Ans.This would be my first experience in open source development. I have worked on variety of projects ranging from web services, mobile development in j2me, python web server managment. I guess, I knew about GSOC before but was busy in learning open source technologies so could not apply before, but now after gaining enough experience about project development and technical skills I didn't want to lose the opportunity to contribute back to open source community.I want to get started here and wish to continue even after GSOC.

About My project

Q8. What is the name of your project?

Ans. Marbles : Shape the imagination

Q9. 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?

Ans.We are supporting children imagination and trying to realize them in digtal world. Students often love to indulge themselves in various acivities ranging from playing to building stuff, to management . These are nothing but their imaginative reach trying to make it real. These creativity are the most important one and the most beneficial in child development. Computers on other hand are meant for catching imagination and creating artificial reality, then why shouldn't we attach them both. We would be using computers digital approach to support child creativity. Children can play games, learn programming , build application, learn graphics and many other activities.

Use case scenarios :

Students can use this project for

  1. create a simple UI application with simple drag and drop widgets.
  2. they would be able to resize the widget, reorder them and associate some event handlers to the widgets.
  3. Programming support would be given for advanced students where they can test and improve their programming skills for beginners, a step-by-step instruction sets for introducing them in programming.
  4. We can go for sound support with pygame library, where we can interact the program with simple sounds, since children get attracted to sound
    more easily than text
  5. Help Manual to get started for students. Special care will be taken for information supplied, they would be concise and expressive.

This project also targets the developers, they can use our application to

  1. add / remove activity
  2. modify activity, Activity modules would be independent of architecture and easily modifiable to suit current needs.
  3. sugar bot support for unit-testing
  4. debugger integration with gui to facilitate debugging the activity.

We can associate various group activities among students to encourage them in developing environment. Technologies I will be using are pygtk, XML parsers ( if sharing of information is required ) . Pygtk, gives a gtk libraries support which we can code them to interact with the enviornment and develop UI applications. XML communication would be required if there is need to transfer the information from one end to another. Some of key points would be :

  1. Primary aim would be to provide basic learning experience in UI application with minimal programming efforts.
  2. Secondary aim would be to increase Scope for development for future developers.
  3. Application would be built as simple as possible with highlighting and attractive features.
  4. Sharing of code over network, integrating of code in program directly.
  5. Exception handlers, should be interactive for users and should take minor decisions automatically.



Technical Approach

Below is the rough draft, it talks about the implementation in abstract way just to share the idea of implementation.


        Marbles: Flow data diagram ( marbles.png )


Here visual UI representations gives an option to select widgets, authoring tool will assist the users to place the widgets on frame and also do some prechecks on UI widget compatibility.Program generator then generates the optimized code based on UI types, positions and associates event handlers to the widgets. Views should be handled independently and it includes final checks on widgets too. History generation is being done side by side to facilitate recoveries if error occurs and finally, output generation ( both UI and code output ) . Code output from the software will be stored in specific directories or in database.


Q10. What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; 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 (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.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.


Ans. In summer, I plan to follow the following schedule:

  1. Preparation phase( Time : April 25 - may25 )
    • gathering requirements of the project
    • getting involved with Mentor in verifying and validating the requirements.
    • Architectural design / Pseudo code.
 This phase, I would be communicating with people as much as possible, getting requirements and verifying with people or community. I would also go to the pre-releases of similar softwares to get prons and cons and trying to improve in our project development.I am sure to get community support on this very interesting project.


  1. Coding Phase ( Time: May 25- July1 { This phase would be subdivided to different phases } )
    • divisions for coding timeline
    • decide approach for programming
    • actual coding, testing accordingly
    • documenting code parallely
    • periodically sharing information with mentors and community members
 This phase will include actual coding. Since I already knew the related technologies and familiar to sugar development process. I can devote more time to coding and thus improving the project at each phases. I will share doubts with community if occurs.


  1. Testing Phase ( Time: July7- July 25 )
    • full testing of system with different phases
    • use coverage analysis to know the redundance code and improving it further
    • fixing bugs if any
    • Last minute changes before final submission
    • finish any documentation steps if left.
 After coding, this is the most interesting part for me. Past I have also worked on code coverage tools for python and really love to analyze the efficency of program. I will go for different testing tools on program, Some tools I would like to go with
  • coverage
  • I will use boost algorithms to improve run-time if it comes under requirement. I have been using CPYTHON for coding competitions and familiar with different tweaks to modify run time such as psycho module. This will help in increasing the robustness and stability of program.
  1. Finalizing phase / Revision ( Time: from August 1 to END. )
    • review of code/ algorithm
    • production of coverage reports, analysis, performance etc.
    • discussions on limitations of software and beneficials.
    • preparing final deployments for various systems.
Documentation stuffs would go in this phase

Time line: Seems very little time to do so many things, but I will try to give the best from my side.

I have worked on variety of projects ranging from web application, mobile j2me midlets, Web server management( python project ) and desktop application. One of the interesting projects I worked on is "cross platform windows explorer" which I built in python using wxwidget. I have been working as an intern in california based company and worked on various technical areas like Web services, remote health care using mobile and also closely working with project manager in designing complex medicare systems.

Believe me, I have that talent needed to build or design a complex system for customers. Below are some of my projects I worked on

  • Shallow file browser: cross platform browser
  • Multithreaded multi media-server : A multithreaded cross platform media-server for streaming podcast or mulitimedia contents to mediadevices.
    It is currently being used by medicare services to stream health podcasts to the users.
  • Mobile Softwares: I had done some freelance work in mobile computation last semester. Major projects, I was associated with are Mobile
    Shopping SRV navigation tool for medicare services .
  • Web Services: I have been actively involved in web-development from past 1 year and used Ruby on rails and Django for development. Django, by
    far, was among my best tool for Web-UI applications.
  • Minor projects on kernel implementation ( as a part of OS course ), Database managment projects and others.