<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rafael+sisto</id>
	<title>Sugar Labs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rafael+sisto"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/Rafael_sisto"/>
	<updated>2026-06-10T03:11:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2013&amp;diff=87095</id>
		<title>Summer of Code/2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2013&amp;diff=87095"/>
		<updated>2013-04-01T13:31:49Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: /* GTK wrapper library for Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Summer of Code/2013/Application|A draft copy of our application]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: We need to freeze this page as of 29 March 2013 until Google decides our fate. Please don&#039;t add new project ideas until after 8 April.&lt;br /&gt;
&lt;br /&gt;
= Project candidates =&lt;br /&gt;
&lt;br /&gt;
A list of projects potential participants might contribute within GSoC program.&lt;br /&gt;
&lt;br /&gt;
;Note:Potential mentors, please feel free to add ideas to this list. Also, feel free to add your name to a project you&#039;d be willing to co-mentor.&lt;br /&gt;
;Note:Potential students, more project ideas can be found on our [[Features]] page.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Sugar Core ==&lt;br /&gt;
&lt;br /&gt;
=== Sugar Framework for writing activity in full HTML5 ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sugarhtml5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
The objective is to develop a JavaScript framework allowing to write Sugar activities in full HTML5/JavaScript. The framework will expose to JavaScript an API to call Sugar features:&lt;br /&gt;
* Journal/Datastore,&lt;br /&gt;
* Collaboration/Telepathy,&lt;br /&gt;
* Toolbar handling,&lt;br /&gt;
* Sugar look&amp;amp;feel - for example via a CSS style sheet usable on HTML controls&lt;br /&gt;
* Access to Sugar settings (buddy name, colors, current language, ...),&lt;br /&gt;
* View source.&lt;br /&gt;
Like PhoneGap/Cordova, the framework will come with a template to develop and package easily a new HTML5 activity. A basic tutorial will be include too.&lt;br /&gt;
The work could be inspired by the work done with Enyo Framework in [http://booki.flossmanuals.net/make-your-own-sugar-activities/_draft/_v/1.0/developing-sugar-activities-using-html5/ 1]. By the way, the resulting framework should be JavaScript framework agnostic (no need for jQuery, Enyo, ...).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mentor&#039;&#039;: [mailto:lionel@olpc-france.org Lionel Laské]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-Mentor&#039;&#039;: Daniel Narvaez&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to learn from touching almost every corner of an advanced system.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll greatly expand the reach of the project by opening the door to JavaScript programmers. Plus it will force us to clean up our APIs.&lt;br /&gt;
&lt;br /&gt;
=== Unified journal view ===&lt;br /&gt;
&lt;br /&gt;
Rather than viewing the details of a Journal entry on a separate page, the idea is to make the details appear in an expandable in-line format on the main Journal view. The look and feel would be more like Google+ or Facebook. Performance will be a major challenge.&lt;br /&gt;
&lt;br /&gt;
[[File:Journal-02.jpeg|300px]]&lt;br /&gt;
&lt;br /&gt;
This project requires some working knowledge of the low-level Sugar Journal and datastore code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to exercise both design/UI and programming skills&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Long-overdue feature that will make this core Sugar feature more visible and appealing to our users&lt;br /&gt;
&lt;br /&gt;
=== Plugin support ===&lt;br /&gt;
&lt;br /&gt;
A number of activities, notably [[Activities/TurtleArt#Plugins|Turtle Art]], are supporting plugins -- the ability to extend features by downloading additional modules. However, [[Activities/TurtleArt#How_to_install_a_plugin|the mechanism for installing plugins]] is anything but friendly. It would be nice to design a uniform plugin bundle type and modify the activity installer to recognize this new type. Caveats include dependencies -- presumably the plugin would take care of that -- and version control -- plugins are often incumbent upon a specific version of an activity. [http://activities.sugarlabs.org ASLO hosting]] should also be considered.&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor: &#039;&#039; [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to touch lots of code&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: A simple way to develop and deliver customizations to activities and Sugar itself. Sugar can remain simple and stable, while the extensions can be more of a play ground for new ideas&lt;br /&gt;
&lt;br /&gt;
=== PackageKit control panel plugin for Distribution Activity/OS installs/updates ===&lt;br /&gt;
&lt;br /&gt;
The updates Control Panel only deals with updating of user installed Activities and is badly broken with Sugar 0.98. PackageKit is a universal interface to a number of packaging standards (rpm/deb etc.) used by a number of distributions. It can work with Fedora/OpenSuse/Debian/Ubuntu and others so provides a single packaging interface to multiple distributions. &lt;br /&gt;
&lt;br /&gt;
By interfacing with the distribution&#039;s packaging interface the user can be displayed with a list of all installed and available Sugar Activities available in the distro, apply Activity and OS updates to their system or install new ones. It allows the distro to have available their Activity set that has been tested and QAed on their platforms.&lt;br /&gt;
&lt;br /&gt;
It will also ease deployments that wish to use a central OS/Activities repository as they can configure in the OS the underlying repositories where they wish to pull the distro updates from to ensure the Sugar users only get tested and approved activities and OS updates&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: Needs Python mentor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Peter Robinson]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor: &#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to develop good integration with core OS infrastructure and core Sugar control panel code.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: A simple way to deploy new and updated Activities as well as core OS improvements including updates to Sugar itself. Sugar can remain simple and stable, while the updater can help deployments or individual users on all Distributions.&lt;br /&gt;
&lt;br /&gt;
=== End-user modifications of Sugar source ===&lt;br /&gt;
&lt;br /&gt;
We have an existing mechanism for duplicating and modifying Sugar activities: a copy of the bundle can be created in ~/Activities, where it can be modified by the end user. We also have a mechanism for viewing the Sugar toolkit source, but no such convenient way for making changes without risking messing up the system. While it should be easy enough to make a duplicate copy in the user&#039;s home directory, and to change the Python paths to use the modified code, we need some mechanism -- presumably at boot -- to choose which version to run: the installed version or the modified version.&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to touch lots of code&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll come further towards our goal of enabling and encouraging our users to &amp;quot;own&amp;quot; through modification all aspects of our code.&lt;br /&gt;
&lt;br /&gt;
=== Project sharing website ===&lt;br /&gt;
&lt;br /&gt;
Create a Project Hosting Site similar to the Scratch website where kids can share the projects they have created using various Sugar Activities.  The site should foster collaboration and sharing of projects.  The Web Site should be built using a free web framework so that it can be installed at deployment sites. Some features include:&lt;br /&gt;
&lt;br /&gt;
* Ability to engage and connect with friends and classmates using various  Social Networking sites/techniques.&lt;br /&gt;
* Ability to post projects from various Sugar Activities (ex: Turtle Blocks, Etoys, Memorize, Physics, etc.)&lt;br /&gt;
* Separate landing pages for different audiences (kids, teachers, parents, etc.)&lt;br /&gt;
* Section to share kid created art from projects&lt;br /&gt;
* Ability for users to create galleries (of their own projects, favorite projects, subject specific topics, etc.)&lt;br /&gt;
* Ability to have “private classroom spaces”&lt;br /&gt;
* Tools to support community management of the site&lt;br /&gt;
* Multi-language support&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:MrSteve]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:dogi]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn more about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need more mechanisms for sharing ideas and work. This is low-hanging fruit.&lt;br /&gt;
&lt;br /&gt;
=== Social Sugar ===&lt;br /&gt;
&lt;br /&gt;
Design and Develop GUI components that can help Sugar to reflect user&#039;s social interactions from external platforms. A perfect target can be the Group-View that shows user&#039;s friends and their shared activities [http://wiki.sugarlabs.org/go/Human_Interface_Guidelines/The_Laptop_Experience/Zoom_Metaphor#Groups], but it _could_ also show social information about these friends, IE social networks or sharing platforms publications. This would also give this zoom-level added value.&lt;br /&gt;
&lt;br /&gt;
Community members are already working on the backend component to support this feature [http://lists.sugarlabs.org/archive/sugar-devel/2013-March/042055.html]. This is also a great opportunity to complement other GSoC-2013 proposals.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:tch]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: (a) Learn about Sugar&#039;s core, UI Design and web services and (b) interact with community members and other GSoC participants.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Social interaction is a key element in the learning process, therefore we should promote this.&lt;br /&gt;
&lt;br /&gt;
=== Sugar as a Service website ===&lt;br /&gt;
&lt;br /&gt;
Create a Site for managing multiple &amp;quot;Sugar in a Browser&amp;quot; sessions like [https://one.treehouse.su/gar treehouse] or [http://cscott.net/junk/ta-broadway.png broadway gnome]&lt;br /&gt;
Some features include:&lt;br /&gt;
* Ability of integration of [https://chrome.google.com/webstore/detail/gbchcmhmhahfdphkhkmpfmihenigjmpp Chrome Remote Desktop]&lt;br /&gt;
* Ability to share or to allow other user watch this session&lt;br /&gt;
* Ability to scale the infrastructure onto local (virtualbox}, private (kvm) and other public clouds (http://fedoraproject.org/wiki/Cloud_SIG, http://xvm.mit.edu/ or http://cloud.ubuntu.com/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:dogi]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn more about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need to reach out to people who are not yet comfortable with virtual machines et al. by developing less invasive mechanisms for distributing Sugar.&lt;br /&gt;
&lt;br /&gt;
=== Implement help mechanism for activities using Mallard ===&lt;br /&gt;
&lt;br /&gt;
[http://projectmallard.org/ Mallard] is a mark-up language that makes it easy to provide user help. It would be a nice feature to add Mallard-like help to activities, accessed through a mechanism similar to the view source mechanism. We need to sort through two issues: integration into Sugar and integration into our i18n / L10n system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about lots of cool tools.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Most of our help is in the wiki and in English. This will enable us to reach our users more directly and in their first language.&lt;br /&gt;
&lt;br /&gt;
=== Activity Development Framework ===&lt;br /&gt;
&lt;br /&gt;
This framework should allow to:&lt;br /&gt;
* Make toolbars from factories removing many lines of code.&lt;br /&gt;
* Start a project through typing a command.&lt;br /&gt;
* Doing collaboration easier to implement.&lt;br /&gt;
* Any other work which makes the development process hard and can be framed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-Mentor&#039;&#039;: [[User:Ignacio_Rodríguez]]&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn to articulate to others how to do something useful.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We don&#039;t provide enough support for our developers. Time to address that deficiency.&lt;br /&gt;
&lt;br /&gt;
=== ASLO Enhancements ===&lt;br /&gt;
&lt;br /&gt;
The current [http://activities.sugarlabs.org/ Activity Library] is based in an old version of the [http://addons.mozilla.org/ Mozilla Add-ons Library].&lt;br /&gt;
&lt;br /&gt;
This project is divided in three parts:&lt;br /&gt;
&lt;br /&gt;
* Update the old platform and have the corresponding modifications to distribute Sugar Activities instead of Mozilla Plugins.&lt;br /&gt;
* Add an activity manager to the control panel. Allowing the installation/update of activities from ASLO.&lt;br /&gt;
* Add to the Sugar Bundle Builder a way to auto-upload activities to ASLO.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:RafaelOrtiz]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Our &amp;quot;app store&amp;quot; is not as accessible as it needs to be.&lt;br /&gt;
&lt;br /&gt;
=== GTK wrapper library for Android ===&lt;br /&gt;
&lt;br /&gt;
Sugar Activities uses the PyGTK library which is a binding for GTK. Android doesn&#039;t have GTK and porting GTK to Android is very complicated due to the difference in the user space of GNU/Linux and Android.&lt;br /&gt;
&lt;br /&gt;
The objective of this task is to develop a wrapper library of [http://www.pygtk.org/ PyGTK] that expose the same API but invoke equivalent methods in a Android graphic library like [http://kivy.org/#home Kivy]. The student only have to implement the minimal set of methods that allows to run the [http://activities.sugarlabs.org/en-US/sugar/addon/4418 hello world activity] which is the more basic sugar activity.&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Andres_Aguirre]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Walter]] [[User:Rafael sisto]]&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: (a) Learn about Android graphic libraries and Python programming in Android&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: This will be the first step to have a framework for porting Sugar Activities to Android with a minimal impact in the actual code of the activity. Also will help outside the Sugar community being a quick method for porting GTK applications to Android&lt;br /&gt;
&lt;br /&gt;
== Sugar Activities ==&lt;br /&gt;
&lt;br /&gt;
=== Write Turtle Blocks in Turtle Blocks ===&lt;br /&gt;
&lt;br /&gt;
In support of making Sugar as transparent and fungible as possible, we&#039;d like to make it not just Free, but provide affordances for end-user modifications. Turtle Blocks is a possible stepping stone towards that end: a programming environment approachable by children as young as five-years old. So as a first step, let&#039;s write Turtle Blocks in Turtle Blocks. From that experience, we&#039;ll hopefully know how to approach the more general Sugar problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;:Tony Forster&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Lots of good Python hacking involved&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll learn how far we can push on the idea that end users *can* modify code.&lt;br /&gt;
&lt;br /&gt;
=== Python export functionality for Turtle Blocks ===&lt;br /&gt;
&lt;br /&gt;
A goal of Turtle Blocks is not just to get children programming, but to launch them out of block world into text-based languages where they can develop more sophisticated programs. While Turtle Blocks is written in Python and can be extended by importing Python modules, it currently exports only in its native block language and in Logo. For this project, we&#039;d want to enable a Python export option so that programmers can take their Turtle projects and extend them into full-fledged Python projects. The hypothesis is that this would lead more children to grow their programming skills beyond simple block programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: Tony Forster&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Lots of good Python hacking involved&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll have a vehicle for studying whether or not we can bring students of programming from block worlds to text-based programming and debugging.&lt;br /&gt;
&lt;br /&gt;
=== Portfolio videos ===&lt;br /&gt;
&lt;br /&gt;
Working with the maintainer of [[Activities/Portfolio|Portfolio]] to add a mechanism for exporting .ogv (voice over still images) of a portfolio presentation. This is a request that has come from deployments: they&#039;d like to be able to post videos of student work, which is currently available as a slide show with audio voice-over.&lt;br /&gt;
&lt;br /&gt;
[[File:Portfolio-Tool.png|300px]]&lt;br /&gt;
&lt;br /&gt;
A working knowledge of Python and some gstreamer skills are a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn how to master GStreamer&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need more vehicles of expression for our users. Video tools are to scare in Sugar.&lt;br /&gt;
&lt;br /&gt;
=== Implement collaboration in Paint Activity ===&lt;br /&gt;
&lt;br /&gt;
Paint Activity does not implement collaboration yet. The easy part is send the mouse positions and draw in the different machines, but you need have the status of the different tools used, copy/paste operations and undo/redo. Paint is already ported to cairo and Gtk3.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about our collaboration stack&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: More shared spaces for expression is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== Add recording to Music Keyboard activity ===&lt;br /&gt;
&lt;br /&gt;
[[File:Music keyboard screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
Music Keyboard activity uses part of TamTamMini code to play sounds. Should be good add the capability of record the played sound.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about python and music libraries (csound)&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: More shared spaces for expression is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== Display notes in a score in Music Keyboard activity ===&lt;br /&gt;
&lt;br /&gt;
Should be good, show the notes played in a score to help kids to learn music reading.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about python and cairo&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Improve our expression tools is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== IRC Activity fixes ===&lt;br /&gt;
&lt;br /&gt;
* [[Activities/IRC]] is built around an all-Python IRC client, [http://urk.sourceforge.net/ Urk] which is no longer maintained since 2007. Thus, its better to port the activity to a newer and a better all-python IRC library.&lt;br /&gt;
* [[Activities/IRC]] is significantly slower than other IRC clients available on other platforms. The reason being its not multi-threaded. Thus, adding multi-threading support will be very useful.&lt;br /&gt;
* [[Activities/IRC]] is missing some useful features including sound on highlight (play a sound when the user is highlighted in a channel), user info (whois data) and many others. Look at some popular IRC clients running on other platforms and research about the features which can be added to [[Activities/IRC]] and how can they be added.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python and IRC protocol specifications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:RafaelOrtiz]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn Python and some UI design&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We use IRC as the backbone of our community discourse so we should better support it within Sugar itself&lt;br /&gt;
&lt;br /&gt;
=== Chat Activity with translation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chat.JPG|300px]]&lt;br /&gt;
&lt;br /&gt;
Above is an example of a chat where two people connected by chat could not talk to each other due to language barrier.&lt;br /&gt;
&lt;br /&gt;
The project task is to add a drop-down box that translates of the chat messages coming from another user similar to the private/shared drop-down menu shown. This could work like the #sugar / #sugar-es channels on IRC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Satellit]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about machine translation and web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: The better we can accommodate users across multiple languages, the farther we&#039;ll reach.&lt;br /&gt;
&lt;br /&gt;
=== ASL Open Video Chat ===&lt;br /&gt;
&lt;br /&gt;
Open Video Chat is an Free/Open Source video conferencing activity for the XO laptop. This project was originally started in March 2010 with funding from the National Technical Institute for the Deaf in Rochester NY.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Focus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The primary focus of Open Video Chat is to provide streaming video at frame rates that are suitable for communicating with sign language. This ends up being somewhere between 20 and 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Features&#039;&#039;&#039;&lt;br /&gt;
* 20 FPS video&lt;br /&gt;
* preview window&lt;br /&gt;
* text chat&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desired Features&#039;&#039;&#039;&lt;br /&gt;
*RTP protocol implementation&lt;br /&gt;
*faster frame rate (30+ FPS)&lt;br /&gt;
*audio&lt;br /&gt;
*higher resolution video&lt;br /&gt;
&lt;br /&gt;
IRC&lt;br /&gt;
* The contributors of Open Video Chat frequent #rit-foss on freenode&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:decause]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate/Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about gstreamer video pipelines. Learn about sugar networking stack and services (Telepathy). Learn about Python and Sugar UI.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: The Video/Text chat software is nearly complete (90%), it just needs to be ported to latest version of sugar and include new telepathy bindings.&lt;br /&gt;
&lt;br /&gt;
Source Code: [https://github.com/FOSSRIT/Open-Video-chat Github Repository]&lt;br /&gt;
Activity Page: [http://activities.sugarlabs.org/en-US/sugar/addon/4305 A.SL.O]&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
&lt;br /&gt;
=== Build Deployment Platform ===&lt;br /&gt;
&lt;br /&gt;
The Platform Team has been working on a reference Sugar + GNU/Linux distribution for XO laptops. The Sweets project has infrastructure and packages for Ubuntu, Debian and Fedora. It would be a great contribution if these could be integrated into a reference distribution for regular computers. It could be based on TOAST, SOAS, or build from a new base.&lt;br /&gt;
&lt;br /&gt;
This project would be deployed by the volunteer team in Peru.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Sebastian]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: alsroot on #sugar &lt;br /&gt;
&lt;br /&gt;
Level: Medium&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to do systems integration and curating a specialized GNU/Linux distribution for a real life deployment.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: By having a [http://wiki.sugarlabs.org/go/Deployment_Platform#Reference_distributions deployment platform] which will be consistent and robust, with an integrated feedback mechanism, Sugar community will enhance feedback loops from deployments. This will help improve Sugar at an accelerated pace.&lt;br /&gt;
&lt;br /&gt;
===Clean up Ubuntu Sugar packaging===&lt;br /&gt;
&lt;br /&gt;
[[File:Tuquito-6-jabber.png|300px]]&lt;br /&gt;
&lt;br /&gt;
We have a number of disjointed half-finished or out of date efforts to package Sugar for Ubuntu, including:&lt;br /&gt;
* https://wiki.ubuntu.com/Sugar (sugar-remix -- deprecated)&lt;br /&gt;
* http://wiki.sugarlabs.org/go/Sweets_Distribution#Installation (sweets -- Sugar 0.94)&lt;br /&gt;
&lt;br /&gt;
This task is to develop a work flow such that Ubuntu becomes part of the Sugar release process, ensuring that Sugar on Ubuntu is current.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Satellit]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: alsroot on #sugar&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about packaging&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Ubuntu is widely used and we should have our best bits bundled with it in order to reach more potential users.&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Rafael_sisto&amp;diff=87089</id>
		<title>User:Rafael sisto</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Rafael_sisto&amp;diff=87089"/>
		<updated>2013-04-01T12:18:46Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: Created page with &amp;quot;Contact: rsisto at fing.edu.uy&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Contact: rsisto at fing.edu.uy&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2013&amp;diff=87071</id>
		<title>Summer of Code/2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2013&amp;diff=87071"/>
		<updated>2013-03-31T21:28:14Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: /* GTK wrapper library for Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Summer of Code/2013/Application|A draft copy of our application]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: We need to freeze this page as of 29 March 2013 until Google decides our fate. Please don&#039;t add new project ideas until after 8 April.&lt;br /&gt;
&lt;br /&gt;
= Project candidates =&lt;br /&gt;
&lt;br /&gt;
A list of projects potential participants might contribute within GSoC program.&lt;br /&gt;
&lt;br /&gt;
;Note:Potential mentors, please feel free to add ideas to this list. Also, feel free to add your name to a project you&#039;d be willing to co-mentor.&lt;br /&gt;
;Note:Potential students, more project ideas can be found on our [[Features]] page.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Sugar Core ==&lt;br /&gt;
&lt;br /&gt;
=== Sugar Framework for writing activity in full HTML5 ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sugarhtml5.png|300px]]&lt;br /&gt;
&lt;br /&gt;
The objective is to develop a JavaScript framework allowing to write Sugar activities in full HTML5/JavaScript. The framework will expose to JavaScript an API to call Sugar features:&lt;br /&gt;
* Journal/Datastore,&lt;br /&gt;
* Collaboration/Telepathy,&lt;br /&gt;
* Toolbar handling,&lt;br /&gt;
* Sugar look&amp;amp;feel - for example via a CSS style sheet usable on HTML controls&lt;br /&gt;
* Access to Sugar settings (buddy name, colors, current language, ...),&lt;br /&gt;
* View source.&lt;br /&gt;
Like PhoneGap/Cordova, the framework will come with a template to develop and package easily a new HTML5 activity. A basic tutorial will be include too.&lt;br /&gt;
The work could be inspired by the work done with Enyo Framework in [http://booki.flossmanuals.net/make-your-own-sugar-activities/_draft/_v/1.0/developing-sugar-activities-using-html5/ 1]. By the way, the resulting framework should be JavaScript framework agnostic (no need for jQuery, Enyo, ...).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mentor&#039;&#039;: [mailto:lionel@olpc-france.org Lionel Laské]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-Mentor&#039;&#039;: Daniel Narvaez&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to learn from touching almost every corner of an advanced system.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll greatly expand the reach of the project by opening the door to JavaScript programmers. Plus it will force us to clean up our APIs.&lt;br /&gt;
&lt;br /&gt;
=== Unified journal view ===&lt;br /&gt;
&lt;br /&gt;
Rather than viewing the details of a Journal entry on a separate page, the idea is to make the details appear in an expandable in-line format on the main Journal view. The look and feel would be more like Google+ or Facebook. Performance will be a major challenge.&lt;br /&gt;
&lt;br /&gt;
[[File:Journal-02.jpeg|300px]]&lt;br /&gt;
&lt;br /&gt;
This project requires some working knowledge of the low-level Sugar Journal and datastore code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to exercise both design/UI and programming skills&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Long-overdue feature that will make this core Sugar feature more visible and appealing to our users&lt;br /&gt;
&lt;br /&gt;
=== Plugin support ===&lt;br /&gt;
&lt;br /&gt;
A number of activities, notably [[Activities/TurtleArt#Plugins|Turtle Art]], are supporting plugins -- the ability to extend features by downloading additional modules. However, [[Activities/TurtleArt#How_to_install_a_plugin|the mechanism for installing plugins]] is anything but friendly. It would be nice to design a uniform plugin bundle type and modify the activity installer to recognize this new type. Caveats include dependencies -- presumably the plugin would take care of that -- and version control -- plugins are often incumbent upon a specific version of an activity. [http://activities.sugarlabs.org ASLO hosting]] should also be considered.&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor: &#039;&#039; [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to touch lots of code&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: A simple way to develop and deliver customizations to activities and Sugar itself. Sugar can remain simple and stable, while the extensions can be more of a play ground for new ideas&lt;br /&gt;
&lt;br /&gt;
=== PackageKit control panel plugin for Distribution Activity/OS installs/updates ===&lt;br /&gt;
&lt;br /&gt;
The updates Control Panel only deals with updating of user installed Activities and is badly broken with Sugar 0.98. PackageKit is a universal interface to a number of packaging standards (rpm/deb etc.) used by a number of distributions. It can work with Fedora/OpenSuse/Debian/Ubuntu and others so provides a single packaging interface to multiple distributions. &lt;br /&gt;
&lt;br /&gt;
By interfacing with the distribution&#039;s packaging interface the user can be displayed with a list of all installed and available Sugar Activities available in the distro, apply Activity and OS updates to their system or install new ones. It allows the distro to have available their Activity set that has been tested and QAed on their platforms.&lt;br /&gt;
&lt;br /&gt;
It will also ease deployments that wish to use a central OS/Activities repository as they can configure in the OS the underlying repositories where they wish to pull the distro updates from to ensure the Sugar users only get tested and approved activities and OS updates&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: Needs Python mentor&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Peter Robinson]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor: &#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to develop good integration with core OS infrastructure and core Sugar control panel code.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: A simple way to deploy new and updated Activities as well as core OS improvements including updates to Sugar itself. Sugar can remain simple and stable, while the updater can help deployments or individual users on all Distributions.&lt;br /&gt;
&lt;br /&gt;
=== End-user modifications of Sugar source ===&lt;br /&gt;
&lt;br /&gt;
We have an existing mechanism for duplicating and modifying Sugar activities: a copy of the bundle can be created in ~/Activities, where it can be modified by the end user. We also have a mechanism for viewing the Sugar toolkit source, but no such convenient way for making changes without risking messing up the system. While it should be easy enough to make a duplicate copy in the user&#039;s home directory, and to change the Python paths to use the modified code, we need some mechanism -- presumably at boot -- to choose which version to run: the installed version or the modified version.&lt;br /&gt;
&lt;br /&gt;
Strong Python skills and experience with Sugar toolkit required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to touch lots of code&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll come further towards our goal of enabling and encouraging our users to &amp;quot;own&amp;quot; through modification all aspects of our code.&lt;br /&gt;
&lt;br /&gt;
=== Project sharing website ===&lt;br /&gt;
&lt;br /&gt;
Create a Project Hosting Site similar to the Scratch website where kids can share the projects they have created using various Sugar Activities.  The site should foster collaboration and sharing of projects.  The Web Site should be built using a free web framework so that it can be installed at deployment sites. Some features include:&lt;br /&gt;
&lt;br /&gt;
* Ability to engage and connect with friends and classmates using various  Social Networking sites/techniques.&lt;br /&gt;
* Ability to post projects from various Sugar Activities (ex: Turtle Blocks, Etoys, Memorize, Physics, etc.)&lt;br /&gt;
* Separate landing pages for different audiences (kids, teachers, parents, etc.)&lt;br /&gt;
* Section to share kid created art from projects&lt;br /&gt;
* Ability for users to create galleries (of their own projects, favorite projects, subject specific topics, etc.)&lt;br /&gt;
* Ability to have “private classroom spaces”&lt;br /&gt;
* Tools to support community management of the site&lt;br /&gt;
* Multi-language support&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:MrSteve]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:dogi]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn more about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need more mechanisms for sharing ideas and work. This is low-hanging fruit.&lt;br /&gt;
&lt;br /&gt;
=== Social Sugar ===&lt;br /&gt;
&lt;br /&gt;
Design and Develop GUI components that can help Sugar to reflect user&#039;s social interactions from external platforms. A perfect target can be the Group-View that shows user&#039;s friends and their shared activities [http://wiki.sugarlabs.org/go/Human_Interface_Guidelines/The_Laptop_Experience/Zoom_Metaphor#Groups], but it _could_ also show social information about these friends, IE social networks or sharing platforms publications. This would also give this zoom-level added value.&lt;br /&gt;
&lt;br /&gt;
Community members are already working on the backend component to support this feature [http://lists.sugarlabs.org/archive/sugar-devel/2013-March/042055.html]. This is also a great opportunity to complement other GSoC-2013 proposals.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:tch]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: (a) Learn about Sugar&#039;s core, UI Design and web services and (b) interact with community members and other GSoC participants.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Social interaction is a key element in the learning process, therefore we should promote this.&lt;br /&gt;
&lt;br /&gt;
=== Sugar as a Service website ===&lt;br /&gt;
&lt;br /&gt;
Create a Site for managing multiple &amp;quot;Sugar in a Browser&amp;quot; sessions like [https://one.treehouse.su/gar treehouse] or [http://cscott.net/junk/ta-broadway.png broadway gnome]&lt;br /&gt;
Some features include:&lt;br /&gt;
* Ability of integration of [https://chrome.google.com/webstore/detail/gbchcmhmhahfdphkhkmpfmihenigjmpp Chrome Remote Desktop]&lt;br /&gt;
* Ability to share or to allow other user watch this session&lt;br /&gt;
* Ability to scale the infrastructure onto local (virtualbox}, private (kvm) and other public clouds (http://fedoraproject.org/wiki/Cloud_SIG, http://xvm.mit.edu/ or http://cloud.ubuntu.com/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:dogi]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn more about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need to reach out to people who are not yet comfortable with virtual machines et al. by developing less invasive mechanisms for distributing Sugar.&lt;br /&gt;
&lt;br /&gt;
=== Implement help mechanism for activities using Mallard ===&lt;br /&gt;
&lt;br /&gt;
[http://projectmallard.org/ Mallard] is a mark-up language that makes it easy to provide user help. It would be a nice feature to add Mallard-like help to activities, accessed through a mechanism similar to the view source mechanism. We need to sort through two issues: integration into Sugar and integration into our i18n / L10n system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about lots of cool tools.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Most of our help is in the wiki and in English. This will enable us to reach our users more directly and in their first language.&lt;br /&gt;
&lt;br /&gt;
=== Activity Development Framework ===&lt;br /&gt;
&lt;br /&gt;
This framework should allow to:&lt;br /&gt;
* Make toolbars from factories removing many lines of code.&lt;br /&gt;
* Start a project through typing a command.&lt;br /&gt;
* Doing collaboration easier to implement.&lt;br /&gt;
* Any other work which makes the development process hard and can be framed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-Mentor&#039;&#039;: [[User:Ignacio_Rodríguez]]&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn to articulate to others how to do something useful.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We don&#039;t provide enough support for our developers. Time to address that deficiency.&lt;br /&gt;
&lt;br /&gt;
=== ASLO Enhancements ===&lt;br /&gt;
&lt;br /&gt;
The current [http://activities.sugarlabs.org/ Activity Library] is based in an old version of the [http://addons.mozilla.org/ Mozilla Add-ons Library].&lt;br /&gt;
&lt;br /&gt;
This project is divided in three parts:&lt;br /&gt;
&lt;br /&gt;
* Update the old platform and have the corresponding modifications to distribute Sugar Activities instead of Mozilla Plugins.&lt;br /&gt;
* Add an activity manager to the control panel. Allowing the installation/update of activities from ASLO.&lt;br /&gt;
* Add to the Sugar Bundle Builder a way to auto-upload activities to ASLO.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Francis]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:RafaelOrtiz]]&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Our &amp;quot;app store&amp;quot; is not as accessible as it needs to be.&lt;br /&gt;
&lt;br /&gt;
=== GTK wrapper library for Android ===&lt;br /&gt;
&lt;br /&gt;
Sugar Activities uses the PyGTK library which is a binding for GTK. Android doesn&#039;t have GTK and porting GTK to Android is very complicated due to the difference in the user space of GNU/Linux and Android.&lt;br /&gt;
&lt;br /&gt;
The objective of this task is to develop a wrapper library of [http://www.pygtk.org/ PyGTK] that expose the same API but invoke equivalent methods in a Android graphic library like [http://kivy.org/#home Kivy]. The student only have to implement the minimal set of methods that allows to run the [http://activities.sugarlabs.org/en-US/sugar/addon/4418 hello world activity] which is the more basic sugar activity.&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Andres_Aguirre]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Walter]] [[User:Rafael Sisto]]&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: (a) Learn about Android graphic libraries and Python programming in Android&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: This will be the first step to have a framework for porting Sugar Activities to Android with a minimal impact in the actual code of the activity. Also will help outside the Sugar community being a quick method for porting GTK applications to Android&lt;br /&gt;
&lt;br /&gt;
== Sugar Activities ==&lt;br /&gt;
&lt;br /&gt;
=== Write Turtle Blocks in Turtle Blocks ===&lt;br /&gt;
&lt;br /&gt;
In support of making Sugar as transparent and fungible as possible, we&#039;d like to make it not just Free, but provide affordances for end-user modifications. Turtle Blocks is a possible stepping stone towards that end: a programming environment approachable by children as young as five-years old. So as a first step, let&#039;s write Turtle Blocks in Turtle Blocks. From that experience, we&#039;ll hopefully know how to approach the more general Sugar problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;:Tony Forster&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Lots of good Python hacking involved&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll learn how far we can push on the idea that end users *can* modify code.&lt;br /&gt;
&lt;br /&gt;
=== Python export functionality for Turtle Blocks ===&lt;br /&gt;
&lt;br /&gt;
A goal of Turtle Blocks is not just to get children programming, but to launch them out of block world into text-based languages where they can develop more sophisticated programs. While Turtle Blocks is written in Python and can be extended by importing Python modules, it currently exports only in its native block language and in Logo. For this project, we&#039;d want to enable a Python export option so that programmers can take their Turtle projects and extend them into full-fledged Python projects. The hypothesis is that this would lead more children to grow their programming skills beyond simple block programs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: Tony Forster&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Lots of good Python hacking involved&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We&#039;ll have a vehicle for studying whether or not we can bring students of programming from block worlds to text-based programming and debugging.&lt;br /&gt;
&lt;br /&gt;
=== Portfolio videos ===&lt;br /&gt;
&lt;br /&gt;
Working with the maintainer of [[Activities/Portfolio|Portfolio]] to add a mechanism for exporting .ogv (voice over still images) of a portfolio presentation. This is a request that has come from deployments: they&#039;d like to be able to post videos of student work, which is currently available as a slide show with audio voice-over.&lt;br /&gt;
&lt;br /&gt;
[[File:Portfolio-Tool.png|300px]]&lt;br /&gt;
&lt;br /&gt;
A working knowledge of Python and some gstreamer skills are a must.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Walter]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor:&#039;&#039; [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn how to master GStreamer&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We need more vehicles of expression for our users. Video tools are to scare in Sugar.&lt;br /&gt;
&lt;br /&gt;
=== Implement collaboration in Paint Activity ===&lt;br /&gt;
&lt;br /&gt;
Paint Activity does not implement collaboration yet. The easy part is send the mouse positions and draw in the different machines, but you need have the status of the different tools used, copy/paste operations and undo/redo. Paint is already ported to cairo and Gtk3.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about our collaboration stack&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: More shared spaces for expression is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== Add recording to Music Keyboard activity ===&lt;br /&gt;
&lt;br /&gt;
[[File:Music keyboard screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
Music Keyboard activity uses part of TamTamMini code to play sounds. Should be good add the capability of record the played sound.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about python and music libraries (csound)&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: More shared spaces for expression is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== Display notes in a score in Music Keyboard activity ===&lt;br /&gt;
&lt;br /&gt;
Should be good, show the notes played in a score to help kids to learn music reading.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Godiard]]&lt;br /&gt;
&lt;br /&gt;
Level: Beginner&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about python and cairo&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Improve our expression tools is aligned with our pedagogical goals.&lt;br /&gt;
&lt;br /&gt;
=== IRC Activity fixes ===&lt;br /&gt;
&lt;br /&gt;
* [[Activities/IRC]] is built around an all-Python IRC client, [http://urk.sourceforge.net/ Urk] which is no longer maintained since 2007. Thus, its better to port the activity to a newer and a better all-python IRC library.&lt;br /&gt;
* [[Activities/IRC]] is significantly slower than other IRC clients available on other platforms. The reason being its not multi-threaded. Thus, adding multi-threading support will be very useful.&lt;br /&gt;
* [[Activities/IRC]] is missing some useful features including sound on highlight (play a sound when the user is highlighted in a channel), user info (whois data) and many others. Look at some popular IRC clients running on other platforms and research about the features which can be added to [[Activities/IRC]] and how can they be added.&lt;br /&gt;
&lt;br /&gt;
Requires familiarity with Python and IRC protocol specifications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:RafaelOrtiz]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn Python and some UI design&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: We use IRC as the backbone of our community discourse so we should better support it within Sugar itself&lt;br /&gt;
&lt;br /&gt;
=== Chat Activity with translation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chat.JPG|300px]]&lt;br /&gt;
&lt;br /&gt;
Above is an example of a chat where two people connected by chat could not talk to each other due to language barrier.&lt;br /&gt;
&lt;br /&gt;
The project task is to add a drop-down box that translates of the chat messages coming from another user similar to the private/shared drop-down menu shown. This could work like the #sugar / #sugar-es channels on IRC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Satellit]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: [[User:Aneesh Dogra]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about machine translation and web services&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: The better we can accommodate users across multiple languages, the farther we&#039;ll reach.&lt;br /&gt;
&lt;br /&gt;
=== ASL Open Video Chat ===&lt;br /&gt;
&lt;br /&gt;
Open Video Chat is an Free/Open Source video conferencing activity for the XO laptop. This project was originally started in March 2010 with funding from the National Technical Institute for the Deaf in Rochester NY.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Focus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The primary focus of Open Video Chat is to provide streaming video at frame rates that are suitable for communicating with sign language. This ends up being somewhere between 20 and 30 frames per second.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Current Features&#039;&#039;&#039;&lt;br /&gt;
* 20 FPS video&lt;br /&gt;
* preview window&lt;br /&gt;
* text chat&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Desired Features&#039;&#039;&#039;&lt;br /&gt;
*RTP protocol implementation&lt;br /&gt;
*faster frame rate (30+ FPS)&lt;br /&gt;
*audio&lt;br /&gt;
*higher resolution video&lt;br /&gt;
&lt;br /&gt;
IRC&lt;br /&gt;
* The contributors of Open Video Chat frequent #rit-foss on freenode&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:decause]]&lt;br /&gt;
&lt;br /&gt;
Level: Intermediate/Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about gstreamer video pipelines. Learn about sugar networking stack and services (Telepathy). Learn about Python and Sugar UI.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: The Video/Text chat software is nearly complete (90%), it just needs to be ported to latest version of sugar and include new telepathy bindings.&lt;br /&gt;
&lt;br /&gt;
Source Code: [https://github.com/FOSSRIT/Open-Video-chat Github Repository]&lt;br /&gt;
Activity Page: [http://activities.sugarlabs.org/en-US/sugar/addon/4305 A.SL.O]&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
&lt;br /&gt;
=== Build Deployment Platform ===&lt;br /&gt;
&lt;br /&gt;
The Platform Team has been working on a reference Sugar + GNU/Linux distribution for XO laptops. The Sweets project has infrastructure and packages for Ubuntu, Debian and Fedora. It would be a great contribution if these could be integrated into a reference distribution for regular computers. It could be based on TOAST, SOAS, or build from a new base.&lt;br /&gt;
&lt;br /&gt;
This project would be deployed by the volunteer team in Peru.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Sebastian]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Co-mentor&#039;&#039;: alsroot on #sugar &lt;br /&gt;
&lt;br /&gt;
Level: Medium&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: A chance to do systems integration and curating a specialized GNU/Linux distribution for a real life deployment.&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: By having a [http://wiki.sugarlabs.org/go/Deployment_Platform#Reference_distributions deployment platform] which will be consistent and robust, with an integrated feedback mechanism, Sugar community will enhance feedback loops from deployments. This will help improve Sugar at an accelerated pace.&lt;br /&gt;
&lt;br /&gt;
===Clean up Ubuntu Sugar packaging===&lt;br /&gt;
&lt;br /&gt;
[[File:Tuquito-6-jabber.png|300px]]&lt;br /&gt;
&lt;br /&gt;
We have a number of disjointed half-finished or out of date efforts to package Sugar for Ubuntu, including:&lt;br /&gt;
* https://wiki.ubuntu.com/Sugar (sugar-remix -- deprecated)&lt;br /&gt;
* http://wiki.sugarlabs.org/go/Sweets_Distribution#Installation (sweets -- Sugar 0.94)&lt;br /&gt;
&lt;br /&gt;
This task is to develop a work flow such that Ubuntu becomes part of the Sugar release process, ensuring that Sugar on Ubuntu is current.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: [[User:Satellit]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact&#039;&#039;: alsroot on #sugar&lt;br /&gt;
&lt;br /&gt;
Level: Advanced&lt;br /&gt;
&lt;br /&gt;
Benefits to the Student: Learn about packaging&lt;br /&gt;
&lt;br /&gt;
Benefits to the Community: Ubuntu is widely used and we should have our best bits bundled with it in order to reach more potential users.&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86109</id>
		<title>Activities/Turtle Art/Plugins</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86109"/>
		<updated>2013-02-05T21:24:47Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: /* Pattern detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Plugins==&lt;br /&gt;
&lt;br /&gt;
As of Version 106, there is plugin support for Turtle Art. The basic idea is to let developers add new palettes and blocks to support additional functionality without having to make changes to any of the core Turtle Art packages. If a plugin is present, it is loaded when Turtle Art is launched and any palettes or blocks defined by the plugin are made available to the user.&lt;br /&gt;
&lt;br /&gt;
The plugin mechanism is currently used to provide support for sensors, the camera, RFID, and the Media, Extras, and Portfolio palettes. A plugin has been [http://lists.sugarlabs.org/archive/iaep/2011-March/012715.html developed for WeDo] [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html (and here)] and additional plugins are being developed for Arduino, NXT, and GoGo.&lt;br /&gt;
&lt;br /&gt;
===How to install a plugin===&lt;br /&gt;
Plugins are typically distributed as a *.tar.gz archive.&lt;br /&gt;
&lt;br /&gt;
In versions 137+, there is a built-in method for installing plugins from Turtle Art itself:&lt;br /&gt;
# Download the plugin to your Sugar Journal, a USB key, or $HOME/Documents.&lt;br /&gt;
# Click on the &#039;Load plugin&#039; button found on the Activity toolbar.&lt;br /&gt;
# Select the plugin downloaded in Step 1.&lt;br /&gt;
# Go to the Palette toolbar to confirm that the plugin has installed and loaded properly.&lt;br /&gt;
&lt;br /&gt;
In early versions of Turtle Art, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
[[File:Archivemanager.jpg]]&lt;br /&gt;
&lt;br /&gt;
In Gnome, click on the link in your browser and open with Archive Manager, extract the files in the plugins directory of the archive  to&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
you may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
If your distribution does not include Gnome, the following commands in Terminal will download the Physics archive to the current directory&lt;br /&gt;
&lt;br /&gt;
 cd ~/Activities/TurtleArt.activity&lt;br /&gt;
 wget http://wiki.sugarlabs.org/images/c/c1/Physics-plugin.tar.gz&lt;br /&gt;
 gunzip Physics-plugin.tar.gz&lt;br /&gt;
 tar xvf Physics-plugin.tar&lt;br /&gt;
&lt;br /&gt;
Note that you should not need root access to install plugins into your home directory.&lt;br /&gt;
&lt;br /&gt;
===How to uninstall a plugin===&lt;br /&gt;
Your plugin is installed in a subdirectory of&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
In Terminal or Gnome, delete that subdirectory. You may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
===Available plugins===&lt;br /&gt;
These plugins would typically already be installed&lt;br /&gt;
* turtleart-extras (the extra palettes that distinguish Turtle Blocks from Turtle Art)&lt;br /&gt;
* turtleart-camera&lt;br /&gt;
* turtleart-sensors &lt;br /&gt;
* rfid (This plugin allows interfacing with a RFID reader)&lt;br /&gt;
&lt;br /&gt;
====Butia====&lt;br /&gt;
&lt;br /&gt;
Add a palette to control the Butiá robot&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
And a extra palette to control the hacks pin of USB4Butiá board and special sensors:&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette_extra.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Andrés Aguirre is part of the Butiá team in Montevideo:&lt;br /&gt;
:We have released the 1.0 version of the sources, which has full integration with tortugarte (http://www.fing.edu.uy/inco/proyectos/butia/publicaciones.html). Last month we gave away nearly 30 Butiá robots in a robotic event organized by the University. These robots were given to secondary schools throughout the country, in this event we gave some tutorials and exercises to do with our help. One of the schools made a great line follower in tortugarte ;) : http://www.youtube.com/watch?v=Szp0LWLyPIg Then on the second day we give some tutorials and some children really enjoyed the experience, like Pedro a 10 year old child who really has programming skills! http://www.flickr.com/photos/butiarobot/5059177334/ http://www.youtube.com/aguirrea#p/u/7/p0y11iyhFko &lt;br /&gt;
:In future months we will go to the schools where we give the robots to continue teaching and giving new challenges. If you would like to see more about Butiá, we have a flickr site: http://www.flickr.com/photos/butiarobot/ and also a web page: http://www.fing.edu.uy/inco/proyectos/butia &lt;br /&gt;
&lt;br /&gt;
Butiá is also featured in a short film by Antel [http://www.adinettv.com.uy/video/2932] (go to 1:30).&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia Proyecto Butiá] (in Spanish) , [[Activities/TurtleBots]] (in English)&lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/projects/butia/?source=directory Butia in SourceForge]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/butia_plugin.tar.gz butia_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====FollowMe====&lt;br /&gt;
&lt;br /&gt;
This plugin uses the camera and get the position of an object of a color.&lt;br /&gt;
The plugin add this palette:&lt;br /&gt;
[[File:turtleart-followme-palette2.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;classic&amp;quot; use: on &amp;quot;Start&amp;quot;, use the &amp;quot;Calibrate&amp;quot; block to open a window that shows the camera output. In the center of that window there is red square. The FollowMe Plugin uses an algorithm that obtains the &amp;quot;promedial&amp;quot; color of the object in the square. The result of that algorithm is shown in a small square in the corner. When you consider that the color is a good &amp;quot;representation of the object&amp;quot;,  press any key, the window will close, and FollowMe will use this color. After calibration, you can use the &amp;quot;X position&amp;quot; and &amp;quot;Y position&amp;quot; blocks. The block &amp;quot;X position&amp;quot; is the &amp;quot;center&amp;quot; of the object seen by the camera along the &amp;quot;X&amp;quot; (horizontal) axis. This value is an integer between 0 and 320. When the object is not detected,the algorithm returns -1. The operation of the &amp;quot;Y position&amp;quot; block are the same, but returns the position respect the &amp;quot;Y&amp;quot; (vertical) axis. The value returned is between 0 and 240.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-classic.png|250px]]&lt;br /&gt;
&lt;br /&gt;
When you know the color to &amp;quot;follow&amp;quot; (it occurs rarely, since the color varies under changing light conditions) you can use the &amp;quot;Follow RGB&amp;quot; block. This block sets the color directly to the algorithm. In all cases, the color has a threshold of 25 in each component set by default. With the &amp;quot;Threshold&amp;quot; block this value can be changed.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-specificcolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
The third option, is to use the &amp;quot;FollowMe&amp;quot; block that &amp;quot;follows&amp;quot; a generic color similar to that shown.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-turtlecolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
Videos of the plugin ongoing:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=ECP_GoTUm00 FollowMe plugin in TurtleArt - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=r6BIcfnVuwU FollowMe plugin in TurtleArt - Part 2]&lt;br /&gt;
&lt;br /&gt;
The code used in this videos:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-example-ongoing.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/followme_plugin.tar.gz followme_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====Pattern detection====&lt;br /&gt;
&lt;br /&gt;
Add a palette to enable pattern detection with the camera. &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionPalette.png]]&lt;br /&gt;
&lt;br /&gt;
Translation:&lt;br /&gt;
* &amp;quot;Viendo Señal&amp;quot;: Pattern in sight&lt;br /&gt;
* &amp;quot;Distancia Señal&amp;quot; Pattern distance&lt;br /&gt;
&lt;br /&gt;
This palette adds blocks to detect ARToolkit patterns and the distance to them. This plugin is an ARToolkit wrapper, and comes with several traffic signals already configured. &lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
Here are some samples and videos on how to use the palette blocks.&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleStop.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}} &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleYield.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleWrongWay.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php/Butia_reconocimiento_marcas Pattern detection plugin] (in Spanish) &lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
Hosted with the Butiá source&lt;br /&gt;
[http://sourceforge.net/p/butia/code/ci/dcc226276a565a54bbdf1807c30ff50aa648f70f/tree/turtle_art_plugin/pattern_detection/ Pattern Detection in SourceForge (part of Butia project)]&lt;br /&gt;
&lt;br /&gt;
====WeDo====&lt;br /&gt;
&lt;br /&gt;
Tony Forster created a [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html WeDo plugin] based on the [https://github.com/itdaniher/WeDoMore/tree/master/TurtleArt work of I.T. Daniher]. Alan Aguiar has also helped with the plugin.&lt;br /&gt;
&lt;br /&gt;
The source code repository is available here: [https://github.com/itdaniher/wedomore].&lt;br /&gt;
&lt;br /&gt;
[[File:WeDo plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
* [[File:Wedo_plugin_2.tar.gz]] Version 2, which supports multiple WeDo devices.&lt;br /&gt;
* [[File:Wedo_plugin.tar.gz]] Version 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Check out https://github.com/itdaniher/WeDoMore/tree/master/udev for instructions on how to setup the proper permissions talk to the device. In the new versions of Sugar the udev is included.&lt;br /&gt;
&lt;br /&gt;
====LEGO NxT====&lt;br /&gt;
&lt;br /&gt;
Motors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Sensors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette-sensors.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-example1.png]]&lt;br /&gt;
&lt;br /&gt;
Moving the Turtle:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=C6Na6MRfyEc Example - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=UlD-c2CE0bs Example - Part 2]&lt;br /&gt;
&lt;br /&gt;
A crane:&lt;br /&gt;
[http://www.youtube.com/watch?v=S8HRbDLO7LM Example of Crane]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/nxt_plugin NXT_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
LEGO NxT Plugin [[File:nxt_plugin.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
====Expeyes====&lt;br /&gt;
&lt;br /&gt;
The Expeyes Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:eyes.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Expeyes.png|300px]]&lt;br /&gt;
&lt;br /&gt;
This is a first pass at a plugin for the ExpEyes Junior. For more info, see [http://expeyes.in].&lt;br /&gt;
&lt;br /&gt;
Note that you need to set up the udev rules for the device before first using this plugin by running the postinst script bundled with the plugin:&lt;br /&gt;
&lt;br /&gt;
 sudo sh ~/Activities/TurtleArt.activity/plugins/eyes/postinst&lt;br /&gt;
&lt;br /&gt;
====Arduino====&lt;br /&gt;
&lt;br /&gt;
The Arduino Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-arduino-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
There are several efforts to develop Turtle Art support for Arduino.&lt;br /&gt;
&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/arduino-fork-of-turtle-art.html Setting up Turtle Arduino]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-display-inputs.html Read digital inputs] [[File:Ard.ta]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-digital-write.html Arduino write output] [[File:Turtle Art Activity ardout.ta]] [[File:Tamyblock mouse.odt]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2012/01/arduino-and-xo-laptop.html The Freetronics Leostick]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Arduino functionality was corrected from previous versions:&lt;br /&gt;
* Analog and digital reading now works correctly&lt;br /&gt;
* Auto detection of ttyUSBx port for FTDI device (Arduino board uses this for USB)&lt;br /&gt;
&lt;br /&gt;
It requires the Firmata protocol to be uploaded to the Arduino board. (see [http://wiki.laptop.org/go/Arduino here])&lt;br /&gt;
Use the latest Firmata version (2.1 as of now) downloaded from the Firmata page (firmata.org)&lt;br /&gt;
The Firmata version included with the Arduino IDE has some inconsistencies.&lt;br /&gt;
&lt;br /&gt;
This version has english and spanish translations.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
[[File:turtleart-arduino-example1.png]]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/arduino arduino_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
The plugin file can be downloaded from [[File:arduino.tar.gz]].&lt;br /&gt;
&lt;br /&gt;
====Currency====&lt;br /&gt;
This plugin adds a pallette of currency (notes and coins), these items can be acted on by arithmetic operators&lt;br /&gt;
&lt;br /&gt;
[[File:Oz currency.png|250px]] [[File:Soles.png|250px]]&lt;br /&gt;
&lt;br /&gt;
:[[File:Oz-coins.tar.gz]] Australian coins plugin&lt;br /&gt;
:[[File:Oz-bills.tar.gz]] Australian bills plugin&lt;br /&gt;
:[[File:Oz-coins-and-bills.tar.gz]] Australian coins and bills plugin&lt;br /&gt;
:[[File:Colombia-currency.tar.gz]] Colombian peso plugin&lt;br /&gt;
:[[File:Mexican-currency.tar.gz]] Mexican peso plugin&lt;br /&gt;
:[[File:Paraguay-currency.tar.gz]] Paraguay Gurani plugin&lt;br /&gt;
:[[File:Rwanda-currency.tar.gz]] Rwanda francs plugin&lt;br /&gt;
:[[File:UY-currency.tar.gz]] Uruguayan peso plugin &lt;br /&gt;
:[[File:US-bills.tar.gz]] US dollars plugin&lt;br /&gt;
:[[File:Soles.tar.gz]] Peruvian Soles plugin&lt;br /&gt;
:&amp;lt;strike&amp;gt;[[File:US-currency.tar.gz]] US dollars plugin&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Nutrition====&lt;br /&gt;
This is just a first rough pass at a plugin do calculations on the nutritional value of different food types. The plugin itself comes with some sample foods: apples, bananas, cookies, and cake. It is expected that the food choices will be customized by deployment. See https://www.choosemyplate.gov/SuperTracker/ for nutritional values (calories, protein, carbohydrates, fiber, and fat) of different foods.&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.tar.gz]] (&#039;&#039;&#039;Note:&#039;&#039;&#039; Requires TurtleBlocks v133 or greater)&lt;br /&gt;
&lt;br /&gt;
==== Physics ====&lt;br /&gt;
This plugin allows you to construct a Physics model which can be saved to the Journal and run with the Physics Activity [[Activities/Physics]]&lt;br /&gt;
&lt;br /&gt;
[[File:Physics pallette.jpg]]&lt;br /&gt;
&lt;br /&gt;
Use these blocks to create objects that are added to the bodylist and jointlist of a Box2d database used by the Physics Activity. Objects are positioned by the turtle x,y and colored based on the current pen attributes. From left to right:&lt;br /&gt;
* start polygon: use the current turtle x,y position to specify the first vertex of a polygon&lt;br /&gt;
* add point: use the current turtle x,y position to add a vertex to a polygon&lt;br /&gt;
* end polygon: use the current turtle x,y position to specify the last vertex of a polygon&lt;br /&gt;
* end filled polygon: use the current turtle x,y position to specify the last vertex of a &#039;&#039;filled&#039;&#039; polygon&lt;br /&gt;
: &#039;&#039;&#039;Note:&#039;&#039;&#039; The polygon must be &#039;normal&#039;, e.g., no crossed lines; no holes. Since Box2d does not support concave polygons, all polygons are converted to triangles (triangulation). (In Turtle Blocks, these triangles are shown by slight variations in color.)&lt;br /&gt;
* triangle: add a triangle object at the current turtle x,y position&lt;br /&gt;
* circle: add a circle object at the current turtle x,y position&lt;br /&gt;
* rectangle: add a rectangle object at the current turtle x,y position&lt;br /&gt;
* gear: add a gear object at the current turtle x,y position with the number of teeth as the argument&lt;br /&gt;
* motor: add a motor at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* pin: add a pin at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* joint: add a joint between the object at the current turtle x,y position and the object at x, y&lt;br /&gt;
* density: set the object density (0 is light; 1 is heavy)&lt;br /&gt;
* friction: set the object friction (0 is slippery; 1 is sticky)&lt;br /&gt;
* bounciness: set the object restitution (0 is rigid; 1 is bouncy)&lt;br /&gt;
* save as Physics project: save the current bodylist and jointlist as a Physics project in the Journal&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The current model is cleared whenever the Erase button is pressed or a Clean block is run.&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
A simple gear and motor generated in Turtle Art:&lt;br /&gt;
&lt;br /&gt;
[[File:TAGearTA.png|300px]]&lt;br /&gt;
[[File:TAGear.png|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:TAgear.ta]] [[File:Gear.physics]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Physics-plugin.tar.gz]] Physics plugin&lt;br /&gt;
&lt;br /&gt;
==== Logic ====&lt;br /&gt;
This plugin provides logical bit operations in Turtle Art, such as AND, OR, XOR, NOT, logical shift left, logical shift right.&lt;br /&gt;
&lt;br /&gt;
[[File:Logic.png]]&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
[[File:And.png|300px]]&lt;br /&gt;
[[File:Lsl2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
[[File:Logic.tar.gz]] Logic plugin&lt;br /&gt;
&lt;br /&gt;
=== GNOME plugins ===&lt;br /&gt;
There are some plugins that are specific to running Turtle Art from the GNOME desktop. These include mechanisms for uploading projects to Facebook (See [[Activities/TurtleArt/Fb_plugin.py]] and http://turtleartsite.appspot.com/&lt;br /&gt;
&lt;br /&gt;
([[File:Turtleblocks-167.1.xo]] is the Alpha version of Turtle Art for GTK3. It requires GTK3 and GST1 (both available in Sugar 0.98 on [http://wiki.laptop.org/go/13.1.0 OLPC 13.1.0 builds]) This version includes the Facebook plugin.&lt;br /&gt;
&lt;br /&gt;
===TurtleArt + icaro = Tortucaro===&lt;br /&gt;
&lt;br /&gt;
See http://proyectofedora.org/argentina/?p=320&lt;br /&gt;
&lt;br /&gt;
(The above link is down. The cached version of the page can be found at [http://webcache.googleusercontent.com/search?q=cache:Vab9UyzE61MJ:proyectofedora.org/argentina/%3Fp%3D320+&amp;amp;cd=1&amp;amp;hl=es&amp;amp;ct=clnk&amp;amp;gl=ar])&lt;br /&gt;
&lt;br /&gt;
===How to write a plugin===&lt;br /&gt;
&lt;br /&gt;
Your plugin should be placed in a subdirectory of the plugins directory. In that subdirectory, you need to create a .py file that defines a subclass of the Plugin class. The directory and .py file must have the same name and the subclass must also have the same name, with the additional requirement that the first letter of the class name be capitalized.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* the camera plugin, &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt; is in &amp;lt;code&amp;gt;./plugins/camera_sensor&amp;lt;/code&amp;gt;&lt;br /&gt;
* the class, &amp;lt;code&amp;gt;Camera_sensor&amp;lt;/code&amp;gt; is defined in &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt;, e.g.,&lt;br /&gt;
&lt;br /&gt;
 from plugins.plugin import Plugin&lt;br /&gt;
 class Camera_sensor(Plugin):&lt;br /&gt;
&lt;br /&gt;
In that subdirectory, you will also need a __init__.py file (which can be empty) and optionally, an icon subdirectory for your palette icon.&lt;br /&gt;
&lt;br /&gt;
Turtle Art calls the __init__ method when starting up and traps import errors as its means to determine whether or not a plugin has the resources it needs to run. (You may want to remove this exception handler when debugging your plugin. It is in the _init_plugins method in tawindow.py.) It then calls the setup method when creating the palettes. It calls the start method whenever a stack of blocks is run and the stop method when execution is over. Also, there are methods for goto_background, return_to_foreground, and quit. (These methods are typically ignored.)&lt;br /&gt;
&lt;br /&gt;
Adding a new palette is simply a matter of:&lt;br /&gt;
&lt;br /&gt;
    palette = make_palette(&#039;mypalette&#039;,  # the name of your palette&lt;br /&gt;
                           colors=[&amp;quot;#00FF00&amp;quot;, &amp;quot;#00A000&amp;quot;],&lt;br /&gt;
                           help_string=_(&#039;Palette of my custom commands&#039;))&lt;br /&gt;
&lt;br /&gt;
For example, if we want to add a new turtle command, &#039;uturn&#039;, we&#039;d use the&lt;br /&gt;
add_block method in the Palette class.&lt;br /&gt;
&lt;br /&gt;
    palette.add_block(&#039;uturn&#039;,  # the name of your block&lt;br /&gt;
                      style=&#039;basic-style&#039;,  # the block style&lt;br /&gt;
                      label=_(&#039;u turn&#039;),  # the label for the block&lt;br /&gt;
                      prim_name=&#039;uturn&#039;,  # code reference (see below)&lt;br /&gt;
                      help_string=_(&#039;turns the turtle 180 degrees&#039;))&lt;br /&gt;
&lt;br /&gt;
    # Next, you need to define what your block will do:&lt;br /&gt;
    # def_prim takes 3 arguments: the primitive name, the number of&lt;br /&gt;
    # of arguments, 0 in this case, and the function to call, in this&lt;br /&gt;
    # case, the canvas function to set the heading.&lt;br /&gt;
    self.tw.lc.def_prim(&#039;uturn&#039;, 0, lambda self: self.tw.canvas.seth(self.tw.canvas.heading + 180))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s it. When you next run Turtle Art, you will have a &#039;uturn&#039; block&lt;br /&gt;
on the &#039;mypalette&#039; palette.	&lt;br /&gt;
&lt;br /&gt;
You will have to create icons for the palette-selector buttons. These&lt;br /&gt;
are kept in the icons subdirectory. You need two icons:&lt;br /&gt;
mypaletteoff.svg and mypaletteon.svg, where &#039;mypalette&#039; is the same&lt;br /&gt;
string as the entry you used in instantiating the Palette class. Note&lt;br /&gt;
that the icons should be the same size (55x55) as the others. (This is&lt;br /&gt;
the default icon size for Sugar toolbars.)&lt;br /&gt;
&lt;br /&gt;
As of Turtle Art v137, there is a built-in mechanism for installing plugins. Please include a plugin.info file in the top level of your tar.gz bundle.&lt;br /&gt;
&lt;br /&gt;
 plugin.info&lt;br /&gt;
 myplugin&lt;br /&gt;
    myplugin.py&lt;br /&gt;
    __init.py__&lt;br /&gt;
    icons&lt;br /&gt;
       mypluginoff.svg&lt;br /&gt;
       mypluginon.svg&lt;br /&gt;
&lt;br /&gt;
The plugin.info file must contain the following sections and fields:&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=the name of your plugin&lt;br /&gt;
 palette=the names of any palettes created by your plugin as a comma-separated list&lt;br /&gt;
&lt;br /&gt;
e.g.,&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=food&lt;br /&gt;
 palette=eatme, food&lt;br /&gt;
&lt;br /&gt;
Other fields, such as version, license, etc. may be used in the future.&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86108</id>
		<title>Activities/Turtle Art/Plugins</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86108"/>
		<updated>2013-02-05T21:24:12Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: /* Pattern detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Plugins==&lt;br /&gt;
&lt;br /&gt;
As of Version 106, there is plugin support for Turtle Art. The basic idea is to let developers add new palettes and blocks to support additional functionality without having to make changes to any of the core Turtle Art packages. If a plugin is present, it is loaded when Turtle Art is launched and any palettes or blocks defined by the plugin are made available to the user.&lt;br /&gt;
&lt;br /&gt;
The plugin mechanism is currently used to provide support for sensors, the camera, RFID, and the Media, Extras, and Portfolio palettes. A plugin has been [http://lists.sugarlabs.org/archive/iaep/2011-March/012715.html developed for WeDo] [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html (and here)] and additional plugins are being developed for Arduino, NXT, and GoGo.&lt;br /&gt;
&lt;br /&gt;
===How to install a plugin===&lt;br /&gt;
Plugins are typically distributed as a *.tar.gz archive.&lt;br /&gt;
&lt;br /&gt;
In versions 137+, there is a built-in method for installing plugins from Turtle Art itself:&lt;br /&gt;
# Download the plugin to your Sugar Journal, a USB key, or $HOME/Documents.&lt;br /&gt;
# Click on the &#039;Load plugin&#039; button found on the Activity toolbar.&lt;br /&gt;
# Select the plugin downloaded in Step 1.&lt;br /&gt;
# Go to the Palette toolbar to confirm that the plugin has installed and loaded properly.&lt;br /&gt;
&lt;br /&gt;
In early versions of Turtle Art, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
[[File:Archivemanager.jpg]]&lt;br /&gt;
&lt;br /&gt;
In Gnome, click on the link in your browser and open with Archive Manager, extract the files in the plugins directory of the archive  to&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
you may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
If your distribution does not include Gnome, the following commands in Terminal will download the Physics archive to the current directory&lt;br /&gt;
&lt;br /&gt;
 cd ~/Activities/TurtleArt.activity&lt;br /&gt;
 wget http://wiki.sugarlabs.org/images/c/c1/Physics-plugin.tar.gz&lt;br /&gt;
 gunzip Physics-plugin.tar.gz&lt;br /&gt;
 tar xvf Physics-plugin.tar&lt;br /&gt;
&lt;br /&gt;
Note that you should not need root access to install plugins into your home directory.&lt;br /&gt;
&lt;br /&gt;
===How to uninstall a plugin===&lt;br /&gt;
Your plugin is installed in a subdirectory of&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
In Terminal or Gnome, delete that subdirectory. You may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
===Available plugins===&lt;br /&gt;
These plugins would typically already be installed&lt;br /&gt;
* turtleart-extras (the extra palettes that distinguish Turtle Blocks from Turtle Art)&lt;br /&gt;
* turtleart-camera&lt;br /&gt;
* turtleart-sensors &lt;br /&gt;
* rfid (This plugin allows interfacing with a RFID reader)&lt;br /&gt;
&lt;br /&gt;
====Butia====&lt;br /&gt;
&lt;br /&gt;
Add a palette to control the Butiá robot&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
And a extra palette to control the hacks pin of USB4Butiá board and special sensors:&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette_extra.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Andrés Aguirre is part of the Butiá team in Montevideo:&lt;br /&gt;
:We have released the 1.0 version of the sources, which has full integration with tortugarte (http://www.fing.edu.uy/inco/proyectos/butia/publicaciones.html). Last month we gave away nearly 30 Butiá robots in a robotic event organized by the University. These robots were given to secondary schools throughout the country, in this event we gave some tutorials and exercises to do with our help. One of the schools made a great line follower in tortugarte ;) : http://www.youtube.com/watch?v=Szp0LWLyPIg Then on the second day we give some tutorials and some children really enjoyed the experience, like Pedro a 10 year old child who really has programming skills! http://www.flickr.com/photos/butiarobot/5059177334/ http://www.youtube.com/aguirrea#p/u/7/p0y11iyhFko &lt;br /&gt;
:In future months we will go to the schools where we give the robots to continue teaching and giving new challenges. If you would like to see more about Butiá, we have a flickr site: http://www.flickr.com/photos/butiarobot/ and also a web page: http://www.fing.edu.uy/inco/proyectos/butia &lt;br /&gt;
&lt;br /&gt;
Butiá is also featured in a short film by Antel [http://www.adinettv.com.uy/video/2932] (go to 1:30).&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia Proyecto Butiá] (in Spanish) , [[Activities/TurtleBots]] (in English)&lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/projects/butia/?source=directory Butia in SourceForge]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/butia_plugin.tar.gz butia_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====FollowMe====&lt;br /&gt;
&lt;br /&gt;
This plugin uses the camera and get the position of an object of a color.&lt;br /&gt;
The plugin add this palette:&lt;br /&gt;
[[File:turtleart-followme-palette2.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;classic&amp;quot; use: on &amp;quot;Start&amp;quot;, use the &amp;quot;Calibrate&amp;quot; block to open a window that shows the camera output. In the center of that window there is red square. The FollowMe Plugin uses an algorithm that obtains the &amp;quot;promedial&amp;quot; color of the object in the square. The result of that algorithm is shown in a small square in the corner. When you consider that the color is a good &amp;quot;representation of the object&amp;quot;,  press any key, the window will close, and FollowMe will use this color. After calibration, you can use the &amp;quot;X position&amp;quot; and &amp;quot;Y position&amp;quot; blocks. The block &amp;quot;X position&amp;quot; is the &amp;quot;center&amp;quot; of the object seen by the camera along the &amp;quot;X&amp;quot; (horizontal) axis. This value is an integer between 0 and 320. When the object is not detected,the algorithm returns -1. The operation of the &amp;quot;Y position&amp;quot; block are the same, but returns the position respect the &amp;quot;Y&amp;quot; (vertical) axis. The value returned is between 0 and 240.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-classic.png|250px]]&lt;br /&gt;
&lt;br /&gt;
When you know the color to &amp;quot;follow&amp;quot; (it occurs rarely, since the color varies under changing light conditions) you can use the &amp;quot;Follow RGB&amp;quot; block. This block sets the color directly to the algorithm. In all cases, the color has a threshold of 25 in each component set by default. With the &amp;quot;Threshold&amp;quot; block this value can be changed.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-specificcolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
The third option, is to use the &amp;quot;FollowMe&amp;quot; block that &amp;quot;follows&amp;quot; a generic color similar to that shown.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-turtlecolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
Videos of the plugin ongoing:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=ECP_GoTUm00 FollowMe plugin in TurtleArt - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=r6BIcfnVuwU FollowMe plugin in TurtleArt - Part 2]&lt;br /&gt;
&lt;br /&gt;
The code used in this videos:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-example-ongoing.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/followme_plugin.tar.gz followme_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====Pattern detection====&lt;br /&gt;
&lt;br /&gt;
Add a palette to enable pattern detection with the camera. &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionPalette.png]]&lt;br /&gt;
Translation:&lt;br /&gt;
* &amp;quot;Viendo Señal&amp;quot;: Pattern in sight&lt;br /&gt;
* &amp;quot;Distancia Señal&amp;quot; Pattern distance&lt;br /&gt;
&lt;br /&gt;
This palette adds blocks to detect ARToolkit patterns and the distance to them. This plugin is an ARToolkit wrapper, and comes with several traffic signals already configured. &lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
Here are some samples and videos on how to use the palette blocks.&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleStop.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}} &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleYield.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleWrongWay.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php/Butia_reconocimiento_marcas Pattern detection plugin] (in Spanish) &lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
Hosted with the Butiá source&lt;br /&gt;
[http://sourceforge.net/p/butia/code/ci/dcc226276a565a54bbdf1807c30ff50aa648f70f/tree/turtle_art_plugin/pattern_detection/ Pattern Detection in SourceForge (part of Butia project)]&lt;br /&gt;
&lt;br /&gt;
====WeDo====&lt;br /&gt;
&lt;br /&gt;
Tony Forster created a [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html WeDo plugin] based on the [https://github.com/itdaniher/WeDoMore/tree/master/TurtleArt work of I.T. Daniher]. Alan Aguiar has also helped with the plugin.&lt;br /&gt;
&lt;br /&gt;
The source code repository is available here: [https://github.com/itdaniher/wedomore].&lt;br /&gt;
&lt;br /&gt;
[[File:WeDo plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
* [[File:Wedo_plugin_2.tar.gz]] Version 2, which supports multiple WeDo devices.&lt;br /&gt;
* [[File:Wedo_plugin.tar.gz]] Version 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Check out https://github.com/itdaniher/WeDoMore/tree/master/udev for instructions on how to setup the proper permissions talk to the device. In the new versions of Sugar the udev is included.&lt;br /&gt;
&lt;br /&gt;
====LEGO NxT====&lt;br /&gt;
&lt;br /&gt;
Motors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Sensors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette-sensors.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-example1.png]]&lt;br /&gt;
&lt;br /&gt;
Moving the Turtle:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=C6Na6MRfyEc Example - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=UlD-c2CE0bs Example - Part 2]&lt;br /&gt;
&lt;br /&gt;
A crane:&lt;br /&gt;
[http://www.youtube.com/watch?v=S8HRbDLO7LM Example of Crane]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/nxt_plugin NXT_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
LEGO NxT Plugin [[File:nxt_plugin.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
====Expeyes====&lt;br /&gt;
&lt;br /&gt;
The Expeyes Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:eyes.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Expeyes.png|300px]]&lt;br /&gt;
&lt;br /&gt;
This is a first pass at a plugin for the ExpEyes Junior. For more info, see [http://expeyes.in].&lt;br /&gt;
&lt;br /&gt;
Note that you need to set up the udev rules for the device before first using this plugin by running the postinst script bundled with the plugin:&lt;br /&gt;
&lt;br /&gt;
 sudo sh ~/Activities/TurtleArt.activity/plugins/eyes/postinst&lt;br /&gt;
&lt;br /&gt;
====Arduino====&lt;br /&gt;
&lt;br /&gt;
The Arduino Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-arduino-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
There are several efforts to develop Turtle Art support for Arduino.&lt;br /&gt;
&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/arduino-fork-of-turtle-art.html Setting up Turtle Arduino]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-display-inputs.html Read digital inputs] [[File:Ard.ta]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-digital-write.html Arduino write output] [[File:Turtle Art Activity ardout.ta]] [[File:Tamyblock mouse.odt]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2012/01/arduino-and-xo-laptop.html The Freetronics Leostick]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Arduino functionality was corrected from previous versions:&lt;br /&gt;
* Analog and digital reading now works correctly&lt;br /&gt;
* Auto detection of ttyUSBx port for FTDI device (Arduino board uses this for USB)&lt;br /&gt;
&lt;br /&gt;
It requires the Firmata protocol to be uploaded to the Arduino board. (see [http://wiki.laptop.org/go/Arduino here])&lt;br /&gt;
Use the latest Firmata version (2.1 as of now) downloaded from the Firmata page (firmata.org)&lt;br /&gt;
The Firmata version included with the Arduino IDE has some inconsistencies.&lt;br /&gt;
&lt;br /&gt;
This version has english and spanish translations.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
[[File:turtleart-arduino-example1.png]]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/arduino arduino_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
The plugin file can be downloaded from [[File:arduino.tar.gz]].&lt;br /&gt;
&lt;br /&gt;
====Currency====&lt;br /&gt;
This plugin adds a pallette of currency (notes and coins), these items can be acted on by arithmetic operators&lt;br /&gt;
&lt;br /&gt;
[[File:Oz currency.png|250px]] [[File:Soles.png|250px]]&lt;br /&gt;
&lt;br /&gt;
:[[File:Oz-coins.tar.gz]] Australian coins plugin&lt;br /&gt;
:[[File:Oz-bills.tar.gz]] Australian bills plugin&lt;br /&gt;
:[[File:Oz-coins-and-bills.tar.gz]] Australian coins and bills plugin&lt;br /&gt;
:[[File:Colombia-currency.tar.gz]] Colombian peso plugin&lt;br /&gt;
:[[File:Mexican-currency.tar.gz]] Mexican peso plugin&lt;br /&gt;
:[[File:Paraguay-currency.tar.gz]] Paraguay Gurani plugin&lt;br /&gt;
:[[File:Rwanda-currency.tar.gz]] Rwanda francs plugin&lt;br /&gt;
:[[File:UY-currency.tar.gz]] Uruguayan peso plugin &lt;br /&gt;
:[[File:US-bills.tar.gz]] US dollars plugin&lt;br /&gt;
:[[File:Soles.tar.gz]] Peruvian Soles plugin&lt;br /&gt;
:&amp;lt;strike&amp;gt;[[File:US-currency.tar.gz]] US dollars plugin&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Nutrition====&lt;br /&gt;
This is just a first rough pass at a plugin do calculations on the nutritional value of different food types. The plugin itself comes with some sample foods: apples, bananas, cookies, and cake. It is expected that the food choices will be customized by deployment. See https://www.choosemyplate.gov/SuperTracker/ for nutritional values (calories, protein, carbohydrates, fiber, and fat) of different foods.&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.tar.gz]] (&#039;&#039;&#039;Note:&#039;&#039;&#039; Requires TurtleBlocks v133 or greater)&lt;br /&gt;
&lt;br /&gt;
==== Physics ====&lt;br /&gt;
This plugin allows you to construct a Physics model which can be saved to the Journal and run with the Physics Activity [[Activities/Physics]]&lt;br /&gt;
&lt;br /&gt;
[[File:Physics pallette.jpg]]&lt;br /&gt;
&lt;br /&gt;
Use these blocks to create objects that are added to the bodylist and jointlist of a Box2d database used by the Physics Activity. Objects are positioned by the turtle x,y and colored based on the current pen attributes. From left to right:&lt;br /&gt;
* start polygon: use the current turtle x,y position to specify the first vertex of a polygon&lt;br /&gt;
* add point: use the current turtle x,y position to add a vertex to a polygon&lt;br /&gt;
* end polygon: use the current turtle x,y position to specify the last vertex of a polygon&lt;br /&gt;
* end filled polygon: use the current turtle x,y position to specify the last vertex of a &#039;&#039;filled&#039;&#039; polygon&lt;br /&gt;
: &#039;&#039;&#039;Note:&#039;&#039;&#039; The polygon must be &#039;normal&#039;, e.g., no crossed lines; no holes. Since Box2d does not support concave polygons, all polygons are converted to triangles (triangulation). (In Turtle Blocks, these triangles are shown by slight variations in color.)&lt;br /&gt;
* triangle: add a triangle object at the current turtle x,y position&lt;br /&gt;
* circle: add a circle object at the current turtle x,y position&lt;br /&gt;
* rectangle: add a rectangle object at the current turtle x,y position&lt;br /&gt;
* gear: add a gear object at the current turtle x,y position with the number of teeth as the argument&lt;br /&gt;
* motor: add a motor at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* pin: add a pin at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* joint: add a joint between the object at the current turtle x,y position and the object at x, y&lt;br /&gt;
* density: set the object density (0 is light; 1 is heavy)&lt;br /&gt;
* friction: set the object friction (0 is slippery; 1 is sticky)&lt;br /&gt;
* bounciness: set the object restitution (0 is rigid; 1 is bouncy)&lt;br /&gt;
* save as Physics project: save the current bodylist and jointlist as a Physics project in the Journal&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The current model is cleared whenever the Erase button is pressed or a Clean block is run.&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
A simple gear and motor generated in Turtle Art:&lt;br /&gt;
&lt;br /&gt;
[[File:TAGearTA.png|300px]]&lt;br /&gt;
[[File:TAGear.png|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:TAgear.ta]] [[File:Gear.physics]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Physics-plugin.tar.gz]] Physics plugin&lt;br /&gt;
&lt;br /&gt;
==== Logic ====&lt;br /&gt;
This plugin provides logical bit operations in Turtle Art, such as AND, OR, XOR, NOT, logical shift left, logical shift right.&lt;br /&gt;
&lt;br /&gt;
[[File:Logic.png]]&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
[[File:And.png|300px]]&lt;br /&gt;
[[File:Lsl2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
[[File:Logic.tar.gz]] Logic plugin&lt;br /&gt;
&lt;br /&gt;
=== GNOME plugins ===&lt;br /&gt;
There are some plugins that are specific to running Turtle Art from the GNOME desktop. These include mechanisms for uploading projects to Facebook (See [[Activities/TurtleArt/Fb_plugin.py]] and http://turtleartsite.appspot.com/&lt;br /&gt;
&lt;br /&gt;
([[File:Turtleblocks-167.1.xo]] is the Alpha version of Turtle Art for GTK3. It requires GTK3 and GST1 (both available in Sugar 0.98 on [http://wiki.laptop.org/go/13.1.0 OLPC 13.1.0 builds]) This version includes the Facebook plugin.&lt;br /&gt;
&lt;br /&gt;
===TurtleArt + icaro = Tortucaro===&lt;br /&gt;
&lt;br /&gt;
See http://proyectofedora.org/argentina/?p=320&lt;br /&gt;
&lt;br /&gt;
(The above link is down. The cached version of the page can be found at [http://webcache.googleusercontent.com/search?q=cache:Vab9UyzE61MJ:proyectofedora.org/argentina/%3Fp%3D320+&amp;amp;cd=1&amp;amp;hl=es&amp;amp;ct=clnk&amp;amp;gl=ar])&lt;br /&gt;
&lt;br /&gt;
===How to write a plugin===&lt;br /&gt;
&lt;br /&gt;
Your plugin should be placed in a subdirectory of the plugins directory. In that subdirectory, you need to create a .py file that defines a subclass of the Plugin class. The directory and .py file must have the same name and the subclass must also have the same name, with the additional requirement that the first letter of the class name be capitalized.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* the camera plugin, &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt; is in &amp;lt;code&amp;gt;./plugins/camera_sensor&amp;lt;/code&amp;gt;&lt;br /&gt;
* the class, &amp;lt;code&amp;gt;Camera_sensor&amp;lt;/code&amp;gt; is defined in &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt;, e.g.,&lt;br /&gt;
&lt;br /&gt;
 from plugins.plugin import Plugin&lt;br /&gt;
 class Camera_sensor(Plugin):&lt;br /&gt;
&lt;br /&gt;
In that subdirectory, you will also need a __init__.py file (which can be empty) and optionally, an icon subdirectory for your palette icon.&lt;br /&gt;
&lt;br /&gt;
Turtle Art calls the __init__ method when starting up and traps import errors as its means to determine whether or not a plugin has the resources it needs to run. (You may want to remove this exception handler when debugging your plugin. It is in the _init_plugins method in tawindow.py.) It then calls the setup method when creating the palettes. It calls the start method whenever a stack of blocks is run and the stop method when execution is over. Also, there are methods for goto_background, return_to_foreground, and quit. (These methods are typically ignored.)&lt;br /&gt;
&lt;br /&gt;
Adding a new palette is simply a matter of:&lt;br /&gt;
&lt;br /&gt;
    palette = make_palette(&#039;mypalette&#039;,  # the name of your palette&lt;br /&gt;
                           colors=[&amp;quot;#00FF00&amp;quot;, &amp;quot;#00A000&amp;quot;],&lt;br /&gt;
                           help_string=_(&#039;Palette of my custom commands&#039;))&lt;br /&gt;
&lt;br /&gt;
For example, if we want to add a new turtle command, &#039;uturn&#039;, we&#039;d use the&lt;br /&gt;
add_block method in the Palette class.&lt;br /&gt;
&lt;br /&gt;
    palette.add_block(&#039;uturn&#039;,  # the name of your block&lt;br /&gt;
                      style=&#039;basic-style&#039;,  # the block style&lt;br /&gt;
                      label=_(&#039;u turn&#039;),  # the label for the block&lt;br /&gt;
                      prim_name=&#039;uturn&#039;,  # code reference (see below)&lt;br /&gt;
                      help_string=_(&#039;turns the turtle 180 degrees&#039;))&lt;br /&gt;
&lt;br /&gt;
    # Next, you need to define what your block will do:&lt;br /&gt;
    # def_prim takes 3 arguments: the primitive name, the number of&lt;br /&gt;
    # of arguments, 0 in this case, and the function to call, in this&lt;br /&gt;
    # case, the canvas function to set the heading.&lt;br /&gt;
    self.tw.lc.def_prim(&#039;uturn&#039;, 0, lambda self: self.tw.canvas.seth(self.tw.canvas.heading + 180))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s it. When you next run Turtle Art, you will have a &#039;uturn&#039; block&lt;br /&gt;
on the &#039;mypalette&#039; palette.	&lt;br /&gt;
&lt;br /&gt;
You will have to create icons for the palette-selector buttons. These&lt;br /&gt;
are kept in the icons subdirectory. You need two icons:&lt;br /&gt;
mypaletteoff.svg and mypaletteon.svg, where &#039;mypalette&#039; is the same&lt;br /&gt;
string as the entry you used in instantiating the Palette class. Note&lt;br /&gt;
that the icons should be the same size (55x55) as the others. (This is&lt;br /&gt;
the default icon size for Sugar toolbars.)&lt;br /&gt;
&lt;br /&gt;
As of Turtle Art v137, there is a built-in mechanism for installing plugins. Please include a plugin.info file in the top level of your tar.gz bundle.&lt;br /&gt;
&lt;br /&gt;
 plugin.info&lt;br /&gt;
 myplugin&lt;br /&gt;
    myplugin.py&lt;br /&gt;
    __init.py__&lt;br /&gt;
    icons&lt;br /&gt;
       mypluginoff.svg&lt;br /&gt;
       mypluginon.svg&lt;br /&gt;
&lt;br /&gt;
The plugin.info file must contain the following sections and fields:&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=the name of your plugin&lt;br /&gt;
 palette=the names of any palettes created by your plugin as a comma-separated list&lt;br /&gt;
&lt;br /&gt;
e.g.,&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=food&lt;br /&gt;
 palette=eatme, food&lt;br /&gt;
&lt;br /&gt;
Other fields, such as version, license, etc. may be used in the future.&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86107</id>
		<title>Activities/Turtle Art/Plugins</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activities/Turtle_Art/Plugins&amp;diff=86107"/>
		<updated>2013-02-05T21:20:27Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: /* Available plugins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Plugins==&lt;br /&gt;
&lt;br /&gt;
As of Version 106, there is plugin support for Turtle Art. The basic idea is to let developers add new palettes and blocks to support additional functionality without having to make changes to any of the core Turtle Art packages. If a plugin is present, it is loaded when Turtle Art is launched and any palettes or blocks defined by the plugin are made available to the user.&lt;br /&gt;
&lt;br /&gt;
The plugin mechanism is currently used to provide support for sensors, the camera, RFID, and the Media, Extras, and Portfolio palettes. A plugin has been [http://lists.sugarlabs.org/archive/iaep/2011-March/012715.html developed for WeDo] [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html (and here)] and additional plugins are being developed for Arduino, NXT, and GoGo.&lt;br /&gt;
&lt;br /&gt;
===How to install a plugin===&lt;br /&gt;
Plugins are typically distributed as a *.tar.gz archive.&lt;br /&gt;
&lt;br /&gt;
In versions 137+, there is a built-in method for installing plugins from Turtle Art itself:&lt;br /&gt;
# Download the plugin to your Sugar Journal, a USB key, or $HOME/Documents.&lt;br /&gt;
# Click on the &#039;Load plugin&#039; button found on the Activity toolbar.&lt;br /&gt;
# Select the plugin downloaded in Step 1.&lt;br /&gt;
# Go to the Palette toolbar to confirm that the plugin has installed and loaded properly.&lt;br /&gt;
&lt;br /&gt;
In early versions of Turtle Art, please follow these instructions:&lt;br /&gt;
&lt;br /&gt;
[[File:Archivemanager.jpg]]&lt;br /&gt;
&lt;br /&gt;
In Gnome, click on the link in your browser and open with Archive Manager, extract the files in the plugins directory of the archive  to&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
you may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
If your distribution does not include Gnome, the following commands in Terminal will download the Physics archive to the current directory&lt;br /&gt;
&lt;br /&gt;
 cd ~/Activities/TurtleArt.activity&lt;br /&gt;
 wget http://wiki.sugarlabs.org/images/c/c1/Physics-plugin.tar.gz&lt;br /&gt;
 gunzip Physics-plugin.tar.gz&lt;br /&gt;
 tar xvf Physics-plugin.tar&lt;br /&gt;
&lt;br /&gt;
Note that you should not need root access to install plugins into your home directory.&lt;br /&gt;
&lt;br /&gt;
===How to uninstall a plugin===&lt;br /&gt;
Your plugin is installed in a subdirectory of&lt;br /&gt;
&lt;br /&gt;
 /home/olpc/Activities/TurtleArt.activity/plugins&lt;br /&gt;
&lt;br /&gt;
In Terminal or Gnome, delete that subdirectory. You may need to make the Activities directory writeable first, in Terminal type&lt;br /&gt;
&lt;br /&gt;
 chmod 777 /home/olpc/Activities&lt;br /&gt;
&lt;br /&gt;
===Available plugins===&lt;br /&gt;
These plugins would typically already be installed&lt;br /&gt;
* turtleart-extras (the extra palettes that distinguish Turtle Blocks from Turtle Art)&lt;br /&gt;
* turtleart-camera&lt;br /&gt;
* turtleart-sensors &lt;br /&gt;
* rfid (This plugin allows interfacing with a RFID reader)&lt;br /&gt;
&lt;br /&gt;
====Butia====&lt;br /&gt;
&lt;br /&gt;
Add a palette to control the Butiá robot&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
And a extra palette to control the hacks pin of USB4Butiá board and special sensors:&lt;br /&gt;
&lt;br /&gt;
[[File:butia_palette_extra.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Andrés Aguirre is part of the Butiá team in Montevideo:&lt;br /&gt;
:We have released the 1.0 version of the sources, which has full integration with tortugarte (http://www.fing.edu.uy/inco/proyectos/butia/publicaciones.html). Last month we gave away nearly 30 Butiá robots in a robotic event organized by the University. These robots were given to secondary schools throughout the country, in this event we gave some tutorials and exercises to do with our help. One of the schools made a great line follower in tortugarte ;) : http://www.youtube.com/watch?v=Szp0LWLyPIg Then on the second day we give some tutorials and some children really enjoyed the experience, like Pedro a 10 year old child who really has programming skills! http://www.flickr.com/photos/butiarobot/5059177334/ http://www.youtube.com/aguirrea#p/u/7/p0y11iyhFko &lt;br /&gt;
:In future months we will go to the schools where we give the robots to continue teaching and giving new challenges. If you would like to see more about Butiá, we have a flickr site: http://www.flickr.com/photos/butiarobot/ and also a web page: http://www.fing.edu.uy/inco/proyectos/butia &lt;br /&gt;
&lt;br /&gt;
Butiá is also featured in a short film by Antel [http://www.adinettv.com.uy/video/2932] (go to 1:30).&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia Proyecto Butiá] (in Spanish) , [[Activities/TurtleBots]] (in English)&lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/projects/butia/?source=directory Butia in SourceForge]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/butia_plugin.tar.gz butia_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====FollowMe====&lt;br /&gt;
&lt;br /&gt;
This plugin uses the camera and get the position of an object of a color.&lt;br /&gt;
The plugin add this palette:&lt;br /&gt;
[[File:turtleart-followme-palette2.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;classic&amp;quot; use: on &amp;quot;Start&amp;quot;, use the &amp;quot;Calibrate&amp;quot; block to open a window that shows the camera output. In the center of that window there is red square. The FollowMe Plugin uses an algorithm that obtains the &amp;quot;promedial&amp;quot; color of the object in the square. The result of that algorithm is shown in a small square in the corner. When you consider that the color is a good &amp;quot;representation of the object&amp;quot;,  press any key, the window will close, and FollowMe will use this color. After calibration, you can use the &amp;quot;X position&amp;quot; and &amp;quot;Y position&amp;quot; blocks. The block &amp;quot;X position&amp;quot; is the &amp;quot;center&amp;quot; of the object seen by the camera along the &amp;quot;X&amp;quot; (horizontal) axis. This value is an integer between 0 and 320. When the object is not detected,the algorithm returns -1. The operation of the &amp;quot;Y position&amp;quot; block are the same, but returns the position respect the &amp;quot;Y&amp;quot; (vertical) axis. The value returned is between 0 and 240.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-classic.png|250px]]&lt;br /&gt;
&lt;br /&gt;
When you know the color to &amp;quot;follow&amp;quot; (it occurs rarely, since the color varies under changing light conditions) you can use the &amp;quot;Follow RGB&amp;quot; block. This block sets the color directly to the algorithm. In all cases, the color has a threshold of 25 in each component set by default. With the &amp;quot;Threshold&amp;quot; block this value can be changed.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-specificcolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
The third option, is to use the &amp;quot;FollowMe&amp;quot; block that &amp;quot;follows&amp;quot; a generic color similar to that shown.&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-turtlecolor.png|250px]]&lt;br /&gt;
&lt;br /&gt;
Videos of the plugin ongoing:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=ECP_GoTUm00 FollowMe plugin in TurtleArt - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=r6BIcfnVuwU FollowMe plugin in TurtleArt - Part 2]&lt;br /&gt;
&lt;br /&gt;
The code used in this videos:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-followme-example-ongoing.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/followme_plugin.tar.gz followme_plugin.tar.gz]&lt;br /&gt;
&lt;br /&gt;
====Pattern detection====&lt;br /&gt;
&lt;br /&gt;
Add a palette to enable pattern detection with the camera. &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionPalette.png]]&lt;br /&gt;
&lt;br /&gt;
This palette adds blocks to detect ARToolkit patterns and the distance to them. This plugin is an ARToolkit wrapper, and comes with several traffic signals already configured. &lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
Here are some samples and videos on how to use the palette blocks.&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleStop.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}} &lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleYield.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[[File:PatternDetectionSampleWrongWay.png | top]] {{#widget:YouTube|id=vF9ZhQYIwVg}}&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php/Butia_reconocimiento_marcas Pattern detection plugin] (in Spanish) &lt;br /&gt;
&lt;br /&gt;
=====GIT code=====&lt;br /&gt;
&lt;br /&gt;
Hosted with the Butiá source&lt;br /&gt;
[http://sourceforge.net/p/butia/code/ci/dcc226276a565a54bbdf1807c30ff50aa648f70f/tree/turtle_art_plugin/pattern_detection/ Pattern Detection in SourceForge (part of Butia project)]&lt;br /&gt;
&lt;br /&gt;
====WeDo====&lt;br /&gt;
&lt;br /&gt;
Tony Forster created a [http://tonyforster.blogspot.com/2012/01/wedo-plugin-for-turtle-art.html WeDo plugin] based on the [https://github.com/itdaniher/WeDoMore/tree/master/TurtleArt work of I.T. Daniher]. Alan Aguiar has also helped with the plugin.&lt;br /&gt;
&lt;br /&gt;
The source code repository is available here: [https://github.com/itdaniher/wedomore].&lt;br /&gt;
&lt;br /&gt;
[[File:WeDo plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Download=====&lt;br /&gt;
&lt;br /&gt;
* [[File:Wedo_plugin_2.tar.gz]] Version 2, which supports multiple WeDo devices.&lt;br /&gt;
* [[File:Wedo_plugin.tar.gz]] Version 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Check out https://github.com/itdaniher/WeDoMore/tree/master/udev for instructions on how to setup the proper permissions talk to the device. In the new versions of Sugar the udev is included.&lt;br /&gt;
&lt;br /&gt;
====LEGO NxT====&lt;br /&gt;
&lt;br /&gt;
Motors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
Sensors palette:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-palette-sensors.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-lego-nxt-example1.png]]&lt;br /&gt;
&lt;br /&gt;
Moving the Turtle:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=C6Na6MRfyEc Example - Part 1]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=UlD-c2CE0bs Example - Part 2]&lt;br /&gt;
&lt;br /&gt;
A crane:&lt;br /&gt;
[http://www.youtube.com/watch?v=S8HRbDLO7LM Example of Crane]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/nxt_plugin NXT_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
LEGO NxT Plugin [[File:nxt_plugin.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
====Expeyes====&lt;br /&gt;
&lt;br /&gt;
The Expeyes Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:eyes.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Expeyes.png|300px]]&lt;br /&gt;
&lt;br /&gt;
This is a first pass at a plugin for the ExpEyes Junior. For more info, see [http://expeyes.in].&lt;br /&gt;
&lt;br /&gt;
Note that you need to set up the udev rules for the device before first using this plugin by running the postinst script bundled with the plugin:&lt;br /&gt;
&lt;br /&gt;
 sudo sh ~/Activities/TurtleArt.activity/plugins/eyes/postinst&lt;br /&gt;
&lt;br /&gt;
====Arduino====&lt;br /&gt;
&lt;br /&gt;
The Arduino Plugin:&lt;br /&gt;
&lt;br /&gt;
[[File:turtleart-arduino-palette.png|1050px]]&lt;br /&gt;
&lt;br /&gt;
There are several efforts to develop Turtle Art support for Arduino.&lt;br /&gt;
&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/arduino-fork-of-turtle-art.html Setting up Turtle Arduino]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-display-inputs.html Read digital inputs] [[File:Ard.ta]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2010/10/turtle-arduino-digital-write.html Arduino write output] [[File:Turtle Art Activity ardout.ta]] [[File:Tamyblock mouse.odt]]&lt;br /&gt;
* [http://tonyforster.blogspot.com/2012/01/arduino-and-xo-laptop.html The Freetronics Leostick]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Arduino functionality was corrected from previous versions:&lt;br /&gt;
* Analog and digital reading now works correctly&lt;br /&gt;
* Auto detection of ttyUSBx port for FTDI device (Arduino board uses this for USB)&lt;br /&gt;
&lt;br /&gt;
It requires the Firmata protocol to be uploaded to the Arduino board. (see [http://wiki.laptop.org/go/Arduino here])&lt;br /&gt;
Use the latest Firmata version (2.1 as of now) downloaded from the Firmata page (firmata.org)&lt;br /&gt;
The Firmata version included with the Arduino IDE has some inconsistencies.&lt;br /&gt;
&lt;br /&gt;
This version has english and spanish translations.&lt;br /&gt;
&lt;br /&gt;
=====Examples=====&lt;br /&gt;
[[File:turtleart-arduino-example1.png]]&lt;br /&gt;
&lt;br /&gt;
=====GIT code =====&lt;br /&gt;
&lt;br /&gt;
You can see all code in: [http://git.sugarlabs.org/arduino arduino_plugin GIT]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
The plugin file can be downloaded from [[File:arduino.tar.gz]].&lt;br /&gt;
&lt;br /&gt;
====Currency====&lt;br /&gt;
This plugin adds a pallette of currency (notes and coins), these items can be acted on by arithmetic operators&lt;br /&gt;
&lt;br /&gt;
[[File:Oz currency.png|250px]] [[File:Soles.png|250px]]&lt;br /&gt;
&lt;br /&gt;
:[[File:Oz-coins.tar.gz]] Australian coins plugin&lt;br /&gt;
:[[File:Oz-bills.tar.gz]] Australian bills plugin&lt;br /&gt;
:[[File:Oz-coins-and-bills.tar.gz]] Australian coins and bills plugin&lt;br /&gt;
:[[File:Colombia-currency.tar.gz]] Colombian peso plugin&lt;br /&gt;
:[[File:Mexican-currency.tar.gz]] Mexican peso plugin&lt;br /&gt;
:[[File:Paraguay-currency.tar.gz]] Paraguay Gurani plugin&lt;br /&gt;
:[[File:Rwanda-currency.tar.gz]] Rwanda francs plugin&lt;br /&gt;
:[[File:UY-currency.tar.gz]] Uruguayan peso plugin &lt;br /&gt;
:[[File:US-bills.tar.gz]] US dollars plugin&lt;br /&gt;
:[[File:Soles.tar.gz]] Peruvian Soles plugin&lt;br /&gt;
:&amp;lt;strike&amp;gt;[[File:US-currency.tar.gz]] US dollars plugin&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Nutrition====&lt;br /&gt;
This is just a first rough pass at a plugin do calculations on the nutritional value of different food types. The plugin itself comes with some sample foods: apples, bananas, cookies, and cake. It is expected that the food choices will be customized by deployment. See https://www.choosemyplate.gov/SuperTracker/ for nutritional values (calories, protein, carbohydrates, fiber, and fat) of different foods.&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.png|250px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Food-plugin.tar.gz]] (&#039;&#039;&#039;Note:&#039;&#039;&#039; Requires TurtleBlocks v133 or greater)&lt;br /&gt;
&lt;br /&gt;
==== Physics ====&lt;br /&gt;
This plugin allows you to construct a Physics model which can be saved to the Journal and run with the Physics Activity [[Activities/Physics]]&lt;br /&gt;
&lt;br /&gt;
[[File:Physics pallette.jpg]]&lt;br /&gt;
&lt;br /&gt;
Use these blocks to create objects that are added to the bodylist and jointlist of a Box2d database used by the Physics Activity. Objects are positioned by the turtle x,y and colored based on the current pen attributes. From left to right:&lt;br /&gt;
* start polygon: use the current turtle x,y position to specify the first vertex of a polygon&lt;br /&gt;
* add point: use the current turtle x,y position to add a vertex to a polygon&lt;br /&gt;
* end polygon: use the current turtle x,y position to specify the last vertex of a polygon&lt;br /&gt;
* end filled polygon: use the current turtle x,y position to specify the last vertex of a &#039;&#039;filled&#039;&#039; polygon&lt;br /&gt;
: &#039;&#039;&#039;Note:&#039;&#039;&#039; The polygon must be &#039;normal&#039;, e.g., no crossed lines; no holes. Since Box2d does not support concave polygons, all polygons are converted to triangles (triangulation). (In Turtle Blocks, these triangles are shown by slight variations in color.)&lt;br /&gt;
* triangle: add a triangle object at the current turtle x,y position&lt;br /&gt;
* circle: add a circle object at the current turtle x,y position&lt;br /&gt;
* rectangle: add a rectangle object at the current turtle x,y position&lt;br /&gt;
* gear: add a gear object at the current turtle x,y position with the number of teeth as the argument&lt;br /&gt;
* motor: add a motor at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* pin: add a pin at the current turtle x,y position (attached to the object at this position)&lt;br /&gt;
* joint: add a joint between the object at the current turtle x,y position and the object at x, y&lt;br /&gt;
* density: set the object density (0 is light; 1 is heavy)&lt;br /&gt;
* friction: set the object friction (0 is slippery; 1 is sticky)&lt;br /&gt;
* bounciness: set the object restitution (0 is rigid; 1 is bouncy)&lt;br /&gt;
* save as Physics project: save the current bodylist and jointlist as a Physics project in the Journal&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The current model is cleared whenever the Erase button is pressed or a Clean block is run.&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
A simple gear and motor generated in Turtle Art:&lt;br /&gt;
&lt;br /&gt;
[[File:TAGearTA.png|300px]]&lt;br /&gt;
[[File:TAGear.png|300px]]&lt;br /&gt;
&lt;br /&gt;
[[File:TAgear.ta]] [[File:Gear.physics]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
&lt;br /&gt;
[[File:Physics-plugin.tar.gz]] Physics plugin&lt;br /&gt;
&lt;br /&gt;
==== Logic ====&lt;br /&gt;
This plugin provides logical bit operations in Turtle Art, such as AND, OR, XOR, NOT, logical shift left, logical shift right.&lt;br /&gt;
&lt;br /&gt;
[[File:Logic.png]]&lt;br /&gt;
&lt;br /&gt;
===== Example =====&lt;br /&gt;
[[File:And.png|300px]]&lt;br /&gt;
[[File:Lsl2.png|300px]]&lt;br /&gt;
&lt;br /&gt;
=====Downloads=====&lt;br /&gt;
[[File:Logic.tar.gz]] Logic plugin&lt;br /&gt;
&lt;br /&gt;
=== GNOME plugins ===&lt;br /&gt;
There are some plugins that are specific to running Turtle Art from the GNOME desktop. These include mechanisms for uploading projects to Facebook (See [[Activities/TurtleArt/Fb_plugin.py]] and http://turtleartsite.appspot.com/&lt;br /&gt;
&lt;br /&gt;
([[File:Turtleblocks-167.1.xo]] is the Alpha version of Turtle Art for GTK3. It requires GTK3 and GST1 (both available in Sugar 0.98 on [http://wiki.laptop.org/go/13.1.0 OLPC 13.1.0 builds]) This version includes the Facebook plugin.&lt;br /&gt;
&lt;br /&gt;
===TurtleArt + icaro = Tortucaro===&lt;br /&gt;
&lt;br /&gt;
See http://proyectofedora.org/argentina/?p=320&lt;br /&gt;
&lt;br /&gt;
(The above link is down. The cached version of the page can be found at [http://webcache.googleusercontent.com/search?q=cache:Vab9UyzE61MJ:proyectofedora.org/argentina/%3Fp%3D320+&amp;amp;cd=1&amp;amp;hl=es&amp;amp;ct=clnk&amp;amp;gl=ar])&lt;br /&gt;
&lt;br /&gt;
===How to write a plugin===&lt;br /&gt;
&lt;br /&gt;
Your plugin should be placed in a subdirectory of the plugins directory. In that subdirectory, you need to create a .py file that defines a subclass of the Plugin class. The directory and .py file must have the same name and the subclass must also have the same name, with the additional requirement that the first letter of the class name be capitalized.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* the camera plugin, &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt; is in &amp;lt;code&amp;gt;./plugins/camera_sensor&amp;lt;/code&amp;gt;&lt;br /&gt;
* the class, &amp;lt;code&amp;gt;Camera_sensor&amp;lt;/code&amp;gt; is defined in &amp;lt;code&amp;gt;camera_sensor.py&amp;lt;/code&amp;gt;, e.g.,&lt;br /&gt;
&lt;br /&gt;
 from plugins.plugin import Plugin&lt;br /&gt;
 class Camera_sensor(Plugin):&lt;br /&gt;
&lt;br /&gt;
In that subdirectory, you will also need a __init__.py file (which can be empty) and optionally, an icon subdirectory for your palette icon.&lt;br /&gt;
&lt;br /&gt;
Turtle Art calls the __init__ method when starting up and traps import errors as its means to determine whether or not a plugin has the resources it needs to run. (You may want to remove this exception handler when debugging your plugin. It is in the _init_plugins method in tawindow.py.) It then calls the setup method when creating the palettes. It calls the start method whenever a stack of blocks is run and the stop method when execution is over. Also, there are methods for goto_background, return_to_foreground, and quit. (These methods are typically ignored.)&lt;br /&gt;
&lt;br /&gt;
Adding a new palette is simply a matter of:&lt;br /&gt;
&lt;br /&gt;
    palette = make_palette(&#039;mypalette&#039;,  # the name of your palette&lt;br /&gt;
                           colors=[&amp;quot;#00FF00&amp;quot;, &amp;quot;#00A000&amp;quot;],&lt;br /&gt;
                           help_string=_(&#039;Palette of my custom commands&#039;))&lt;br /&gt;
&lt;br /&gt;
For example, if we want to add a new turtle command, &#039;uturn&#039;, we&#039;d use the&lt;br /&gt;
add_block method in the Palette class.&lt;br /&gt;
&lt;br /&gt;
    palette.add_block(&#039;uturn&#039;,  # the name of your block&lt;br /&gt;
                      style=&#039;basic-style&#039;,  # the block style&lt;br /&gt;
                      label=_(&#039;u turn&#039;),  # the label for the block&lt;br /&gt;
                      prim_name=&#039;uturn&#039;,  # code reference (see below)&lt;br /&gt;
                      help_string=_(&#039;turns the turtle 180 degrees&#039;))&lt;br /&gt;
&lt;br /&gt;
    # Next, you need to define what your block will do:&lt;br /&gt;
    # def_prim takes 3 arguments: the primitive name, the number of&lt;br /&gt;
    # of arguments, 0 in this case, and the function to call, in this&lt;br /&gt;
    # case, the canvas function to set the heading.&lt;br /&gt;
    self.tw.lc.def_prim(&#039;uturn&#039;, 0, lambda self: self.tw.canvas.seth(self.tw.canvas.heading + 180))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s it. When you next run Turtle Art, you will have a &#039;uturn&#039; block&lt;br /&gt;
on the &#039;mypalette&#039; palette.	&lt;br /&gt;
&lt;br /&gt;
You will have to create icons for the palette-selector buttons. These&lt;br /&gt;
are kept in the icons subdirectory. You need two icons:&lt;br /&gt;
mypaletteoff.svg and mypaletteon.svg, where &#039;mypalette&#039; is the same&lt;br /&gt;
string as the entry you used in instantiating the Palette class. Note&lt;br /&gt;
that the icons should be the same size (55x55) as the others. (This is&lt;br /&gt;
the default icon size for Sugar toolbars.)&lt;br /&gt;
&lt;br /&gt;
As of Turtle Art v137, there is a built-in mechanism for installing plugins. Please include a plugin.info file in the top level of your tar.gz bundle.&lt;br /&gt;
&lt;br /&gt;
 plugin.info&lt;br /&gt;
 myplugin&lt;br /&gt;
    myplugin.py&lt;br /&gt;
    __init.py__&lt;br /&gt;
    icons&lt;br /&gt;
       mypluginoff.svg&lt;br /&gt;
       mypluginon.svg&lt;br /&gt;
&lt;br /&gt;
The plugin.info file must contain the following sections and fields:&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=the name of your plugin&lt;br /&gt;
 palette=the names of any palettes created by your plugin as a comma-separated list&lt;br /&gt;
&lt;br /&gt;
e.g.,&lt;br /&gt;
&lt;br /&gt;
 [Plugin]&lt;br /&gt;
 name=food&lt;br /&gt;
 palette=eatme, food&lt;br /&gt;
&lt;br /&gt;
Other fields, such as version, license, etc. may be used in the future.&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionPalette.png&amp;diff=86106</id>
		<title>File:PatternDetectionPalette.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionPalette.png&amp;diff=86106"/>
		<updated>2013-02-05T21:20:17Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleYield.png&amp;diff=86105</id>
		<title>File:PatternDetectionSampleYield.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleYield.png&amp;diff=86105"/>
		<updated>2013-02-05T21:00:01Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleWrongWay.png&amp;diff=86104</id>
		<title>File:PatternDetectionSampleWrongWay.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleWrongWay.png&amp;diff=86104"/>
		<updated>2013-02-05T20:59:52Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleStop.png&amp;diff=86103</id>
		<title>File:PatternDetectionSampleStop.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:PatternDetectionSampleStop.png&amp;diff=86103"/>
		<updated>2013-02-05T20:59:37Z</updated>

		<summary type="html">&lt;p&gt;Rafael sisto: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rafael sisto</name></author>
	</entry>
</feed>