Summer of Code
From the 2009 FAQ: "Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source projects."
Sugar Labs Google SoC page: http://socghop.appspot.com/org/show/google/gsoc2009/sugarlabs
This is a project under Development Team. Jameson Chema Quinn coordinated the 2009 projects and can be contacted with any questions at jameson.quinn -AT- gmail.com.
2009 results
We had a great year. All 5 of our students were successful, and several of them made really important improvements to Sugar. Here's the results:
Version support for Datastore
Overall I think the project was a success. For various reasons it didn't quite go the way i imagined, but nevertheless got a fully working prototype I can base further development on. Many of my not directly version related patches were merged upstream for 0.86.
VCS benchmark
My VCS benchmark that was geared towards the data store use case has shown there's no perfect match -- depending on the hardware Sugar is running on (CPU speed, IO bandwidth, storage size) different VCSs will perform best. This emphasizes the need for a modular design with runtime-selectable VCS backends in case we're going to use one at all.
Datastore redesign proposal
The current datastore codebase doesn't lend itself very well for adding VCS backend support to it; also the current API (including the names of special properties like uid
for the object identifier) has historically grown and isn't well-defined in some aspects. My proposal (follow "raw blob data" link) shows how a future datastore implementation could work, including a new API (that's based on the old one, but with clear definitions and guarantees).
Prototype
The current datastore has been enhanced to add version support - now based on the new API defined in the proposal mentioned above. The UI side has been adjusted to that new API. To the user, it it totally unobtrusive: the text field showing the time of the last modification just got replaced with a combo box showing all existing versions (with the latest one being the default). Selecting a different version will show the details for that version and also allows the user to resume it. While the UI changes are minimal, the impact is large: even after doing any number of modifications the user can "go back" and look at or even continue working on older versions -- similar to undo / redo functionality some applications offer (though most of them can't undo anything once the application has been closed).
Prefix search support
As a test balloon for the code review process I added support for doing full-text searches on specific properties by using prefixes inside the query string: E.g. entering "mime_type:text/plain" in the Journal query field will only show those entries that have the "mime_type" property set to "text/plain". Previously the user could only search all properties for "text/plain".
Test suite
The test suite for sugar-datastore has been revived from an old git version and modified to test the public (=DBus) API instead of the internal ones. It already helped discovering two bugs in my prefix search support changes.
Minor bug fixes
Several pre-existing bugs have been discovered and fixed in all of sugar-toolkit, sugar-datastore and sugar: #1040, #1024, #1053, #1059
Minor enhancements
A trace decorator has been added in order to ease debugging. It helped a lot during version support development. Not having the layoutmanager side-stepped by several parts of the data store helped made the prototype code much cleaner. Patches to clean up quite a bit of redundancy in accessing the data store from sugar (#1198+#1201) and sugar-toolkit (#1197) have not been accepted for 0.86.
Unrelated to my version support work, but operating on the same set of modules is a patch to add a technical details view (file size, MIME type, creation date) to the Journal details view.
Style fixes
The code review process mandated some stylistic conventions that were not yet followed by some of the pre-existing code. I've submitted patches to fix that (#1108, #1109). Also letting the logging code do the formatting of the log message (#1210, #1211, #1213) has been added to the style guide.
Karma
The Karma GSoC project has been a success. Participant Felipe Lopez Toledo set out to create a high-level library for creating interactive digital learning lessons using only openweb technologies. The result is the karma jQuery plugin that provides high-level functions for manipulating image, audio, and internationalization.
The Karma Project is an initiative to create a platform that enables web developers to create compelling interactive learning materials for the Sugar Learning Environment without having to learn a new set of programming tools.
You can view the first example of lesson "Adding up to 10".
The student, Felipe Lopez Toledo, wrote:
- Simplified functions for:
- Drawing using the new canvas API for html5
- Adding images dynamically to the canvas API and manipulating them
- Playing audio
- Methods for loading in localized images and audio
- Mechanism for loading in translated text from a .po file
- Documentation of the Karma API
Thanks to the support of Google and Sugar Labs, Karma can now be used to create interactive activities for the Sugar environment.
Prototype
Groupthink
The Groupthink GSoC Project successfully achieved its specified goals. The student, Benjamin Schwartz, wrote
- a gtk SharedTextView widget that provides live shared editing in a self-contained object
- a network interface to allow sharing this widget over the network
- a SharedTextDemo activity (versions 1, 2, 3, 4, and 5) to demonstrate the use of this widget
- an automated serialization system for saving and loading state with the Journal
- other code necessary so that Sugar activities could seamlessly rejoin a shared instance and merge in changes made offline
- patches to enable live shared editing of Python code, with syntax highlighting and Undo/Redo, in Pippy-35
- extensive API documentation for Groupthink.
Thanks to the support from Sugar Labs and Google, Groupthink has grown from a toy project into a library that developers can really use.
Printing
Printing had been one of the key complementing features of any Desktop that Sugar lacked.
- The following Manual provides a gist of the project.
- The Code Repository of Print where you can find the odf-to-ps CUPS filter, as well as Moodle Print.
Previous Introduction
The purpose of this page (was) to coordinate a Sugar Labs Summer of Code effort.
What (made) a good project
Our focus is on collaboration and community for the summer 2009 round of projects, though we'll also consider thoughtful proposals that lie outside these two areas and can make a strong case for how they would support the Sugar Labs mission.
Collaboration
This refers to API or activity work that makes collaboration "work better." A good metric for "works better" is to ask the following: "6 months after the summer ends, which projects are likely to have caused the highest increase in children-hours spent collaborating over Sugar Activities?"
Community
This refers to meta-work that makes it easy for Sugar to reach a broader Sugar Labs; this includes development tools (and accompanying implementation of processes and training), internationalization/localization, accessibility, infrastructure-building, and porting Sugar to other platforms.
A good metric for "reaches a broader community" is to ask the following: "6 months after the summer ends, which projects are likely to cause the highest increase in SL community members that have participated consistently on a team for a minimum of 3 months?"
Get involved
Mentors
The preliminary Mentors' application page is now up.
Students
Student applications open on 23 March 2009. Look at the Resources page. It has links to many ideas and development resources. Your may also propose your own development ideas—show your creativity—combine the best aspects from the pool. Bring your proposals to the community, developers, and potential mentors (not limited to Mentors) for feedback on the mailing list or IRC.
Supporters
We're currently in the "get ideas" phase; please see Development Team/Project Ideas for a list of potential projects, and add your own. (There are some more project ideas from a brainstorming session at Sugar Camp that should be ported over; let Mchua know if you'd like to help with this.)
We would welcome help coordinating the overall effort as well; please contact Mchua if you'd like to get involved with this.
Community-building ideas
The mentoring org application includes the following questions:
- What steps will you take to encourage students to interact with your project's community before, during and after the program?
- What will you do to ensure that your accepted students stick with the project after GSoC concludes?
This is a place for brainstorming these issues.
[11:59] <mchua> homunq: we also need a general plan for how we're going to use this as a good community building tool for new developers, though that's a little vague [11:59] <mchua> homunq: stuff like "would a weekly check-in email be a good idea?" "do we require mentor meetings on IRC?" "are students mandated to blog about their work?"
Subpages
- Summer of Code//Web Confusion Anandra
- Summer of Code/2009
- Summer of Code/2009/Groupthink
- Summer of Code/2009/Marbles
- Summer of Code/2009/Multimedia-broadcasting
- Summer of Code/2009/Print Support
- Summer of Code/2009/Robots
- Summer of Code/2009/Sugartitanium
- Summer of Code/2010
- Summer of Code/2010/Abstract Browser
- Summer of Code/2010/Adaptive UI Framework for Different Age Groups
- Summer of Code/2010/Improved Sugar on a Stick
- Summer of Code/2010/Insights
- Summer of Code/2010/Integration of LDTP with Sugar
- Summer of Code/2010/Language Primer
- Summer of Code/2010/Organization Application
- Summer of Code/2010/Peaceful Revolution
- Summer of Code/2010/Pippy improvements
- Summer of Code/2010/Robotics For TA
- Summer of Code/2010/Video Audio Conference Activity
- Summer of Code/2010/speech-recognition
- Summer of Code/2011
- Summer of Code/2012
- Summer of Code/2012/autorpmgen
- Summer of Code/2013
- Summer of Code/2013/Application
- Summer of Code/2013/MusicKeyboardRecording
- Summer of Code/2013/Open Video Chat
- Summer of Code/2013/Project sharing website
- Summer of Code/2013/Social Sugar
- Summer of Code/2013/Social Sugar project
- Summer of Code/2013/Social Sugar project/Documentation
- Summer of Code/2013/Translation Server
- Summer of Code/2013/Turtle Blocks Python export
- Summer of Code/2013/Turtle Blocks Python export project
- Summer of Code/2013/moksaya
- Summer of Code/2014
- Summer of Code/2014/Activity Unit Tests
- Summer of Code/2014/Amar
- Summer of Code/2014/AnaBalica/Social Help
- Summer of Code/2014/AnubhavJ/
- Summer of Code/2014/AnubhavJ/Turtle Art 3D
- Summer of Code/2014/Cordova Container for Sugar
- Summer of Code/2014/Etoys Touch UI
- Summer of Code/2014/Gp94/Activity Unit Tests
- Summer of Code/2014/Hack a stuffed animal
- Summer of Code/2014/Improved Imageviewer
- Summer of Code/2014/Javascript Collaboration For Sugar
- Summer of Code/2014/Music Keyboard Enchancements
- Summer of Code/2014/Physical Etoys XO Bundle
- Summer of Code/2014/Port to Python3
- Summer of Code/2014/Prasoon2211/Social Help
- Summer of Code/2014/Proposal name
- Summer of Code/2014/Proposal to port sugar core to python3
- Summer of Code/2014/Smagnin/Music Suite
- Summer of Code/2014/Smart Sugar
- Summer of Code/2014/Sugar Listens
- Summer of Code/2014/Travis Irby Proposal
- Summer of Code/2014/Voice Recognition Engine
- Summer of Code/2014/Your Proposal
- Summer of Code/2014/ayush/js-collaboration
- Summer of Code/2014/bliss-sid/Voice-interface
- Summer of Code/2014/blogs
- Summer of Code/2014/bulletinboard
- Summer of Code/2014/curiousguy13/Bulletin Board
- Summer of Code/2014/curiousguy13/Port To Python3
- Summer of Code/2014/milestones
- Summer of Code/2014/native/Bulletin Board
- Summer of Code/2014/port-to-python3
- Summer of Code/2014/rohitshetty/turtle art 3d
- Summer of Code/2014/sugar cordova
- Summer of Code/2014/testing sugar activities
- Summer of Code/2015
- Summer of Code/2015/Abacus JS
- Summer of Code/2015/Abhishek
- Summer of Code/2015/Anindya:WebConfusion
- Summer of Code/2015/Beyond Flashcards Programming to Read JS
- Summer of Code/2015/GIT.JR
- Summer of Code/2015/ImageViewerJS
- Summer of Code/2015/ImageViewerJSshrey
- Summer of Code/2015/Image Viewer JS
- Summer of Code/2015/Interactive JS Shell
- Summer of Code/2015/Interactive JS Shell Richa
- Summer of Code/2015/Ishan:Turtle Blocks 3D JavaScript
- Summer of Code/2015/Javascript Shell
- Summer of Code/2015/Kiran P S/Developing Cordova Plugins for Sugar Cordova Container
- Summer of Code/2015/Kushan ImageViewer Phototoons
- Summer of Code/2015/Kushan Javascript
- Summer of Code/2015/Li Sichen/Music Blocks
- Summer of Code/2015/MusicBlocks
- Summer of Code/2015/Objective Question Module
- Summer of Code/2015/Pointy
- Summer of Code/2015/RedesignWebCollaboration
- Summer of Code/2015/Sugar JS Ports
- Summer of Code/2015/TurtleBot
- Summer of Code/2015/Turtle Blocks 3D Javascript
- Summer of Code/2015/Turtle Blocks export as Javascript
- Summer of Code/2015/Turtle Blocks for in-line programming
- Summer of Code/2015/WebCollaboration Redesign
- Summer of Code/2015/WebConfusion
- Summer of Code/2015/Web Confusion
- Summer of Code/2015/Web Confusion/Nii Lante
- Summer of Code/2015/Web Confusion Mandeep
- Summer of Code/2015/Web Confusion Rajdeep
- Summer of Code/2015/Web Confusion Sanchit
- Summer of Code/2015/YOUR-PROPOSAL-TITLE
- Summer of Code/2015/game using pygame
- Summer of Code/2015/git backend alex
- Summer of Code/2015/git backend shaifali
- Summer of Code/2015/kvasnyk Turtle Blocks 3D Javascript
- Summer of Code/2015/mohayon.SugarWebBasicActivitySet
- Summer of Code/2015/n0x3u5:WebConfusion
- Summer of Code/2015/nilmadhab
- Summer of Code/2015/none
- Summer of Code/2015/webconfusion Roshan
- Summer of Code/2016
- Summer of Code/2016/BeyondFlashcardsProgrammingtoReadJS
- Summer of Code/2016/GitBackend
- Summer of Code/2016/Journal Rethink
- Summer of Code/2016/LearnForFun
- Summer of Code/2016/MusicWidgets and MusicBlocksChallenges
- Summer of Code/2016/Nutritional Microworld
- Summer of Code/2016/Redesign and recreate Sugar Labs webappearance
- Summer of Code/2016/Redesign and recreate sugarlabs web appearance
- Summer of Code/2016/Redesign and recreate suugarlabs web appearance
- Summer of Code/2016/SugarJournalSaveOption UtkarshT
- Summer of Code/2016/SugarLabs Websites Redesign
- Summer of Code/2016/Sugar Journal backup and restore
- Summer of Code/2016/SugarizerActivitySet
- Summer of Code/2016/SugarizerOS
- Summer of Code/2016/Sugarizer Activity Set
- Summer of Code/2016/Sugarizer OS
- Summer of Code/2016/Sugarizer Server Dashboard
- Summer of Code/2016/TeachingKidstoCode
- Summer of Code/2016/TurtleConfusion FlagJS
- Summer of Code/2016/Turtle Confusion/Flags JS
- Summer of Code/2016/beyondFlashCards
- Summer of Code/2017
- Summer of Code/2018
- Summer of Code/2018/Archive
- Summer of Code/2018/Going Beyond Equal Temperament in Music Blocks
- Summer of Code/2018/Just say no to GTK2
- Summer of Code/2018/Making a Beginner Guide
- Summer of Code/2018/Music Blocks Widget Improvements
- Summer of Code/2018/Sugar Labs Social
- Summer of Code/2018/Sugarizer Exerciser Activity
- Summer of Code/2018/Sugarizer School box
- Summer of Code/2018/attentive migration of wiki activity pages to git
- Summer of Code/2019/Meeting Notes/19-08-19
- Summer of Code/Application review notes
- Summer of Code/Contacts
- Summer of Code/Developing Cordova Plugins for Sugar Cordova Container
- Summer of Code/Dinuka Tharangi
- Summer of Code/Getting Involved
- Summer of Code/InteractiveJavascriptShell
- Summer of Code/Interviews
- Summer of Code/Jatin Dhankhar
- Summer of Code/Meetings
- Summer of Code/Mentors
- Summer of Code/PhysicalEtoysXObundle
- Summer of Code/Prachi Agrawal
- Summer of Code/Raphael Teyssandier
- Summer of Code/Resources
- Summer of Code/Rishabh Thaney
- Summer of Code/Roadmap
- Summer of Code/SL application
- Summer of Code/Sanjay Kumar
- Summer of Code/Seetarama Raju
- Summer of Code/Student application template
- Summer of Code/Sugarizer Server Dashboard
- Summer of Code/Tarun Kumar Singhal
- Summer of Code/Tayba Wasim
- Summer of Code/Template
- Summer of Code/Template/TurtleBot
- Summer of Code/Turtle Confusion Flag JS
- Summer of Code/Zeeshan Khan
- Summer of Code/abhishekkaushik