Changes

Jump to navigation Jump to search
no edit summary
Line 28: Line 28:  
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.
 
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.
+
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. Fixing a python 3 specific bug with this kind of a setup would be really complicated.  
    
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 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.  
 +
 +
I grepped for imports on both sugar and sugar-toolkit-gtk3. A few of the modules have been renamed/relocated in python 3, but all of them are available, except for telepathy-python which as I have already said, I will be porting in the coming week. 
    
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.
 
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.
Line 47: Line 49:     
'''May 19 - June 23 (First half of the official coding period)'''
 
'''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.
+
* Week 1: 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.
+
* Week 2: Incrementally patch code on sugar toolkit 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.
+
* Week 3: Do the same on sugar core
 +
* Week 4 and 5: Look for and Iron out bugs and patch the bugs with unit tests so they don't pop up again.
 +
 
      Line 56: Line 60:     
'''June 23 - August 11(Second half of the official coding period)'''
 
'''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.
+
* Week 1: Add python 3.x specific dependencies into the list of things to be fetched and installed by the build scripts.
* Add python 3.x specific dependencies into the list of things to be fetched and installed by the build scripts.
+
* Week 2: Write documentation on maintaining sugar core and sugar toolkit under the new setup to ease future development.
* 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).
+
* Week 3: If 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.
      Line 65: Line 69:  
'''Deliverables at the end of GSoC'''
 
'''Deliverables at the end of GSoC'''
 
* Automated tests across python versions for sugar and sugar-toolkit-gtk3
 
* Automated tests across python versions for sugar and sugar-toolkit-gtk3
* Fully python 3 compatible polyglot codebases of sugar and sugar-toolkit-gtk3
+
* Fully python 3 compatible polyglot codebases of sugar and sugar-toolkit-gtk3  
* python 3 compatible sugar-build (optionally)  
+
* Python 3 compatible sugar-build (optionally)  
         −
Post GSoC, I would be available to help port activities to python 3.x
+
Post GSoC, I would be available to help port activities and sugar-buildbot to python 3.x and also write a porting guide for activities for developers.
    
* 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.
Line 77: Line 81:     
===Me 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.
+
'''Impact of the project'''
 +
At the end of my project, the testing on the sugar toolkit and the sugar core would have improved greatly and I strongly believe that a robust set of unit tests is a must for every project as it eases development. Python 3 has better unicode support and I think a lot of activities based around text would greatly benefit from porting to python 3.  
 +
 
 +
 
 +
 
 +
 
 
* 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.
 
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.
+
I plan to write a report every week on my [http://upman.github.io blog] and also discuss with people regularly  over the mailing list or the IRC channel.
       
===Miscellaneous===
 
===Miscellaneous===
* We want to make sure that you can set up a [http://developer.sugarlabs.org 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".
+
I've been able to setup the development environment and here's the screenshot of it with the suggested modification.
** Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.
+
[[File:Sugar_running_scrshot.png|600px]]
:: It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.
+
 
 
* Describe a great learning experience you had as a child.
 
* Describe a great learning experience you had as a child.
 +
 +
 
* 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?
 
* 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?
 +
I would like to write a little bit about why I want to contribute to sugar in particular. Education, I believe still hasn't been modernized, we aren't making use of all the technologies we have to make learning better and more effective. I also believe that education has to be free and accessible to everyone. I think Sugar does a great job towards this and I want to be a little part of this effort to modernize education.
       
<pre>[[Category:2014 GSoC applications]]</pre>
 
<pre>[[Category:2014 GSoC applications]]</pre>
26

edits

Navigation menu