Changes

no edit summary
Line 3: Line 3:  
==About Me==
 
==About Me==
   −
''> What is your name?''
+
'''''> What is your name?'''''
    
Prasoon Shukla
 
Prasoon Shukla
   −
''> What is your email address?''
+
 
 +
'''''> What is your email address?'''''
    
prasoon92.iitr@gmail.com
 
prasoon92.iitr@gmail.com
   −
''> What is your Sugar Labs wiki username?''
+
 
 +
'''''> What is your Sugar Labs wiki username?'''''
    
Prasoon2211
 
Prasoon2211
   −
''> What is your IRC nickname on irc.freenode.net?''
+
 
 +
'''''> What is your IRC nickname on irc.freenode.net?'''''
    
prasoon2211
 
prasoon2211
   −
''> What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)''
+
 
 +
'''''> What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)'''''
    
Hindi. But I'm quite comfortable in English as well.
 
Hindi. But I'm quite comfortable in English as well.
   −
''> 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.)''
+
 
 +
'''''> 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'm located in Kanpur, India (+5:30 UTC). I usually tend to work from 10 - 11 in the mornings (~05:00 UTC) to 9 - 10 in the night (~16:00 UTC) with a few breaks in the middle.
 
I'm located in Kanpur, India (+5:30 UTC). I usually tend to work from 10 - 11 in the mornings (~05:00 UTC) to 9 - 10 in the night (~16:00 UTC) with a few breaks in the middle.
   −
''> 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?''
     −
Yes, I've contributed code to a few open-source projects. Chief among those is SymPy[1] in which I participated as a student in last year's summer of code[2]. I've contributed to three patches in mercurial - one got merged[3]. A few more patches went to SimpleCV, all but one were merged[4]. One-off patches include this one in django[5] (unmerged) and this one in django-browserid (merged)[6]. Also, I've contributed to two patches to sugar core, one got merged and the other has changes suggested to it[7] which I'll take up as soon as I'm done with my proposal.
+
'''''> 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've contributed code to a couple of open-source projects. Chief among those is SymPy[1] in which I participated as a student in last year's summer of code (GSoC 2013)[2]. I've contributed to three patches in mercurial - one got merged[3]. A few more patches went to SimpleCV, all but one were merged[4]. One-off patches include this one in django[5] (unmerged) and this one in django-browserid (merged)[6]. Also, I've contributed to two patches to sugar core, one got merged and the other has changes suggested to it[7] which I'll take up as soon as I'm done with my proposal.
    
[1]: Some important patches: [https://github.com/sympy/sympy/pull/1746/files One], [https://github.com/sympy/sympy/pull/1726/files Two], [https://github.com/sympy/sympy/pull/1798/files Three], [https://github.com/sympy/sympy/pull/1714/files Four]
 
[1]: Some important patches: [https://github.com/sympy/sympy/pull/1746/files One], [https://github.com/sympy/sympy/pull/1726/files Two], [https://github.com/sympy/sympy/pull/1798/files Three], [https://github.com/sympy/sympy/pull/1714/files Four]
Line 49: Line 55:     
[7]: [https://github.com/sugarlabs/sugar/commit/dc104f5768867b9ff18b5ac0749420104327d780 One], [https://github.com/sugarlabs/sugar/pull/259 Two]
 
[7]: [https://github.com/sugarlabs/sugar/commit/dc104f5768867b9ff18b5ac0749420104327d780 One], [https://github.com/sugarlabs/sugar/pull/259 Two]
 +
    
==About my project==
 
==About my project==
   −
''> What is the name of your project?''
+
'''''> What is the name of your project?'''''
    
My project is called 'Social Help for Sugar'.
 
My project is called 'Social Help for Sugar'.
   −
''> 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?''
     −
''This is a bit larger than 20 sentences.''
+
'''''> 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?'''''
 +
 
 +
''Disclaimer: This is a bit larger than 20 sentences.''
 +
 
 +
===Abstract===
 +
 
 +
To create an easily accessible, highly usable platform that sugar users can use to discuss, debate and share ideas about everything related to sugar.
 +
 
 +
 
 +
===Deliverables===
 +
* Tight integration of the Discourse discussion forum with sugar.
 +
 
 +
* One click context based launch into topicwise discussion.
 +
 
 +
* A WebKitGTK+ based social-help activity.
 +
 +
* Set of data migrations scripts that will be used to populate DBs for new Discourse setups.
 +
 
 +
===Details===
 +
====Overview====
 +
I will be integrating the Discourse open-source discussion platform into sugar. Users will be can launch themselves into topicwise discussion right from the sugar shell. This will be much like sugar help where users can click on the help icon to access context based help.
   −
I will be integrating the Discourse open-source discussion platform into sugar. This will be done in such a way that the users can launch themselves into discussion on any topic regarding sugar right from the sugar shell. This will be much like sugar help where users can click on the help icon to access context based help.
+
This project is aimed at all sugar users. The ability to start a discussion on any help-related topic with a single mouse click will be extremely helpful for the users. The ''real aim'' of this project is to develop a repository of all information regarding sugar - much like StackOverflow - that will be the go-to place for sugar users. For these reasons, it is imperative that this project be undertaken.
   −
This project is aimed at all sugar users. The ability to start a discussion on any help-related topic with a single mouse click will be, I believe, extremely helpful for the users. The real aim of this project is to develop a repository of all information regarding sugar - much like StackOverflow - that be the go-to place for sugar users. That's why this project needs to be undertaken.
+
====Technical Details=====
 +
Work will be in Python for the most part. Some taks like tweaking Discourse might require some me to deal with Ruby. For cutomizing the frontend, I shall need to work with HTML5/CSS3/JS as well. I've worked extensively with all these technologies except Ruby which I'll need to brush up.
   −
The Discourse platform backend is made up entirely in Ruby. The sugar shell is made in Python. So, I'll mostly need to interact with Python and at times dabble with Ruby as well. The major tasks to be accomplished are:
+
The major tasks to be accomplished are:
    
# Making a social-help activity based on WebKitGTK+ that would be similar to the browse activity.
 
# Making a social-help activity based on WebKitGTK+ that would be similar to the browse activity.
 +
 
# Getting the Discourse platform tweaked according to the needs of  sugar. This will include:
 
# Getting the Discourse platform tweaked according to the needs of  sugar. This will include:
 
## Getting the UI of Discourse match (at least to some extent) with that of sugar.
 
## Getting the UI of Discourse match (at least to some extent) with that of sugar.
Line 76: Line 104:  
##** Or, we can employ a Quora like strategy - the username is FirstName-LastName-<index> where we'll need to fetch the 'index' from the Discourse database.
 
##** Or, we can employ a Quora like strategy - the username is FirstName-LastName-<index> where we'll need to fetch the 'index' from the Discourse database.
 
##* The user will need to feed in the password.
 
##* The user will need to feed in the password.
 +
 
# Developing an authentication bridge for use with Discourse. This is a topic of discussion. We've had some [http://lists.sugarlabs.org/archive/sugar-devel/2014-March/047498.html opinions posted on the mailing list]. All of these strategies can work - but, we need to decide on one of these. (I talked to Walter on IRC and he said to make this discussion a part of your project - maybe something to be done during the community bonding period). Here are the things we can do:
 
# Developing an authentication bridge for use with Discourse. This is a topic of discussion. We've had some [http://lists.sugarlabs.org/archive/sugar-devel/2014-March/047498.html opinions posted on the mailing list]. All of these strategies can work - but, we need to decide on one of these. (I talked to Walter on IRC and he said to make this discussion a part of your project - maybe something to be done during the community bonding period). Here are the things we can do:
 
## The first approach is to add two methods to the social-help activity - a set_cookie and a get_cookie - these can be accessed via DBus by Sugar shell. Here's the workflow:
 
## The first approach is to add two methods to the social-help activity - a set_cookie and a get_cookie - these can be accessed via DBus by Sugar shell. Here's the workflow:
Line 84: Line 113:  
## A fourth way, and this was [https://meta.discourse.org/t/signing-a-user-in-through-a-desktop-application/13700 told to me by the Discourse devs], is to use Discourse SSO (Single Sign On). But this would require an existing service on which we can ''hang'' the Discourse auth onto.
 
## A fourth way, and this was [https://meta.discourse.org/t/signing-a-user-in-through-a-desktop-application/13700 told to me by the Discourse devs], is to use Discourse SSO (Single Sign On). But this would require an existing service on which we can ''hang'' the Discourse auth onto.
   −
Anyway, any one of these methods can work. We'll need to decide though. The mailing list thread that I tried discussing this on hasn't really seen much activity yet. So, we shouldn't decide on a approach just yet.
+
Any one of these methods can work. We'll need to decide on a single one.
   −
''> 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.''
+
 
 +
'''''> 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.'''''
    
{| class="wikitable"
 
{| class="wikitable"
Line 119: Line 149:  
|}
 
|}
   −
''> 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.'''''
   −
As I've already mentioned in a previous sections, I've worked on quite a few open source projects. That shows that I'm capable of understanding the architecture of large codebases and successfully modifying small components in that codebase. This is essentially what I'll be doing in this project since the nature of this project is such that the code won't be tightly coupled with other sugar code.
+
As I've said before, I've worked with a few open source projects before. Also, I've participated in last year's GSoC. This shows that I'm capable of understanding the architecture of large codebases and successfully modifying small components in that codebase.
   −
Also, other than my open source source experience, I've developed a few other applications in Python/Django for my college's intranet portal. These applications include a virtual market for my institute for buying and selling used items, a user contributed directory of all items lost and found in the campus with user accounts, a [http://pinterest.com/ pinterest] like application for sharing original creative works (painting, poetry etc) which is in active development and an application that helps students review courses and faculty. Unfortunately however, I cannot share the code of these applications since the code officially belongs to the institute. All of this work is a part of work that I've done at a campus students' group - the Information Management Group. We are the guys who've made the [https://speakerdeck.com/imgiitroorkee/content-management-system CMS] for managing the large amount of content on the [http://www.iitr.ac.in college website] and developed a great intranet portal for the institute; [https://www.facebook.com/IMGIITRoorkee/photos_albums?ref=hl Photos]. [https://www.facebook.com/media/set/?set=a.10152183260016988.512292.353701311987&type=3 Some More].
+
Apart from my open source source contributions, I've developed a few other applications in Python/Django for my college's intranet portal. These applications include:
 +
* A virtual market for my institute for buying and selling used items,
 +
* A user contributed directory of all items lost and found in the campus with user accounts,
 +
* A [http://pinterest.com/ pinterest] like application for sharing original creative works (painting, poetry etc) which is in active development, and,
 +
* An application that helps students review courses and faculty.
 +
Unfortunately however, I cannot share the code of these applications since the code officially belongs to the institute. All of this work is a part of work I've done as part of a campus students' group - the Information Management Group. We are the guys who've made the [https://speakerdeck.com/imgiitroorkee/content-management-system CMS] for managing the large amount of content on the [http://www.iitr.ac.in college website] and developed a great intranet portal for the institute; [https://www.facebook.com/IMGIITRoorkee/photos_albums?ref=hl Photos]. [https://www.facebook.com/media/set/?set=a.10152183260016988.512292.353701311987&type=3 Some More].
    
I've also done other minor work in PHP and NodeJS. You can find it at my [https://github.com/prasoon2211 github repository].
 
I've also done other minor work in PHP and NodeJS. You can find it at my [https://github.com/prasoon2211 github repository].
Line 151: Line 186:  
==Miscellaneous==
 
==Miscellaneous==
   −
> We want to make sure that you can set up a development environment before the summer starts. Please do one of the following:
+
'''''> 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".
 
* 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".
 
* Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.
 
* 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.
+
It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.'''''
    
Here are my two patches:
 
Here are my two patches:
   −
[https://github.com/sugarlabs/sugar/commit/dc104f5768867b9ff18b5ac0749420104327d780 #244, Merged.]
+
* [https://github.com/sugarlabs/sugar/commit/dc104f5768867b9ff18b5ac0749420104327d780 #244, Merged.]
   −
[https://github.com/sugarlabs/sugar/pull/259 #259, Changes suggested.]
+
* [https://github.com/sugarlabs/sugar/pull/259 #259, Changes suggested.]
   −
''> Describe a great learning experience you had as a child.''
+
 
 +
'''''> Describe a great learning experience you had as a child.'''''
    
I remember that I used to have this RC car in my childhood. I always wondered how it ran - so I took it apart and when I knew how it worked (with the DC motor), I tore away the motor from the car. Subsequently, I taped the motor to the top of the car along with batteries, made a makeshift propeller with scrap pieces of aluminium from my backyard, expecting the car to fly, if uncontrollably. But it didn't - the car was heavy. I was left with a broken car and a lesson on concepts of force and lift. The other lesson I learnt from this experience was that just because it seems that something should work does not mean that it will; in fact it rarely ever does.
 
I remember that I used to have this RC car in my childhood. I always wondered how it ran - so I took it apart and when I knew how it worked (with the DC motor), I tore away the motor from the car. Subsequently, I taped the motor to the top of the car along with batteries, made a makeshift propeller with scrap pieces of aluminium from my backyard, expecting the car to fly, if uncontrollably. But it didn't - the car was heavy. I was left with a broken car and a lesson on concepts of force and lift. The other lesson I learnt from this experience was that just because it seems that something should work does not mean that it will; in fact it rarely ever does.
   −
''> 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?'''''
    
Nothing much but I suppose, there is one thing. Sugar is primarily used by children. So one possible question could have been whether I have ever needed to teach a child - especially something technical. Someone who really understands what the end-user (in this case, children) really wants is usually capable of creating a better UX. I have, in fact, taught my little cousin some C programming once and that experience has taught me a little about how a child approaches technology. This could be helpful, I think.
 
Nothing much but I suppose, there is one thing. Sugar is primarily used by children. So one possible question could have been whether I have ever needed to teach a child - especially something technical. Someone who really understands what the end-user (in this case, children) really wants is usually capable of creating a better UX. I have, in fact, taught my little cousin some C programming once and that experience has taught me a little about how a child approaches technology. This could be helpful, I think.
25

edits