Summer of Code/2014/AnaBalica/Social Help

About me

 * What is your name?
 * Ana Balica


 * What is your email address?
 * ana.balica@gmail.com


 * What is your Sugar Labs wiki username?
 * AnaBalica


 * What is your IRC nickname on irc.freenode.net?
 * ananasova


 * What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
 * I know 3 languages: Romanian, Russian and 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.)
 * Originally I am from Republic of Moldova. My current location (also during the summer) is Prague, Czech Republic (UTC +1). Normal working day starts at 8AM UTC and ends at 7PM UTC.


 * 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?
 * Open-source contributions:
 * moin2.0 - change subscription mechanism and other enhancements
 * sugar bugfix - Fix #4733 - remove warning on username change and Manage restart message on reverting to initial username

About the project

 * What is the name of your project?
 * Social Help


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

Abstract

 * Social Help is a system wide mechanism to access a range of social channels like IRC, forums or social networks (i.e. Sugar Network) within a specific context. Basic implementation is available on github branch prototype-social-help and the interaction workflow is screencasted and posted on youtube. The prototype includes a system-wide handling of a keypress combination - , which pops up a window that has 2 options: to join IRC or to open the Browse activity. At the moment the following window looks like that:


 * Update: This is just a prototype and there is a better idea how to handle Social Help window (from Sam Parkinson). We can add one extra icon to the static Help dialog, which will display the Social Help interface. In that way we are not overloading the user operation with extra shortcuts and we make it more discoverable, due to the fact that users are already used to static Help window.

Conclusion

 * Social Help is oriented towards users of Sugar (kids) that for various reasons are in need of social interaction:
 * ask a question on how to achieve something within Sugar or an activity
 * share knowledge and experience
 * propose enhancements
 * debug possible problems


 * To think about it, today's society is overwhelmed with social networks, forums and chats. Social Help is an easy way to access social channels and get children involved into helping each other. The interaction can give them a headstart in understanding how to use the tools they are offered and even contribute to the project.


 * 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.
 * Timeline:
 * 19-25 May - Decide on and code the final UI design of the Social Help window
 * 26-1 June - Bring on a context-dependent window on a specific keypress to show all available communication channels for the following context and attach callbacks to UI widgets
 * 2-8 June - Create a toolbar button for social help with a palette listing all available channels for the current context, integrate the toolbar button to main activities
 * 9-15 June - On IRC channel button press event open IRC activity, set the nickname based on system user and join the help channel
 * 16-29 June - Set up a forum platform or familiarize with the existing one, create a seamless registration and authentication process for Sugar users
 * 30-6 July - On Forum(s) button press event open the respective activity or the Browse activity and point to the context-dependent category to post the question
 * 7-13 July - Create error message popup windows and offer to download missing components (i.e. IRC activity)
 * 14-20 July - Write unit and integration tests for the available functionality
 * 21-27 July - Extensive manual testing, bugfixing, localization
 * 28-3 August - Write documentation (docstrings, a wiki page with description, help page to Help activity maybe)
 * 4-10 August - Extra polishing (small enhancements)
 * 11-17 August - Merging to main repos, submitting code to melange


 * 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.
 * My exposure to computer science and information technologies began 4 years ago. In that period I have achieved a reasonably solid expertise in clean coding, usage of procedural and OOP paradigms (just the basics of functional), scratched the surface of software design and design patters. My main passion is Python (actively developing using Python for the last 3 years), though I have tried also other tools (JavaScript, PHP, Matlab/Octave, git, a variety of web frameworks, technologies, libraries).


 * Some of my pet projects are:
 * FAF website (Django), github repo, currently hosted here http://faf.utm.md/ (the university website might be down) and migrating to http://faf.code.md/
 * My blog written in Flask, Code Speculations, available here http://www.code-speculations.me/


 * My github contains a variety of small university projects: a poll website written in Symfony2, Scrapy spiders, Qt4 apps, semantic web and linked data showcase app, SVG based editing tool.


 * Additionally I was employed as software developer for 8 months at Red Sky (had to quit due to change of geolocation). I have worked on CarOcean project, which is based on Scrapy framework. My responsibility was to handle about 100 different spiders (the project is available in 9 countries). Consequently I got a lot of experience in crawling the web, using xpath, regular expressions, agile methodology. As well I have worked on small PHP (Zend framework) projects.

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.
 * My thoughts
 * Social Help doesn't have a striking, absolutely vital impact on Sugar Labs community. Nevertheless this small feature will open the borders of communication for so many users on some many topics. Social Help shows a straight-forward way where to ask a question or to share your knowledge. By completing this project, Sugar Labs community will get even closer to its users through IRC and forums, which subsequently leads to a better understanding of what it's users are expecting.
 * Moreover Sugar Help will become a channel to find pals all over the world with same interests via reciprocal help.

In the mid-1970s Alan Kay predicted that, among other things, computers would enhance interpersonal communication. While there remain a few skeptics, it is pretty obvious he was spot on in his prediction. People are inherently social beings and the computer gives us opportunity to exercise that aspect of our nature. Amplifying the social aspects of Sugar for our users is a great way to share best practice, provide support, and mostly have fun while learning. Social Sugar is critical to our future as a community and as a project. --Walter (talk) 18:23, 19 March 2014 (EDT)

Users require a way to provide feedback to the developers so that the platform has a chance to improve. Social Help will enable users to share their issues and help build a good knowledge base for the Sugar doers community. --icarito (talk) 23:42, 23 March 2014 (EDT)


 * What will you do if you get stuck on your project and your mentor isn't around?
 * Research or refocus. Those are the 2 strategies that always work for me. If it is a bug, then there must be a way to solve it. Get a step back and read some documentation - maybe I have missed something important. If the issue involves a collaborative decision and the presence of the mentor is absolutely critical, then I can refocus, checkout to a new topic branch and start doing other tasks.


 * 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?
 * Talking from my past experience, weekly meeting are really helpful to keep everybody up-to-date (might be held only with the mentors and co-mentors). Usually I prepare lists of DONE, TODO next week and BLOCKERS. Also I am always online on IRC (using irssi via ssh) and I check it several times a day.

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".
 * Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.
 * Sugar commits:
 * Fix #4733 - remove warning on username change
 * Manage restart message on reverting to initial username


 * Describe a great learning experience you had as a child.
 * In childhood I used to do all sorts of trivial experiments related to physics and biology. I was blocking the sunlight from for some plants, managing their watering cycle, filling up washbowls with different temperature water to test how same water temperature is relative to previous heat exposure of some parts of the body, trying to understand how animal communities work and how they communicate.