Development Team/Project Ideas

From Sugar Labs

Jump to: navigation, search

Introduction

This page contains a list of project ideas. For now, the focus is on giving GSoC students an idea of the kind of thing we're looking for. Summer of Code applicants should also visit Summer of Code/Resources.

At the bottom of this page is a section for less-explicitly-explained & wild ideas.

Summer of Code

Priorities: see the ongoing discussion of priorities on our mailing list. To summarize that thread: the highest priority is for you to have a successful GSoC, which should bias you towards easier projects such as #Stand-alone activities. But, if we had to rank this list in terms of priorities for Sugar, the #AJAX Sugar aka Karma and #Versioned Datastore ideas are probably our highest priorities, followed by the rest of the #Toolkits / Frameworks for developers. These are generally hard, though, so we would need you to give us evidence that you are capable, in order for us to accept you for these ideas.

See something that interests you? (steps to apply)

To get in, you will need to design your project and find a mentor. On irc (#sugar on freenode) or the sugar-devel mailing list, you can briefly introduce yourself, state your interest, and ask relevant and specific questions about the state of the existing code. You should also do your own research for other open-source code that might help you. Get a development environment installed. We definitely appreciate it if you can show your readiness to help out - either joining bug squad and helping to triage, or actually helping fix some small bug (we've categorized some bugs as "sugar-love", which means, not that they are easy to fix, but that they are good for beginners because they don't require much expert knowledge).

When you're ready, figure out a very basic, preliminary design (where does your new UI fit in? what about the code - what talks to what?) and post that to the mailing list, asking if anybody would be willing to mentor you. You will almost certainly get some response, but you may not find a prospective mentor right away. That's OK. If your idea is really not a good fit for us, we will let you know; otherwise, remember that several mentors are holding back for now to see which projects show the most feasibility, clarity, and creativity in their design ideas. Persistence should pay off.

Want to apply with an idea not on this list? That's fine. Read the thread linked above about priorities - and remember, our highest priority is for you to have a successful GSoC, and we hope that you will want to continue to contribute afterwards. Do the steps above, paying particular attention to getting some community members' opinions on whether your idea would be valuable. The "iaep" mailing list may be the best venue for this. We will not all agree with each other about how important your idea is - that's normal - but our feedback will almost certainly help you refine your idea.

Contents

Template for well-explained ideas

If a project that interests you lacks a "potential mentor" here, or you want to know more about the current status of the related code, we would be happy to help guide you on irc (#sugar on freenode) or mailing lists (technical questions to sugar-devel@lists.laptop.org, educational/general ones to iaep@lists.laptop.org).


==== Project title ====
A quick explanation of the project idea
* Priority for Sugar: Low/Medium/High
* Difficulty (as a GSoC project): Easy/Medium/Advanced
* Skills needed: Experience with WikiCode and copy-paste.

Project Ideas

Core Software

Versioned Datastore

We would not expect a GSoC project to be necessarily ready to check into our trunk. For instance, you could avoid facing the issue of automated pruning of old versions for disk space, or not have a converter for existing datastores. However, it should work as a proof-of-concept with a variety of activities.

Note: the work for this idea is more than halfway done. The olpcfs2 virtual file system linked above is working, supporting versions and metadata; all you need to do is a UI and an index/searching mechanism on top of that. And even if your indexing mechanism is just brute-force-search each-time, sure, it will be too slow for real use, but we can take it from there, as long you have a working proof-of-concept UI.

Implement existing UI design proposal

Look at Design_Team/Designs and Design_Team/Proposals, choose a proposal in one of those, and implement it. Obviously, you need to investigate existing work on these by testing/playing with a current jhbuild and by talking on #sugar.

Registry for people

Extend the interaction model to include real people beyond the user–laptop couple. This would extend the virtual network to include some very significant entities, such as family members, who may not have a physical computing device. See the suggestion submitted by User:Skua. The olpc:Record Activity could be used as a fun, instance-of-person creator and embellisher, by capturing an image or video of the person, and linking it to a new registry.

Lots of extensions are possible, following a good, fundamental design

Toolkit for dissimilar activity collaboration

Extend the collaboration model to include interconnection between different activity types. People are trying to share data collected with Measure with spreadsheets or Write or TamTam or Colors! Allow one user's activity to feed a community of collaborators performing different processes on the broadcast output. Allow different activities to run simultaneously in a distributed multi-tasking model, on one or more computers. See OLPC:Activity sharing and OLPC:Low-level Activity API for some essentials.

The toolkit would encapsulate the low-level interface to allow activity developers to easily deploy distributed task collaboration.

Extra extra credit for extending the model to general web browsers and web-enabled cell phones. Sugar web collaboration—a Honeycomb.

See this thread for a discussion of the need and some issues, http://www.mail-archive.com/sugar-devel@lists.sugarlabs.org/msg02870.html

Speech Synthesis for Sugar

Integrate speech synthesis with all activities, not just Speak, and provide for karaoke coloring. See Mokurai's article on adapting olpc:Same Language Subtitling for literacy to the XO.

Desirable Features for Sugar Speech Synthesis Plugin:

Print Support

Print support in Sugar would be useful in many scenarios. The ideal project deliverables would include

comments
Suggestion: See Printing_Culture. Oops, note screen-grabbing already exists -
There is already screen-grab support built into Sugar. Alt-1 puts a copy of the current screen into the Journal as a PNG file. --Walter 13:03, 31 January 2010 (UTC)

Sugar Toolbar submenu support

The Sugar Human Interface Guidelines have a toolbar design that includes submenus (See Toolbar designs). The project would be to extend the existing Toolbar widget to include this new feature and then to work with a few Activity developer to incorporate the new design into their Activities. Possible candidate activities include Paint and Turtle Art.

Port of Sugar to Pyjamas-Desktop

A platform-independent reimplementation of PyGTK and PyGObject which utilises Pyjamas-Desktop to implement (near-)identical PyGTK widgets. A proof-of-concept which can be used as the basis has already been completed - the Llpamies branch of pyjamas and merged into the current pyjamas infrastructure. A transparent split of the SUGAR Activity infrastructure from the GUI front-end display code (along MVC lines) by using overrides of the python "__import__" method, adding in an RPC mechanism (JSONRPC recommended). Again, the Llpamies branch has already achieved this and provides the basis and inspiration. For example, any pyjamas applications which had "import md5": in the llpamies branch actually resulted in JSONRPC calls of any "md5" module methods, which were actually executed SERVER-SIDE.

The consequences of providing this level of abstraction are quite startling: not only would it be conveniently and easily possible to install Sugar onto Win32 platforms (thanks to the MSHTML Pyjamas-Desktop port) but also it would be possible to have all the benefits of a client-server architecture. Thanks to the nature of the Pyjamas API, that would be an extremely _rich_ "client", including being a web browser client. Also, you get "remote desktop" functionality "for free". i.e. thanks to the client-server architecture, a student can publish their work via the server (running on their

The work involves:


Toolkits / Frameworks for developers

AJAX Sugar aka Karma

Create a proof-of-concept learning multimedia Sugar activity using javascript and html5 (for instance, Titanium-made apps). This activity should have animation, audio, persistent storage of user progress, and at least basic integration with the Sugar environment. For more information see the Karma wiki page.

JavaScript/Sugar Communication through the following strategies: PyXPCom, hulahop, xulrunner or Titanium. see also the mailing list discussion. The preferred solution should use a minimalist rendering engine like Webkit and a toolset for local file access like Google Gears. Such a solution would have much less overhead than embedding all of mozilla. For the moment we are focusing on Titanium.

There is some discussion of the prior work on this question at User:Wade/Web_Activity_Spec.

SWF Sugar

Improve Develop activity

There are several improvements that would make the Develop activity a more attractive IDE. Any ONE of these would be a good GSoC project.

"Translate Activity" activity

We will never finish localizing all our activities and base software for all our deployments - especially for places with high linguistic diversity like Afghanistan, Peru, Guatemala. So it would be great if there were an easy, discoverable way to translate any string on your machine; have the translation appear on your own machine immediately; and, assuming the activity has a link to a Pootle project, upload that translation to a Pootle server later. (For real-world use, these uploads would probably have to be cached at the school server level, but that is more complexity than we'd expect from a GSoC project.) Virtaal might be a good starting point for the UI.

SugarGames Pygame wrapper

The OLPCGames wrapper allows Pygame to run inside of GTK in Sugar, making Pygame based Activities possible. However, the wrapper is geared specifically for use on the XO-1, and does not necessarily reflect the modern reality of running Sugar on diverse hardware. It also does not allow for the use of other GTK Widgets in the Activity, restricting developers from adding UI features like pop up query boxes. This project would involve porting OLPCGames or writing a Pygame wrapper from scratch that would allow Pygame to run in GTK while still enabling the use of GTK UI elements. It would also involve making GTK events and other relevant parts of the Sugar API available to Pygame Activities.

Generic linux application wrapper

Improve the ability to launch legacy Linux applications (or Windows applications in WINE) from inside Sugar. The issues are our window manager, our datastore/file system, and our security model (Rainbow). Basically, you'd have to fake all of these from one side or the other so that an average legacy app could live with Sugar.

This is a priority for sugar, and there is significant prior art and design thought. The first part of your job would be to search this wiki, the laptop.org wiki, and old mailing list archives for OLPC and Sugarlabs, and talk on IRC, to settle on a good design. Because of this, we'd consider accepting a strong application even if it left some design questions open; but it would have to at least suggest some basic shortcuts you'd take to make the task feasible, and argue why these shortcuts would leave acceptable usability.

Stand-alone activities

Improved Read activity

Use Gecko to implement a reader for epub format ebooks. This is superior to PDF because such books can be reflowed to better fit the screen and user preferences. Also, (although it would break the standard) it would make it very simple to include AJAX-style active features to books.

Extra credit if you support textual and graphical annotation. Deployments have also asked for a page-turn animation. See also ml.

Listen Spell activity

This activity has been last year GSoC project. Its code can be found here. Extending it activity wrt to following points

KDEEdu

Sugarize any KDEEdu activity, especially the ones which have no corresponding Sugar activity. The issue is that Kdeedu uses qt, while sugar uses gtk; the student would propose a reasonable solution to this issue (see Talk:KDEEdu for one idea). It is doubtful that the whole sugarization process could be automated, so you'd probably just do one activity.

Educational Toolkit

Either based on the existing educational toolkit, or starting from scratch, enable XO use in classroom scenarios. Such scenarios could include

The low-hanging fruit on Educational Toolkit is the following:

Improved Imageviewer

Implement missing bits in Imageviewer, some of which are

There are more things that can be implemented, but the above are the basic minimum one should try to implement.


EduKT

Simple content - history creation tool that needs:

A lot of new features that simplifies to any level the building of interactive contents...

Port LopArt to Sugar

Subject:  	humbly introducing... LopArt: a Visual Arts Software that would fit perfectly with the XO
Date: 	Tue, 29 Jan 2008 12:39:34 -0500
From: 	ariel savion-lemieux <ariel@loplop.com>

Hello,

We have recently made the purchase of an XO Laptop. We believe in the
project and would like to contribute to it in our own way.

LopLop Inc. has worked in the software industry for more than a decade, and
has developed a couple of drawing applications geared toward children.

LopArt is a visual arts software that emulates real drawing strokes and
styles (it beats TuxPaint out of the water J). Those who work with children
are seduced by the simplicity of LopArt, as well as by the originality and
creativity it allows. Whether it is used during free-time or for structured
learning activities and projects, LopArt is a highly stimulating learning
tool. It is present in more the 500 schools in Quebec alone. Examples of
LopArt artworks can be seen on the LopArt Virtual Museum – it contains more
than 40,000 artworks (www.lopart.org). LopArt was developed for all
platforms, and is in open-source on Linux.

For these reasons and plenty more, we would like a chance to present LopArt
to XO members, since we believe it would be a great fit in the XO software
family.

If possible, please direct our request to the appropriate party. If you have
questions or comments, do not hesitate to contact us.


Regards,

The LopLop Team

----------------------

Ariel Savion-Lemieux, LopLop
Project Manager / Chargé de projet
Telephone: 514.543.5849

Bug report activity

activity for bug reports

Etc., Etc.

It should not be hard at all to imagine educational activities or games which would be useful for primary or secondary school education. Let your imagination run wild!

Brainstorm / unexplained ideas

Visual geometric (e.g. linear bar, QR(matrix)) code recognition

Robust, poor-man's alternative to OCR. These codes are used to track physical items, point at their use manuals, etc. Input devices: (for OLPC) integral camera; one-dimensional scanner like CueCat . Some software already exists: Open Source QR Code Library. (All camera cellphones in Japan bundle this function.)

Sugar adaption for the Nasa

One of the 91 indigenous cultures that still exist in Colombia is the Paez people (aka Nasa). They have their own traditions, customs, world view, mother tongue (Nasa Yuwe), i.e. their own culture. It could be possible to take cultural elements into the Sugar Interface, not only language, to provide Nasa children a suitable and familiar interface. Santiago 18:01, 8 March 2008 (EST)

Core Software

Homework turn-in

[10:18] <homunq> If you'd rather something with PHP in it, I'd recommend the homework turn-in one. That one's really poorly documented. Basically, the steps are:

[10:18] <homunq> 1. figure out a plan for including sugar metadata in the html download links from moodle

[10:19] <homunq> 2. when downloading an assignment, put metadata of "send this back to adress xxx in server"

[10:20] <homunq> 3. When saving new, worked-on versions of the assignment, mark them for upload to the server

[10:22] <homunq> 4. when you see the server, and the homework deadline is not past, the sugar core automatically uploads the latest version. You could decide to use SMTP upload (already somewhat implemented in moodle) or something else like rss or REST or whatever.

[10:22] <homunq> any questions, happy to clarify.

Research projects: unpolished code

Java

Package and integrate the IcedTea open source bootstrap of OpenJDK Java with browser plugin for the XO. Deliverables would include:

(This is just to get Java into the build. Creating an application framework would come later.)

Graphical toolkit

Important work left to do:

Frameworks/Toolkits

Mono/.NET

The use of Mono could really enhance the number of Sugar developers due to the huge existing .NET community. Thanks to Torello Querci, developing a Sugar activity in Mono is already possible using the Mono/Sugar bindings Sugar.dll (more on Mono on Sugar here).

The idea for this GSOC project is to greatly enhance this binding:

More on this idea:


Activities

VideoChat activity

telepathy-python has support for audio and video streaming and has recently gained support for using gstreamer, which means that we could easily do efficient videoconferencing using fully open source codecs.

So a really nice project would be to do a proper Sugar activity for video conferencing.

Language Trainer

A language trainer with text to speech support would be very nice. Something that could start with letters and then teach words.

Thesaurus

Working together with openthesaurus -- someone could create a thesaurus for kids to learn different words (synonyms and antonyms)

Logo Activity

Logo is a computer programming language used for functional programming. It is an adaptation and dialect of the Lisp language; some have called it Lisp without the parentheses. Today, it is known mainly for its turtle graphics, but it also has significant facilities for handling lists, files, I/O, and recursion.
Logo was created for educational use, more so for constructivist teaching, by Daniel G. Bobrow, Wally Feurzeig and Seymour Papert. It can be used to teach most computer science concepts, as UC Berkeley Lecturer Brian Harvey does in his Computer Science Logo Style trilogy. — Wikipedia article on the Logo programming language

There is a "Sugarized" Logo—UCB Logo—but it does not record data into the Journal or use the standard Sugar toolbar.

There are two possible approaches we could take: (1) digging deeper into UCB Logo and (2) working with another Logo, possibly PyLogo.

twext

Twext es un idea para ayudarnos a aprender lenguajes.
twext     is   an   idea    to       help us          to learn          languages
El software Twexter ya tiene un demo que maneja
twexter software                  now  has      ¡alpha!       that   works with
el UniCode para que twexteamos en muchas idiomas.
global text       so that  we can twext             in   many        languages
* kids teach kids
* alpha demo
* moodle me
* mediawixi
* twext
* code
this fixed font twext 'roughly' aligns when you CTL+ or CTL- to adjust font size :)

Other ideas for improving Sugar Activities

Broad project ideas

Activities Site (addons)

Packaging for specific distros

Debian

Hello there, I am quite interested in Debian and want to help with this and all other projects. Please contact me (bjoern AT xruby DOT net) if I can be of assistance to the XO project or other things. I will start my PhD studies in April and have previously studied Computer Science. I am highly interested in helping where I can and want to bring the necessary technology to kids around the world.

from olpcwiki 2008

Preeti's list

Hi, I am Preeti, from New Delhi. I would like to get myself involved in this very interesting aspect of the OLPC software development. I have jotted some of my views on the same at:

http://wiki.laptop.org/go/User_talk:59.178.99.172

Personal tools
Namespaces
Variants
Actions
Sugar
Teams
Projects
Local Labs
Using the Wiki
Google Translations