Summer of Code/2018/Just say no to GTK2
About You
What is your name?
My name is Yash Agrawal and I am a 2nd year undergraduate student at Indian Institute of Technology Roorkee.
What is your email address?
yagrawal900@gmail.com
What is your Sugar Labs wiki username?
yashagrawal3
What is your IRC nickname on irc.freenode.net?
yashagrawal3
What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
My first language is Hindi but I am equally proficient and fluent in English.
Where are you located, and what hours (UTC) do you tend to work? (We also try to match mentors by general time zone if possible.)
Location: Varanasi, Uttar Pradesh, India
Timezone: UTC +5:30 India Time Zone
Working Hours: I tend work in afternoon IST 2:00 PM to IST 6:00 and late night 12:00 IST to 5:00 IST, I am also flexible for meeting anytime with prior notice.
Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?
I have developed a passion for programming and web development in my freshmen year and from then, most of my time goes into reading and writing software. I have been contributing to open source regularly in past few months but as a part of GSoC this would be my first time contributing to a big open source project. The fact that the code written by me would impact and be used by large number of people really excites me.
I have been trying to contribute in the small ways I could, by having all my projects on GitHub so that other can benefit from the same and trying to fix minor bugs that I can. GSoC provides a good platform to dive right into the middle of open source development with the opportunity to work in big open source projects with the core developers. This makes me excited and eager to participate in it. I have been working with Sugar Labs for last three months and it has been a great learning experience for me. I chose this particular project because it is very well aligned with my interests and most of my the previous work that I did for Sugar Labs. Other than that, this project provides a good opportunity to apply my learnings on a practical scale.
About your project
We are looking for projects that will enhance the Sugar Learning Platform. Please consider how your project will have impact on children learning.
What is the name of your project?
‘Just say no to GTK2’
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?
As the project description says ‘GTK2 and GST0.10 are end of life. We need to upgrade the remaining activities with these dependencies.’, We need to upgrade the sugar activities to maintain its support and get security update on various platforms. The movement from PyGTK to PyGI means no more maintenance of it. GTK+ 3 is a major new version of GTK+ that breaks both API and ABI compared to GTK+ 2.x, which has remained API- and ABI-stable for a long time. The main purpose of this project is to port dependencies of 25 sugar activities from “GTK2 and GST0.10” to GTK3 and GST 1.0. The task will be accompanied by updating to the latest version of sugargame and sugar-toolkit-gtk3. GTK3 introduced many changes to improve UI by providing a number of new widgets, switches, toolbars etc. A lot of other changes have also been introduced, to name a few: No longer use of HippoCanvas library, Use of Cairo for Drawing, Use of GtkBox and many more. All these are documented here(https://developer.gnome.org/gtk3/unstable/gtk-migrating-2-to-3.html). Most of the Sugar activities are heavily dependent on Gtk+. Sugar Labs has been on a long time quest to keep up with the Gtk porting requirement. With GTK4 round the corner, same thing has to do be done again in coming years. This project also aims to provide new developers platform where they can do their job easily and help maintain sugar support of activities. Many changes were also made in GST 1.0 which will also be implemented in this project.
I will be maintaing and upgrading all required dependencies of the 25 proposed activity to the latest and release ready state. I will be fixing all its bugs and warning. I will the following all the steps necessary before releasing a activity, i.e. maintaining NEWS file, updating README file, reviewing all pull requests.
Deliverables
- 25 well maintained activity on github
- A new released version of those on activities.sugarlabs.org
I am making this for Students, Teachers and all those who use Sugar platform. After ubuntu and fedora drop their support for GTK2, many activities will stop working. This project will provide some of their favorite activities a long term support with better performance. This will improve their learning process also. It is equally important for the organisation as well, there are a bunch of code that is distributed between old gtk2 and newly ported gtk3, this project will provide a sense of uniformity along all activities which will be more welcoming for any new contributor. Most part of the coding will be done in Python, GTK3/PyGI and GST1.0
Activity Selection
Selection of following activities was a long process. I made a report on all activities that require a port to GTK3. There are around 70 activities that need porting. I have tested almost all of the following activity on ubuntu 17.10 and Fedora 28 SoaS. All the activities having fedora support were given priority.
The activities were selected on following grounds:
- Has strong pedagogical basis
- Popular on activities.sugarlabs.org
- Comes preinstalled with Fedora SoaS
- Redistributed by debian and ubuntu
- Games that are great for learning
1. record-activity : has strong pedagogical basis
2. activity-turtle-confusion :
3. activity-turtle-flags :
4. ajedrez-activity :
5. i-can-read-activity :
6. iknowmyabcs :
7. moon-activity :
8. tamtam :
9. falabracman-activity :
10. labyrinth-activity :
11. jigsaw-puzzle-branch : redistributed by Debian and Ubuntu
12. colgadito-spyral :
13. cuidarme-activity :
14. block-party-activity :
15. starchart :
16. SocialCalc :
17. flipsticks :
18. Kiwix :
19. pilas-activity :
20. spanish-guarani :
21. adivinanzas-activity :
22. foodforce2-activity :
23.
24.
25.
What is the timeline for development of your project? The Summer of Code work period is from mid-May to mid-August; 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 (end of June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.
1. April 23, 2018 - May 6, 2018
Hiatus due to exams and moving back to home from college for vacations.
2.May 7, 2018 - May 13, 2018
- Go through official gnome documentation of GTK+ (3 and 4)
- Since most of the activities follow a same code structure, design a workflow for myself for porting
3. May 14, 2018 - May 20, 2018
- Start porting activities to GTK3
- Port activities 1-5
- Fix bugs for debian, ubuntu and fedora platform
4. May 21, 2018 - May 27, 2018
- Port activities 6-10
- Fix bugs for debian, ubuntu and fedora platform
5. May 28, 2018 - June 3, 2018
- Discuss with mentors for any changes or modification
- Make activities 1-10 release ready
- Release first 10 activities
6. June 4, 2018 - June 14, 2018
- Port activities 11-15
- Fix bugs for debian, ubuntu and fedora platform
Phase 1 Evaluation
7. June 15, 2018 - June 24, 2018
- Port activities 16-20
- Fix bugs for debian, ubuntu and fedora platform
8. June 25, 2018 - July 1, 2018
- Discuss with mentors for any changes or modification
- Make activities 11-20 release ready
-Release next 10 activities
9. July 2, 2018 - July 12, 2018
- Port activities 20-25
- Fix bugs for debian, ubuntu and fedora platform
Phase 2 Evaluation
10. July 13, 2018 - July 22, 2018
- Discuss with mentors for any changes or modification
- Make activities 21-25 release ready
- Release last 5 activities
11. July 23, 2018 - July 29, 2018
Add documentation for the things to be added, wherever required, to help new contributors to contribute to the project.
12. July 30, 2018 - August 5, 2018
Make final submission and discuss future prospects with the community.
Time Commitment
My summer vacations are from 3 May to 15 July. The official GSoC period is from 13 May to 6 August.I can easily give 40-50 hours a week till my college reopens and 30-40 hours a week after that. On Saturdays and Sundays there is no college and on Wednesdays I have only 2 hour session. I intend to complete most of the work before my college reopens. Other than this project, I have no other commitments / vacations planned for the summers. Also I do not have any internships in this summer.
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.
I have been an active contributor to sugarlabs organisation since past three months, so I am very comfortable with working on sugar environment and am quite familiar with sugar codebase. In past months, I learnt a lot about Gtk, pygame libraries, sugar-toolkit, cairo, Pango, and now feel very confident working with it. I have over 40 PRs merged during these phase out which most of them were port to Gtk3, so I am pretty experienced also . I was also invited to join Sugar Labs organisation on github as Pull Request reviewer and merger.
I wrote my first line in python code around 5 years ago and has been love with it since then. I have developed from simple apps like library management in school to highly complex Django app for startups. I am also familiar with many python libraries like numpy, pandas, matplotlib that are essentially used in data science.
You 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.
This project is important to sugar labs community because through this project we ensure the continuation of and proper functioning of over 25 activities in sugar environment. These activities are used by children and teachers for learning purposes and we don't want activities to suddenly stop working in the coming days. These activities will be of no use as soon as debian/Ubuntu or fedora drops their support for gtk2. This also brings a certain amount of urgency with Ubuntu 18.04 and fedora 28 just right the corner. Considering Impact of this project on sugar labs Developer community, this will increase the uniformity and consistency in the codes of various activities, which will result in a more welcoming environment for new developers. Considering future prospects, GTK4 is also just around the corner, we will have to deal with same hassle in coming years, of course transition of gtk3 to GTK4 is going to be much simpler than gtk2 to GTK4. Also, I intend to go the through GTK4 documentation to write my code in best possible manner which will make transition to GTK4 a easier task.
What will you do if you get stuck on your project and your mentor isn't around?
If the mentor is not available, basically google and StackOverflow is the place to go, if remained unanswered, I’ll go to IRC #sugar or sugar-devel list for help. If even that doesn't work out, I have some of great developer friends and seniors, who are always there to help.
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 intend to write a weekly blog, as was suggested by sugar labs community, to keep my mentors informed. I will also use IRC and mailing list to keep developer community updated with my progress. �
Miscellaneous
We want to make sure that you can set up a development environment before the summer starts. Please do one of the following: Task 1: 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".
Task 2: Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.
https://github.com/sugarlabs/buttons-and-scissors-activity/pull/17
https://github.com/sugarlabs/reversi-activity/pull/2
https://github.com/sugarlabs/iknowIndia/pull/4
https://github.com/sugarlabs/appel-haken-activity/pull/2
List of all commits: https://github.com/search?q=is%3Apr+author%3Ayashagrawal3+org%3Asugarlabs&type=Commits&utf8=%E2%9C%93
Describe a great learning experience you had as a child.
Maths has always been my favourite subject, and I always love the fact that their are so many views to look at a simple problem. During my school days, my mathematics teacher always kept us excited by doing various kind of fun learning activities to start a new topic. One of them was Quadratic Equations, In the first class he told about its general equation, coefficients and it’s plot. I didn’t understand all of it. Next day, he brought a laptop with a software( GeoGebra kind of) to demonstrate us how the actual plot varies with coefficients of quadratic equation. Suddenly we weren’t clueless about what a parabola is and could imagine it changing its shape in our head with change in coefficient.
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?