Changes

Jump to navigation Jump to search
no edit summary
Line 1: Line 1:  
=Proposal to port the Sugar core to Python 3=
 
=Proposal to port the Sugar core to Python 3=
===About me===
+
==='''About me'''===
    
* '''Name''' : Ravi Kumar L
 
* '''Name''' : Ravi Kumar L
Line 6: Line 6:  
* '''Sugar Labs wiki username''' : Ravi Kumar  
 
* '''Sugar Labs wiki username''' : Ravi Kumar  
 
* '''IRC nickname on freenode''' : upman
 
* '''IRC nickname on freenode''' : upman
 +
 +
* '''Education'''
 +
:I'm doing my second year of an under-graduate course in Computer Science and Engineering at [http://www.revainstitution.org/RITM.html Reva Institute of Technology and management]
 
* '''First Language'''  
 
* '''First Language'''  
 
:I speak Tamil primarily, But I'm perfectly comfortable with English.
 
:I speak Tamil primarily, But I'm perfectly comfortable with English.
Line 13: Line 16:     
* '''Skills and Experience with Open-source'''<br>
 
* '''Skills and Experience with Open-source'''<br>
:I'm comfortable with SCM using git and proficient with Python, Ruby and C. But to be honest, I have been mostly learning and fiddling around with things up until now and never really done any proper projects or made any contributions to open-source projects. You can check out bits of my experimental code on [http://github.com/upman github.] But I plan on porting a dependency, telepathy-python to demonstrate that I'm capable of handling the project.
+
:I'm comfortable with SCM using git and proficient with Python, Ruby and C. But to be honest, I have been mostly learning and fiddling around with things up until now and never really done any proper projects or made any contributions to open-source projects. You can check out bits of my experimental code on [http://github.com/upman github.] But I plan on porting a dependency, telepathy-python to demonstrate that I'm capable of handling the project. I see GSoC as a wonderful opportunity to become part of a community, contribute and also learn something valuable.
 +
 
 +
==='''About my project'''===
 +
 
 +
'''Name'''
   −
===About your project===
+
Polyglot port of Sugar core
 +
 
 +
'''Description'''
 +
 
 +
For sugar to be future ready, it's core has to be compatible with python 3.x . Python 2.7+ would also need to be supported for existing activities to run without a hitch. This would represent developers who prefer python 3 as well as those who prefer python 2.7+ to be able to contribute to sugar.
 +
 
 +
One approach would be to sort out python 3 support for all the dependencies, and then run 2to3 on the core code and provide a wrap around script that would handle both python 2.7+ and 3 activities. But maintaining the code could turn messy real quick.
 +
 
 +
My plan of action is to have a single easy to maintain codebase that can run on python versions 2.7 through to 3.3. Towards this end, I would automate tests to run across python2.7 - 3.3 with [https://pypi.python.org/pypi/tox tox] or a similar tool first, and then write polyglot code with [https://pypi.python.org/pypi/six six] incrementally.
 +
 
 +
My project would introduce no new features at all, but it would make sugar future ready and also backwards compatible. It might make development/maintenance harder on the core libraries in the short term, because the developers would need to understand the polyglot written using six. But it would provide long-term benefits and a wider potential future developer reach.
 +
 
 +
 
 +
===Schedule===
 +
'''April 21 - May 19 (Community Bonding Period)'''
 +
* Research into and learn more about gtk and dbus.
 +
* Get familiar with the codebases of sugar and sugar-toolkit-gtk3
 +
* Look into the unit tests and determine if test cases are robust enough to support a porting effort. If required, write test cases with the help of the community and also encourage fellow GSoC-ers and developers to practice TDD.
 +
* Discuss with the core developers and mentor(s) my initial approach I have detailed above and iron out the rough edges or discuss and decide on an alternative approach if need be.
 +
* Research other python projects that were ported with the same approach. Contact the developers and learn about the issues they faced and I'm likely to face while porting.
 +
* Get familiar with Tox or discuss with mentor(s) and choose a different testing framework to automate testing across python versions and get familiar with the same.
 +
* Get to know the mechanisms of the build scripts.
 +
* Bond with the Community. Get to know the developers responsible for writing/maintaining the sugar core, so I know whom to ask for help if I run into trouble.
 +
 
 +
'''May 19 - June 23 (First half of the official coding period)'''
 +
* Automate testing across python versions using the decided on approach, make all the tests pass on python 2.7.
 +
* Incrementally patch code with six to run on python 3.x and pass unit tests.
 +
* This seems like just a repetitive task, but the codebases seem a little fragile to me as of and I might run into a few issues and these would need some fixing from time to time.
 +
 
 +
 
 +
'''Mid-term Evaluation'''
 +
:By this time, I plan to have finished writing polyglot for sugar and sugar-toolkit-gtk3
 +
 
 +
'''June 23 - August 11(Second half of the official coding period)'''
 +
* Look for and Iron out bugs and patch the bugs with unit tests so they don't pop up again.
 +
* Add python 3.x specific dependencies into the list of things to be fetched and installed by the build scripts.
 +
* When the mentor(s) and the core developers are satisfied with the code and think that the codebase is solid, try and port sugar-build in the same way(if time permits).
 +
 
 +
 
 +
 
 +
 
 +
'''Deliverables at the end of GSoC'''
 +
* Automated tests across python versions for sugar and sugar-toolkit-gtk3
 +
* Fully python 3 compatible polyglot codebases of sugar and sugar-toolkit-gtk3
 +
* python 3 compatible sugar-build (optionally)
 +
 
 +
 
 +
 
 +
Post GSoC, I would be available to help port activities to python 3.x
   −
* What is the name of your project?
  −
* 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?
  −
* 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.
   
* 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.
 
* 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.
   −
===You and the community===
+
 
 +
 
 +
===Me 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.
 
* 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.
 
* What will you do if you get stuck on your project and your mentor isn't around?
 
* What will you do if you get stuck on your project and your mentor isn't around?
 +
Find help on the mailing list or the IRC, or if that doesn't work out, work on a different part of the project until  my mentor is available.
 +
 
* 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?
 
* 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?
 +
I plan to write a report every week on my [http://upman.github.io blog](which has gone cold after a couple of posts) and also discuss with people periodically over the mailing list or the IRC channel.
 +
    
===Miscellaneous===
 
===Miscellaneous===
26

edits

Navigation menu