Summer of Code/2016/Journal Rethink

< Summer of Code‎ | 2016
Revision as of 08:53, 20 March 2016 by Abhijit (talk | contribs)

About Me:

  • What is your name?

My name is Abhijit Patel and I am a 2nd year undergraduate student at Dhirubhai Ambani Institute of Information and Communication Technology, Gandhinagar, India.

  • What is your email address?

abhisandhyasp.ap@gmail.com

  • What is your Sugar Labs wiki username?

Abhijit

  • What is your IRC nickname on irc.freenode.net?

AbrahmAB

  • 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 Gujarati . I am also fluent in English, Hindi and Marathi.

  • 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.)

I am located in Gandhinagar, India. The time zone is Indian Standard Time (UTC + 5:30). I am planning to work 5:00 to 14:00 (UTC) but is adjustable. As I don't have any other commitments this summer I could surely manage my time and be active when the mentors are available.

  • 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 am new to open source.The idea of “anyone could contribute code” is just splendid. Developing a piece of software that would be used by millions of people by coordinating with other developers all round the globe, is something that has always fascinated me.

Sugar learning platform is an example of how technology can be used to impart education. Contributing to the open-source project under sugar labs would indirectly contribute to educating a few more children. Nothing else could match this joy.

About my Project

  • What is the name of your project?

Journal Rethink

  • 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?

Journal Rethink is to enhance Journal such that students could use it as a platform to do their project-work.

The listed features can be used for making Journal as a platform for working on projects.

Shared mini-journal:

The present Sugar Journal shares only single instance of an activity with a group of participants. A need is to make Journal support sharing of multiple instances of one or more activities among the same group like for Maths Project group.

For this a feature of “Shared project having multiple Journal Entries(A mini-journal)” would be added under this project. On sharing a project , a new shared and synced mini-journal would be initiated. This idea of mini-journal can be implemented by creating one single instance which has instances of all the activities to be shared.

In short, When users opens the Journal they see a list of mini-journals. When they click on the mini-journal, they see a list of activities that are shared with the same participants under the same project in the mini-journal (same layout as journal today).

Start a new entry or Add New Item:

Under the mini-journal feature another feature of adding more instances of activities directly from Journal by just using the feature of “Add Item”. At first the student or user will be forced to title the entry he is adding. Than a File-Chooser view of Home-view displaying the list of activities would pop-up from which user would select the activity to start working in.

Integrating Chat Activity in mini-journal:

As for every project work needs discussion among the group members. Integrating the chat activity in this mini-journal would give a place for discussion for all the members of the mini-journal.


Something more that would improve user experience :  

Icon View for Journal:

Journal is in list view today. The Icon View would make searching through images much more engaging and efficient. A prototype of this Icon View is created in the below link.

Implemented Icon View (in my prototype [1]):

Journal as Service:

Journal currently is used as an Sugar Activity.The Journal is always running as a service when the Sugar is running. It is accessible by also by the Journal button in the frame.

Sort alphabetically:

Adding another “Sort by name” feature only when the view is switched from Journal to the external device like USB.

This sort would be best in case when external devices are connected. For if the users want to copy some files from external device to their device in such case sorting by name would be preferable than sorting by date or size.

Technologies or languages used are python and Gtk.

For the mini-journal I will be using telepathy implementations like the Salut (for link-local XMPP ) and Gabble that are being used by sugar.

UI design for Mini-Journal below with the details of new tools:


  • 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.


Period Task
Get thorough with Journal code. Analyze its working. I have basic understanding of the code because of my previous contributions to sugar.
Till 18 May
  • Analyze more on how collaboration works in sugar.</nowiki>
  • Develop an outline of the project and more discussion with my mentor Sam and other community members regarding the features that are to be implemented.</nowiki>
19 May to 23 May Begin coding for “Add New Entry” tool.
  • Design a Pop-up Box to give title.</nowiki>
  • Create a File Dialog/Chooser View of HomeView.</nowiki>
24 May to 8 June Start developing the “Share Project” tool.
  • Create a mini-journal instance that will be shared.</nowiki>
  • Develop this Mini-Journal instance to handle the instances of other activities for sharing.</nowiki>
9 June to 24 June
  • Test for collaboration of mini-journal.</nowiki>
  • Write test cases that can be furthur used for testing.</nowiki>
  • Send patches of the feature completed and get feedback from community on the features that are implemented.</nowiki>
25 June to 26 June Prepare for mid-term evaluation.

The major features listed above would be implemented till mid-term.

27 June to 28 June Midterm Evaluation
29 June to 5 July Buffer Week
6 July to 9 July Analyze the feedback and clean up the code.
10 July to 16 July Integrate the Chat activity in mini-journal.
17 July to 23 July
  • Finish up the small features.</nowiki>
  • Complete the Icon view for Journal.</nowiki>
  • Implement “Sort alphabetically” mainly for the list of files of the mounted devices like USB. </nowiki>
  • Convert Journal Activity to Sugar Service.</nowiki>
24 July to 7 August Discuss with Sam and other community members on the current progress made and get a few more ideas that could be implemented in a short span of time.

Implement them.

8 August to 15 August
  • Improve code efficiency</nowiki>
  • UI improvements</nowiki>
  • Thorough Testing</nowiki>
  • Fix relevant bugs</nowiki>
16 August to 22 August
  • Merge the changes to the source code of Journal.
  • Documentation and Update the wiki page of Journal, describe the new features that are added.</nowiki>
  • Add comments that will help further development.</nowiki>
21 August to 24 August Final Evaluation

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 am familiar with Journal codebase. I have no other commitments apart from GSoC. My university will also be going through vacations this summer and I have no other short/long vacations planning during the summer. So, there will be no obstacles regarding my availability and my weekly dedicated time. The only fun trip I wish to have this summer is to fulfill my dream of completing GSoC 2016.

Prototype:
I have also developed a prototype.

  • Implemented the Icon View for Journal

Link for the same -> https://github.com/AbrahmAB/sugar-prototype/tree/prototype

My college project work as well as other games that I have developed are as bfollows:

  • Tiny-Shell : The project included to write a simple Unix shell program that supports job control. The language used was C.
  • Dynamic Memory Allocator : This is an ongoing project, in which I am writing a dynamic storage allocator for C programs, i.e., my own version of the malloc , free , and realloc routines.
  • Simulate game : Designed my first game in python using Gtk and pyGame libraries.
  • My_Tetris : Just tried my hands at functional programing. Designed a tetris game in Haskell.

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.

My answer : The project Journal Rethink is all making Journal support the project-based school activities. This will promote project-activities in school and improve students team-work qualities. Sugar focuses on sharing and collaboration. And this project would probably bring a great extension in collaboration and sharing system. A whole new experience for the students and teachers.

Sam :

What will you do if you get stuck on your project and your mentor isn't around?

If I am stuck and my mentor isn't around I could at first try to sort the problem by just searching on web for some solutions. If this doesn't work then I would go to IRC to get a bit of help from the other developers or I could even post the problem on the mailing list. I have experienced that the members of community are very responsive and am sure they could help me. Alongwith the above I am surrounded by some experienced developers and open source enthusiasts who will definitely help me.

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 am planning to write a blog on Wordpress where I will post updates of the progress as well as obstacles being faced by me. I will also announce milestones on the mailing list or IRC channel to inform the community of 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: 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".