Line 53: |
Line 53: |
| '''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?'''<br /> | | '''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?'''<br /> |
| | | |
− | My project aims at porting sugar-shell and sugar-toolkit to Python3 . It will also include writing a robust test suite to check for Python 2/3 compatibility and a python3 porting guide for sugar activities. | + | My project aims at porting sugar to Python3 . It will also include writing a robust test suite for sugar and a Python3 porting guide for sugar activities. |
− | Python3 is the future of python and every software will eventually be ported to python3. The main difference that makes Python3 better than Python2.x is that the support for unicode is greatly improved in Python3 . This will also be useful for sugar as sugar has users in more than 100 languages and it's easy to translate strings from unicode to other languages. Also, gtk3+ , on which sugar is built has a better unicode support too, so along with gtk3+ and Python3 , sugar will get more efficient and developer friendly. | + | Python3 is the future of python and every software will eventually be ported to Python3. The main difference that makes Python3 better than Python2.x is that the support for unicode is greatly improved in Python3 . This will also be useful for sugar as sugar has users in more than 100 languages and it's easy to translate strings from unicode to other languages. Also, gtk3+ , on which sugar is built has a better unicode support too, so along with gtk3+ and Python3 , sugar will get more efficient and developer friendly. |
| More differences between Python2 and 3 can be found here: http://docs.python.org/3/whatsnew/3.0.html | | More differences between Python2 and 3 can be found here: http://docs.python.org/3/whatsnew/3.0.html |
− | In this project, I would first start by porting sugar-shell to Python 2/3 compatible code. It will still have to be backward compatible because some of the activities written in python2 will have to be supported for quite some time. After that, I will port the gtk3+ sugar-toolkit to Python 2/3 compatible code. Some tools that can be used to port are modernize( https://github.com/mitsuhiko/python-modernize) and autopep8 (https://pypi.python.org/pypi/autopep8/) | + | In this project, I would first start by porting sugar-toolkit-gtk3 to Python 3 compatible code. It won't have to be backwards compatible because the activities are run using dbus , so the activiteis written in Python2 will still work. After that, I will port the sugar-shell to Python 3 compatible code. Some tools that can be used to port are 2to3 and autopep8 (https://pypi.python.org/pypi/autopep8/) |
| The process that i will follow will be: | | The process that i will follow will be: |
| # Check if all the dependencies are compatible with Python3, if not first port them to Python3. | | # Check if all the dependencies are compatible with Python3, if not first port them to Python3. |
− | # Use AutoPEP8 to make the code comply with PEP8 dtyle guide which will also help with the porting. | + | # Use AutoPEP8 to make the code comply with PEP8 style guide which will also help with the porting. |
− | # Use modernize (which is a thin wrapper over 2to3) to make the code Python2 and 3 compatible. | + | # Use 2to3 to make the code Python 3 compatible. |
| # Go through the remaining code manually and sort out any errors or discrepancies. | | # Go through the remaining code manually and sort out any errors or discrepancies. |
| A more thorough porting guide for sugar activities will be written. | | A more thorough porting guide for sugar activities will be written. |
| + | Further changes in porting strategy, if any , will be discussed during the community bonding period. |
| <br /> | | <br /> |
| | | |
Line 70: |
Line 71: |
| ! Week/Days !! Work to be done | | ! Week/Days !! Work to be done |
| |- | | |- |
− | | 21 April-19 May (Community Bonding Period) || Understand the existing sugar and sugar-toolkit code and discuss the porting options with sugar community. | + | | 21 April-19 May (Community Bonding Period) || Understand the existing sugar and sugar-toolkit code and discuss the porting options with sugar community.Also resolve any dependency issues. |
| |- | | |- |
− | | 19 May-26 May (Week 1)|| Start porting sugar-toolkit to Python 2/3 compatible code. | + | | 19 May-26 May (Week 1)|| Start porting sugar-toolkit to Python 3 compatible code. |
| |- | | |- |
| | 26 May-2 June (Week 2) || Continue with porting sugar-toolkit | | | 26 May-2 June (Week 2) || Continue with porting sugar-toolkit |
| |- | | |- |
− | | 2 June-9 June (Week 3)|| Port existing sugar-toolkit tests into Python 2/3 | + | | 2 June-9 June (Week 3)|| Port existing sugar-toolkit tests into Python 3.Write new tests to check Python 3 compatibility, test sugar-shell and remove bugs. |
| |- | | |- |
− | | 9 June- 16 June (Week 4)|| Write new tests to check Python 3 compatibility, test sugar-shell. | + | | 9 June- 16 June (Week 4)|| Start porting sugar into Python 3 compatible code. |
| |- | | |- |
− | | 16 June-23 June (Week 5)|| Start porting sugar-shell into Python 2/3 compatible code. | + | | 16 June-23 June (Week 5)|| Continue with porting sugar |
| |- | | |- |
− | | 23 June-30 June (Week 6)|| '''Mid-term Evaluation Week''' (Buffer week, complete remaining work) | + | | 23 June-30 June (Week 6)|| '''Mid-term Evaluation Week''' (Port existing tests and write new tests.) |
| |- | | |- |
− | | 30 June-7 July (Week 7)|| Continue with porting sugar-shell. | + | | 30 June-7 July (Week 7)|| Port sugar-build to Python3 |
| |- | | |- |
− | | 7 July-14 July (Week 8)|| Port existing sugar-shell tests into Python 2/3 | + | | 7 July-14 July (Week 8)|| Buffer Week. |
| |- | | |- |
− | | 14 July-21 July (Week 9)|| Write new tests to check Python 3 compatibility, test sugar-toolkit. | + | | 14 July-21 July (Week 9)|| Write new tests to check Python 3 compatibility, test sugar-toolkit and remove bugs. |
| |- | | |- |
| | 21 July-28 July (Week 10)|| Port an existing sugar activity and document the process.(Porting Guide) | | | 21 July-28 July (Week 10)|| Port an existing sugar activity and document the process.(Porting Guide) |
Line 98: |
Line 99: |
| | 11 August-18 August (Week 13)|| '''Evaluation Week''' | | | 11 August-18 August (Week 13)|| '''Evaluation Week''' |
| |} | | |} |
| + | |
| + | If time permits , I will try to port all the fructose activities to Python3 during the GSoC. If not, I will pert the fructose activities to Python3 post-GSoC.<br /> |
| + | |
| '''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.'''<br /> | | '''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.'''<br /> |
| | | |
Line 166: |
Line 170: |
| | | |
| '''Any other engagements this summer that may collide with GSoC period?'''<br /> | | '''Any other engagements this summer that may collide with GSoC period?'''<br /> |
− | I have my College End-Semester Exams from 12th May , 2014 to 24th May,2014, so I will be busy during that period but I will cover for that lost time by working in the community bonding period and working harder after my exams are over. | + | I have my College End-Semester Exams from 12th May ,2014 to 24th May,2014, so I will be busy during that period but I will cover for that lost time by working in the community bonding period and working harder after my exams are over. |
| | | |
| [[Category:2014 GSoC applications]] | | [[Category:2014 GSoC applications]] |