Changes

1,719 bytes added ,  07:23, 16 April 2009
Line 1: Line 1:  +
[[Category:2009_GSoC_applications]]
 
=== About Me ===
 
=== About Me ===
   Line 19: Line 20:  
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.)'''
 
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
+
Ans. hindi. good at english though.
    
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.)'''
 
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.)'''
Line 46: Line 47:  
# they would be able to resize the widget, reorder them and associate some event handlers to the widgets.
 
# they would be able to resize the widget, reorder them and associate some event handlers to the widgets.
 
# 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.
 
# 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.
# We can go for sound support with pygame library, where we can interact the program with simple sounds, since children get attracted to sound <br> more easily than text
+
# We can go for sound support with gstreamer library, where we can interact the program with simple sounds, since children get attracted to sound <br>more easily than text
 
# Help Manual to get started for students. Special care will be taken for information supplied, they would be concise and expressive.
 
# Help Manual to get started for students. Special care will be taken for information supplied, they would be concise and expressive.
   Line 64: Line 65:  
# Exception handlers, should be interactive for users and should take minor decisions automatically.
 
# Exception handlers, should be interactive for users and should take minor decisions automatically.
    +
==== Basic Design Principles ====
 +
 +
Marbles is the GUI builder tool for pygtk almost like glade, but would be optimized for sugar environment.Basic components include:
 +
 +
#'''Python'''<br> Python is powerful,easy and fun. It is an excellent choice both for development and usages for children,students as well for professionals for even<br>writing complex applications.if GUI builder is to be compared with RAD, I would say R(Rapid) in RAD stands for python.
 +
#'''GTK+'''<br>A face for GNOME, Sugar and other desktop managers.
 +
#*The python bindings (PyGTK) of this toolkit are elegant and both GTK+ and PYGTK have excellent documentation.
      −
       
   
==== Technical Approach ====  
 
==== Technical Approach ====  
Below is the rough draft, it talks about the implementation in abstract way just to share the idea of implementation.
+
 
 +
Below is the technical abstract for Marbles:
 +
 
 
:[[Image:marbles-flowchart.png|left| Marlbes-development environment.]]
 
:[[Image:marbles-flowchart.png|left| Marlbes-development environment.]]
 +
 +
Thanks to '''James Henstridge''' and for his wonderful work on libglade which makes it easier to store the UI widget information and it's actions in xml file called GLADE. Using libglade will not only save the time of development but also makes the Marbles-output as platform independent. We can share the glade file for UI over network and recreate or edit the current glade file to make it more complex. It gives an option for children to play with it.
 +
 +
I have also made a design without libglade library using database storage but after getting suggestions from sugar members, I removed that in my technical approach. Whole design is thus made very simple. Mentors can read that approach in my original GSOC proposal submitted to google.
 +
 +
 +
===== With LibGlade library =====
 +
 +
Libglade is a library designed to dynamically load a user interface from an XML file on disk. These UI description files can be created using the Glade UI builder. It provides several options for connecting callbacks up to the interface including an `autoconnect' option that scans the program's symbol table for callback functions.
 +
      −
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
+
#Choosing UI widgets and dropping on canvas ( view )            |
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.
+
#Showing the current output on canvas ( Temp glade file )        | - UI builder tool
 +
#Getting the output in Python code                           |
 +
#Option for Activity creation, Exporting to xo bundle, Debugging tool for Developers, sharing of code etc. | - Post building activities
   −
Database comes into picture while history creation with simple as undo/redo or more complex project development stages. Typically database would store the fields like
+
Creating GTK UI that can show various widgets icons and gives an option to select with the mouse, dragging and then dropping on canvas. It will be saved in glade-format file. this temporary glade file will then be read using libglade library in python and output can be shown on canvas.  
   −
#Table: Widget
+
After completion of dragging and dropping, User can build the application using build activity in Marbles which takes input a glade file and outputs a python source code ( PyGTK framework ) capable of producing same output as glade does.  
#*Fields: Widget id,name,label,icon, height, width, position,parent_container id ,visible,focus-type, param1,param2
  −
#*Widget table will contain widget id , it's name,label,positional parameters, id to its paraent container, and other parameters specific<br>to widget functionality like for checkbox we could have parameters like "default check". This table includes all type of widgets i.e.<br>containers, menu, buttons, checkbox etc
  −
#Events
  −
#*Fields: Eventid, type,signalid, signal-handler,object,widget-id(foreign key),params
  −
#*Events table will register the events associated with the widgets. Note that signal handler would be called as object.signal-handler() with<br> parameters if necessary. 
  −
#Navigation-Views
  −
#*Fields: Widget-id,pos-x,pos-y,col-span,row-span,padding,Expanding(boolean), shrink(boolean), colorfill(boolean), params
  −
#*This gives option to handle view effectively. Options are id, postions, span space, padding space, expanding ( yes/ no ), shrinking<br>(yes/no), color fill and other parameters. This table would be mainly responsible for generating views in desktop UI.
  −
#Navigation-main
  −
#*Fields: Widgetid,name,description,activate(boolean),children-id(foreign key),delete(boolean),params
  −
#*This table would be overwritten with widgetids everytime, when an object is added to on VISUAL UI. this contains field like widget id,<br>name desc, chidren-id ( widget that comes under it ) and other functional or positional parameters. delete column will help in faking delete<br>option( more on this later )
     −
'''Description'''
+
Post-building activities like activity creation from python source code, sharing source code using xo bundle can be done later.
Initially, navigation-main row would be initiated with widget-id say 0 and delete to be false
  −
When user drags an widget on canvas, new widget would be created and a new entry comes in navigation-main table. Similarly children-widgets are created and subsequent entries will be given in specific tables. For undo operation, navigation-row entry for "delete" can be set to false, similarly for redo operation, entry would be false again.
      +
==== Design Goals ====
   −
'''How output is generated'''
+
:'''Design Goals'''
program generator will read navigation-main and widgets specified by user will be initiated with given options. Navigation-view will then be fetched and widgets will then be arranged according to view-instructions.
  −
Code generated will be temporarily stored in files ( say /tmp) , can be permanent stored if user wants to save the UI-application.
     −
'''Note'''
+
#'''Good design'''<br> I am greatly impressed by Turtle activity of sugar, and would like to achieve if not same, then try to reach the UI clearity<br>as much as possible. Usability would be primary aim for design.
Special care will be given on debugging facility. since pygtk is used in UI application, sugar-bot integration would not be difficult to achieve. I will also try to include modules for sugar-bot debugging facility to facilitated direct unit-testing.
+
#'''Good help system'''<br>Since it involves various new widgets which children might not know .It better to have help-activity along with GUI<br>builder to offer help to users for building the UI.
 +
#'''Automatic Decision System'''<br>Minor decisions for widget placements, size ratio with desktop resolution and other script associations should be done automatically.
 +
#'''User Input'''<br>Mouse input is more preferrable than Keyboard input.
 +
#'''Final Considerations'''<br> Below are the final considerations for Marbles (Future goals as well)
 +
#*'''Quality'''<br>prefers quality of features over quantity.
 +
#*'''Promote Collaboration'''<br>Promote collaboration through good documentation, careful modular design and quality code.
 +
#*'''Modularity'''<br>Design will allow extending to other target languages and other GUI toolkits.
      Line 110: Line 123:  
In summer, I plan to follow the following schedule:
 
In summer, I plan to follow the following schedule:
   −
#Preparation phase( Time : April 25 - may25 )
+
#'''Preparation phase'''( Time : April 20 - may15 )
 
#*gathering requirements of the project
 
#*gathering requirements of the project
 
#*getting involved with Mentor in verifying and validating the requirements.
 
#*getting involved with Mentor in verifying and validating the requirements.
#*Architectural design / Pseudo code.
+
#* Writing abstract classes for all widgets and specifications
#*This phase, I would be communicating with people as much as possible, getting requirements and verifying <br> 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 <br> development.I am sure to get community support on this very interesting project.
+
#* Creating of canvas to support widget dragging and dropping.
#Coding Phase ( Time: May 25- July1 { This phase would be subdivided to different phases } )
+
#*This phase, I would be communicating with people as much as possible, getting requirements and verifying <br> 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 my project <br> development.I am sure to get community support on this very interesting project.
#*divisions for coding timeline
+
#*'''Delieverables''' Final design and technical approach to mentors and getting reviewed by them.
#* decide approach for programming
+
#'''Coding Phase''' ( Time: May 15- July1 { This phase would be subdivided to different phases } )
#* actual coding, testing accordingly
+
#* Implementation of program generator to generate the required code.   
#* documenting code parallely   
+
#* Creation of programming libraries such as History generation, View modifier, function associations for code generation.
#* periodically sharing information with mentors and community members
+
#* Work on intelligent sizers HBOX or VBOX to minimize the use of old technique sizers in UI creation.
#* This phase will include actual coding. Since I already knew the related technologies and familiar to sugar development process. I can devote<br> more time to coding and thus improving the project at each phases. I will share doubts with community if occurs.
+
#* '''Delieverables''' Basic UI design with dragging and dropping facility for widgets and UI application output as a python code.
#Testing Phase ( Time: July7- July 25 )
+
# '''Coding & Internal Testing Phase''' ( Time: July7- July 25 )
#* full testing of system with different phases
+
#* Creation of final UI output for UI builder.
 +
#* Creation of help activity for helping students in UI building.
 +
#* Full testing of system with different widgets.
 
#* use coverage analysis to know the redundance code and improving it further
 
#* use coverage analysis to know the redundance code and improving it further
#* fixing bugs if any
+
#* Documentation support for widgets and UI creation.
#* Last minute changes before final submission
+
#* '''Delieverables''' Release of Marbles-Alpha version for external testing.
#* finish any documentation steps if left.
+
#''' Final Evaluation''' ( July 26 - END )
#* After coding, this is the most interesting part for me. Past I have also worked on code coverage tools for python and I really like this <br> efficency measurement whicha also helps a lot in improving run-time. I will go for different testing tools on program, Some tools I would like<br> to go with
+
#* This phase is basically for porting the UI builder solution to sugar's upstream development and checking for bugs in different environment.  
#*coverage or flegleaf tools for anlaysis.<br>
+
#* '''Delieverables''' full said project to sugar community.
#*I will use boost algorithms to improve run-time if it comes under requirement.
  −
#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.<br>
  −
#* 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.
 
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, in which we handled the issues like portability, searching and UI designs. If I am not exagerating, that would not be wrong to say that I am a fast learner.
+
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, in which we (team work) handled the issues like portability, searching and UI designs. If I am not exagerating, that would not be wrong to say that I am a fast learner.
    
Believe me, I have that talent needed to build and design a complex system for customers. Below are some of the projects I worked on
 
Believe me, I have that talent needed to build and design a complex system for customers. Below are some of the projects I worked on
Line 146: Line 154:  
* '''Shallow file browser''': cross platform browser
 
* '''Shallow file browser''': cross platform browser
 
* '''Multithreaded multi media-server''' : A multithreaded cross platform media-server for streaming podcast or mulitimedia contents to mediadevices.<br> It is currently being used by medicare services to stream health podcasts to the users.
 
* '''Multithreaded multi media-server''' : A multithreaded cross platform media-server for streaming podcast or mulitimedia contents to mediadevices.<br> 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 <br> Shopping SRV navigation tool for medicare services .
+
* '''Mobile Softwares''': I had done some freelance work in mobile computation last semester. Major projects, I was associated with are Mobile <br> Shopping, SRV navigation tool for medicare services (SRV is an open source hardware(robot) for education purposes).
 
* '''Web Development & Services''': I have been actively involved in web-development from past 1 year and used Ruby on rails and Django for development. Django, by<br> far, was among my best tool for Web-UI applications.
 
* '''Web Development & Services''': I have been actively involved in web-development from past 1 year and used Ruby on rails and Django for development. Django, by<br> 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.
 
* Minor projects on kernel implementation ( as a part of OS course ), Database managment projects and others.
    +
''' My "Open Source" activites '''
 +
 +
* Check out the source code of shallow file browser at http://code.google.com/p/shallow-file-browser. Do check the snapshot of browser in action.
 +
* Minute-Shell: Well, it's a part of my course project. I created a small program to emulate linux shell. This code is hosted at http://code.google.com/p/minute-shell/ .
    
=== Me and the community ===
 
=== Me and the community ===
Line 158: Line 170:  
Ans. This project support children creativity and imagination. These small games, development activity will surely help them to become problem solvers, innovators, and creative thinkers. These activities will also help the children to develop many important skills that boost a child's learning and success.
 
Ans. This project support children creativity and imagination. These small games, development activity will surely help them to become problem solvers, innovators, and creative thinkers. These activities will also help the children to develop many important skills that boost a child's learning and success.
   −
[ TODO ]
      
Q12. ''' Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. 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?'''
 
Q12. ''' Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. 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?'''
Line 193: Line 204:  
[[Image:puneetgirdhar.png|thumb|right| Here is my Development environment.]]
 
[[Image:puneetgirdhar.png|thumb|right| Here is my Development environment.]]
   −
Q15. ''' We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please 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 "Restart." See the image on the right for an example. It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.'''
+
Q15. ''' We want to make sure that you can set up a [[Development Team#Development_systems|development environment]] before the summer starts. Please 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 "Restart." See the image on the right for an example. It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.'''
    
Ans.  I am a fedora loving guy and installed sugar system on my fedora. I googled for the installation and successfully completed the following tasks
 
Ans.  I am a fedora loving guy and installed sugar system on my fedora. I googled for the installation and successfully completed the following tasks
Line 202: Line 213:  
I used jhbuild to install and update the source code needed for the sugar development. I tested it by creating some activities given on wiki<br> page of sugar lab and it was working fine.<br>
 
I used jhbuild to install and update the source code needed for the sugar development. I tested it by creating some activities given on wiki<br> page of sugar lab and it was working fine.<br>
 
I've started exploring things and really looking forward for a good open source development.<br>
 
I've started exploring things and really looking forward for a good open source development.<br>
[Todo: paste the image]
        −
Q16. ''' What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)'''
+
Q16. ''' Describe a great learning experience you had as a child.'''
 +
 
 +
Ans. As a child, I had a great interest in science and was more curious to know everything. One thing I would like to share is, When I was in 8th standard, I was more impressed by Einsten-theory "One theory for every theories" and still I am. I remember discussing my new science theories on unification of world and discoveries with my science teacher and which ofcourse he won't like and always got irritated, but what he always suggested me, is to read & analyze before coming to conclusions. This habit of me is still continuing. Now the views have changed, questions are different but thirst for knowing things is still the same. My teacher not only answers my query but it gives me a life time dose to approach for my problems.
 +
 
 +
 
 +
Q17. ''' What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)'''
    
Ans. medium
 
Ans. medium
      −
Q17.''' 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?'''
+
Q18.''' 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?'''
 
    
 
    
 
Ans. Just for introduction, I am pursuing my BTECH degree from IIIT Hyderabad. I had started using linux from past 2 years and since then I love every bit of it. I also have research interest and working on my research paper on "simulation of rigid blocks during earthquake". I am an  
 
Ans. Just for introduction, I am pursuing my BTECH degree from IIIT Hyderabad. I had started using linux from past 2 years and since then I love every bit of it. I also have research interest and working on my research paper on "simulation of rigid blocks during earthquake". I am an  
Line 221: Line 236:  
Thank You & Regards,<br>
 
Thank You & Regards,<br>
 
Puneet.
 
Puneet.
 +
 +
=== Recent Editing ===
 +
 +
* Basic Design principles for marbles are explained in GSOC document http://socghop.appspot.com/document/show/user/chasedspeed/design.
 +
 +
* Reponse for http://wiki.sugarlabs.org/go/Summer_of_Code/Application_review_notes#Don.27t_reinvent_the_wheel can be found at http://socghop.appspot.com/document/show/user/chasedspeed/marbles.
 +
 +
''' Comments / Suggestions on Marbles are always welcome. '''
122

edits