Summer of Code/2014/Port to Python3

Name:
Kamaljeet Kaur

Email address:
kamal.kaur188@gmail.com

Sugar Labs wiki username:
KamalKaur

IRC nickname on irc.freenode.net:
Kamal___, Kamaljeet_ (Includes kamal somehow)

First language:
English

Location and UTC working hours:
My location is UTC + 5:30 i.e. Indian Time zone and I usually tend to work in the afternoon (2PM-6PM) and at night (9PM-2AM) as per IST, it can be easily altered or extended to meet the desired goals.

Previous experience in open-source:
I'm working for open source community from about a year and have various past experiences in Python, Django, C++, HTML, CSS, JS, Open Street Maps and blogging. Some of them are listed below:

Phonetic Search in Python:
Testing and Consultancy Cell is government affiliated testing firm where testing of water, cement, land surveys etc. are carried out. Everyday a number of clients are attended using Office Automation Software. And there was a problem to search the clients from a big list when someone misspelt the name like "Kamaljit" instead of "Kamaljeet" because the user can enter any spellings for similar pronunciations. I was a privileged member of the team which implemented phonetic search in the automation software using Python and Django. The biggest problem that I faced was to implement it for a name having whitespace in it. Here is the testing link.

Blogging application:
Blogging is quite a trend from a few years ago. There are many sites that provide facility to create our own blogs and easily customize them. Similar is the application I started for learning sake, which is currently a basic application in which one can publish posts and see the content at one page with post titles. I made it just for my own experience and familiarity with the technologies. Perhaps that time I didn't use git properly because of being new to it. You can check it here.

Teacher Feedback System:
As the name suggest, aim of this software is to provide a functionality so that students can provide feedback to their teachers. This software is not only limited to this feature, but it has further three different modules. These are:


 * Student: Students can give feedback, comments and see comments of other students and rate those comments.
 * Teacher: Teachers can see feedback given by student, most rated comment will be visible on homepage and a performance graph will be generated.
 * Department Heads: They can see performance graph of various teachers.

Besides these functionalities, a “teacher of the month” will also be selected and that name will be displayed on homepage of each student, teacher and head. We are team of four working on this software. Technologies we are using include Django 1.5, HTML, CSS, LESS, JavaScript.

Project name:
Port to Python 3

Brief Summary:
Porting to Python 3, as is clear from the name, Sugar is currently using Python version 2.7 The process will start from basic part. I'll port all the dependencies of sugar core to Python 3 including toolkit and telepathy as Sugar and the activities are using them. After this, I'll work with core developer team to decide the strategy: writing Python 2/3 compatible source or a pure port. The remainder of the work will be to do the port of sugar core itself. Then I'll develop a robust test suite for all new code. The last steps will be to Port an activity to Python 3 and beautifully document the whole process. A plan for how to support Sugar as Python 3 and old sugar activities as Python 2 will be the biggest challenge.

Need and technologies to be used:
I'm doing it for Sugar-build project There are many reasons to port Sugar to Python 3, not the least being its support for internationalization (unicode) is greatly improved over Python 2 (Very important as there are users in >100 languages). As Sugar is being used by a number of students, teachers and developers it is always advised to provide them with the latest features and don't stop the developers to use latest versions. Although it has been officially declared that Python 2.7 will be the last version of Python 2 and will receive bug-fixes for many years to come. But as the project is not in any panic, it's the right time to port. I'll be using Python, GTK3, github, unittest library etc.

My Timeline:
Pre - 5th May:

Explore about dependencies of Sugar core, get into sugar code and talk to the mentors about whole structure to be followed, get more familiar with the project.

6th May - 20th May:

Plan the strategies clearing the outlines and get initial testing done on examples.

Week 1: 20th May - 27th May

Start porting dependencies.

Week 2: 28th May - 3rd June

Continue the work.

Week 3: 3rd June - 10th June

Show a demonstration.

Week 4: 10th June - 17th June

Test and make sure things are stable.

Week 5: 17th June - 24th June

Work with sugar core according to the plans made.

Week 6: 24th June - 1st July

Prepare for Mid Term evaluation.

Week 7: 1st July - 8th July

Testing the ported sugar core.

Week 8: 8th July - 15th July

Make robust test suites.

Week 9: 15th July - 22nd July

Refining and execution of tests.

Week 10: 22nd July - 29th July

Port an activity to Python 3.

Week 11: 29th July - 5th August

Document the process of porting activities for developers.

Week 12: 5th August - 12th August

Check the accuracy and remove bugs.

Week 13: 12th August - 19th August

Clean the code and continue improving.

Week 14: 19th August - 26th August

Prepare and submit code to google.

Why I can complete within timeline:
As I have understood the work flow of project, I know what steps to follow and where to reach. Although I am coming here for the first time but I know about summer internships and being a student, I can handle to manage my deadlines. I have a good experience of working in a team. Moreover I am self motivated, very determined to use the best of my ability and to learn more. Regarding skills set mentioned there, I think I have a fair amount of Python knowledge to take this project forward. I have introduced myself to GTK3 which is a must too. Well, I personally feel that I can do it.

I and the community:
Impact of completion of project on the Sugar Labs community: First answer is mine, second is from the mentor and third is from a community member.



Kamaljeet Kaur:
It's going to be an important project. Porting to a newer version is beneficial in long-term as the whole working will be enhanced with new features. It's the right time to make the required changes and because there are many developers who are contributing, sugar will not restrict them to use only previous versions of technologies.



Walter Bender:

 * There are several reasons why this project is important to Sugar Labs: (1) we need to keep pace with the projects we depend upon upstream -- Python 3 is being to become de rigour -- and (2) Python 3 has much better support for i18n and unicode -- critical to the global nature of our project. --Walter (talk) 13:38, 20 March 2014 (EDT)

Gabriel Perez:
I think the project is important and beneficial for the community because porting to Python 3 means getting more support from the Python community. It's important to keep up with the updates Python receives to ease maintenance tasks in the future and prevent compatibility issues.

If I get stuck and the mentor isn't around:
Getting stuck means I have already put my efforts to solve some problem. Yes, the mentors are there to guide us, but in such a case, rather than keep waiting, without hesitating, I'll ask out the problem on IRC, mailing list of this sweet community. And if it's a technical problem, can be put on some other relevant places to get out of there. If even then the problem presists, I'll do reverse checking.

Keeping the community informed of my progress and the problems:

 * The first strategy will be regular mails and interaction on IRC regarding questions and the progress both.
 * The second will be use of git which will keep the community informed.
 * Thirdly everything will be there on my blog regularly as I already have such an experience.

Miscellaneous
I have set up a development environment before the summer starts and the screenshot of my Sugar development environment after the modifications in buddymenu.py file is here:



A great learning experience as a child:
There are many but a great learning experience is from my 5th standard, when I didn't have a PC. I never left a chance to use paint on my cousin's system. I used to open already saved files and look into details. Learning from there, I taught my friends in school. It was probably the time when they started coming to get some piece of art/drawing on their notebooks and I loved making it for them. I believe this is the reason for what I'm today.

Something Else:
I would like to tell that firstly it was the name "Sugar-Labs" that grabbed my attention and secondly the teams page. And I couldn't stop myself to look inside. Yes, it was the first community I opened and the first love that didn't let me search for any other organisation. I also have a past experience in logo-designing and here is one of the logo that I designed for a recent project for web development agency- Agaaz. The basic idea was to describe the name "Eye Groom" while portraying the idea opticals.