<?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=Emilyo11</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=Emilyo11"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/Emilyo11"/>
	<updated>2026-05-30T03:14:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:Clock-nice.png&amp;diff=101204</id>
		<title>File:Clock-nice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:Clock-nice.png&amp;diff=101204"/>
		<updated>2018-01-20T08:13:02Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: Emilyo11 uploaded a new version of File:Clock-nice.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Emilyo11&amp;diff=101203</id>
		<title>User:Emilyo11</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Emilyo11&amp;diff=101203"/>
		<updated>2018-01-20T08:12:00Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: Hello World&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:Clock-nice.png&amp;diff=101202</id>
		<title>File:Clock-nice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:Clock-nice.png&amp;diff=101202"/>
		<updated>2018-01-20T08:08:23Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: Emilyo11 uploaded a new version of File:Clock-nice.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Features/GTK3/Porting&amp;diff=101092</id>
		<title>Features/GTK3/Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Features/GTK3/Porting&amp;diff=101092"/>
		<updated>2017-12-23T07:08:40Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: edit grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Porting an existing activity to GTK3=&lt;br /&gt;
This is a guide to porting an existing activity from GTK2 to [http://developer.gnome.org/gtk3/stable/ GTK3]. It also shows the changes to use the new Sugar toolkit that also now uses [[Features/GTK3|GTK3]]. This guide uses the [http://git.sugarlabs.org/hello-world hello-world] activity as a simple example.&lt;br /&gt;
&lt;br /&gt;
There is another guide written from scratch that uses this one as reference. It was done porting GetBooks Activity [[Features/GTK3/Porting/GetBooks]]&lt;br /&gt;
&lt;br /&gt;
If you would like to reference other examples of GTK3 port:&lt;br /&gt;
* [https://github.com/sugarlabs/biorhythm/commit/c16de3b70cce2cc6f8af933e2b062c844a47c144/ Biorhythm]&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
Before you start porting your activity you are encouraged to branch off a stable branch. This will allow you to keep on doing stable releases on the stable branch and new releases on the master branch. We highly recommend that you use the &#039;sugar-0.94&#039; as the stable branch name because this will keep the repositories consistent and eases the development work. Let&#039;s step through this with a real life example:&lt;br /&gt;
&lt;br /&gt;
The latest release of hello-world was version 3 (commit 04fb9beb708f1078aae93995da3ec06bac7aa433). We want to branch off at that point. If you did not do any changes after the last stable commit simply create a branch with:&lt;br /&gt;
 git branch sugar-0.94&lt;br /&gt;
&lt;br /&gt;
If you have already made commits after that, you need to go to that commit first and create a branch at that specific point in our case commit 04fb9beb708f1078aae93995da3ec06bac7aa433, there is a command to do that in one go:&lt;br /&gt;
 git checkout -b sugar-0.94 04fb9beb708f1078aae93995da3ec06bac7aa433&lt;br /&gt;
 &lt;br /&gt;
In both cases this has created a local branch, as you can see by running &#039;git branch&#039;; you should see the following (if you did the second command you will have sugar-0.94 already selected):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch&lt;br /&gt;
* master&lt;br /&gt;
  sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;sugar-0.94&#039; branch is only available locally, as you can see by running &#039;git branch -r&#039; which shows the remote branches:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch -r&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/master&lt;br /&gt;
  origin/sucrose-0.84&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only branch available besides the master branch is the &#039;sucrose-0.84&#039; branch. Let&#039;s push now our new branch to the remote repository to make it available for others:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The branch is now listed as a remote branch. You can verify as well on your [http://git.sugarlabs.org/hello-world/mainline gitorious page].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch -r&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/master&lt;br /&gt;
  origin/sucrose-0.84&lt;br /&gt;
  origin/sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can switch now between those branches using &#039;git checkout &amp;lt;branch&amp;gt;&#039;. And you can use &#039;git branch&#039; to see which branch you are on (the one with the * before is the branch you are currently on).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout sugar-0.94&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cleanup, adopt to API changes in sugar-toolkit-gtk3 ==&lt;br /&gt;
&#039;&#039;This should be done only on the master branch&#039;&#039;! In the new sugar-toolkit-gtk3 we have removed old API, you should adjust your activity accordingly:&lt;br /&gt;
* the keep button has been removed completely&lt;br /&gt;
* the old-style toolbar has been removed&lt;br /&gt;
* do not use set_toolbox anymore use set_toolbar_box instead (see in [http://git.sugarlabs.org/~walter/abacus/walter-cairo/commit/6871dd340a89ade3b5361457e1bd1d58276a8efc Abacus])&lt;br /&gt;
* remove import of deprecated ActivityToolbox (see [http://git.sugarlabs.org/hello-world/mainline/commit/22060a3063b2d6fd38d6b1cd8d44946170255af3 hello-world])&lt;br /&gt;
* support for &#039;service_name&#039; and &#039;class&#039; has been removed from the activity.info make sure you are using: &#039;bundle_id&#039; instead of &#039;service_name&#039; and &#039;exec&#039; instead of &#039;class&#039; (see in [http://git.sugarlabs.org/record/mainline/commit/6e8968c71e474e2d8d86886badf5cf7d70217dc5 Record])&lt;br /&gt;
&lt;br /&gt;
==Port the activity from GTK2 to GTK3==&lt;br /&gt;
To start, change the importing instruction for GTK from&lt;br /&gt;
 import gtk&lt;br /&gt;
to&lt;br /&gt;
 from gi.repository import Gtk&lt;br /&gt;
&lt;br /&gt;
Remember to import the gi module and specify the Gtk version as 3.0 as well.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import gi&lt;br /&gt;
gi.require_version(&#039;Gtk&#039;, &#039;3.0&#039;)&lt;br /&gt;
from gi.repository import Gtk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you have to change each call that involves Gtk, for example creating a button will look now like this:&lt;br /&gt;
 button = Gtk.Button()&lt;br /&gt;
&lt;br /&gt;
A simple hello world program in GTK3 looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from gi.repository import Gtk&lt;br /&gt;
&lt;br /&gt;
def _destroy_cb(widget, data=None):&lt;br /&gt;
    Gtk.main_quit()&lt;br /&gt;
&lt;br /&gt;
w = Gtk.Window()&lt;br /&gt;
w.connect(&amp;quot;destroy&amp;quot;, _destroy_cb)&lt;br /&gt;
label = Gtk.Label(&#039;Hello World!&#039;)&lt;br /&gt;
w.add(label)&lt;br /&gt;
w.show_all()&lt;br /&gt;
&lt;br /&gt;
Gtk.main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For porting your activity you do have to change your calls for accessing widgets and services in the new GTK3 sugar-toolkit as well. The new namespace is called [https://developer.sugarlabs.org/sugar3/ sugar3], trying to reflect that GTK3 is the underlying technology. For example the import of the base activity class has to be changed from&lt;br /&gt;
 from sugar.activity import activity&lt;br /&gt;
to&lt;br /&gt;
 from sugar3.activity import activity&lt;br /&gt;
&lt;br /&gt;
Make sure you change the setup.py in your activity to point to the new toolkit as well:&lt;br /&gt;
  from sugar3.activity import bundlebuilder&lt;br /&gt;
&lt;br /&gt;
The changes that were needed to port the hello-world activity can be seen in [http://git.sugarlabs.org/hello-world/mainline/commit/508e1c518b56cbde5508e560c8a2ff38a3518583 this commit].&lt;br /&gt;
&lt;br /&gt;
Ok, let&#039;s do these changes now for your activity. Make sure you are in your master branch using the &#039;git branch&#039; command (the master branch should have a &#039;*&#039; before it). Make your changes, commit them (&#039;git commit -a&#039;) and push them to the remote repository (&#039;git push origin master&#039;).&lt;br /&gt;
&lt;br /&gt;
====Simple example on creating a toolbar====&lt;br /&gt;
One of Sugar&#039;s activity most unique user interface includes the toolbar. In order to reference the relevant modules and graphics, the sugar3 library has to be imported. These are the relevant ones that would enable us to create a simple toolbar containing the activity button and the stop button.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from sugar3.activity import activity&lt;br /&gt;
from sugar3.graphics.toolbarbox import ToolbarBox&lt;br /&gt;
from sugar3.activity.widgets import ActivityToolbarButton&lt;br /&gt;
from sugar3.activity.widgets import StopButton&lt;br /&gt;
from sugar3.graphics.toolbarbox import ToolbarButton&lt;br /&gt;
from sugar3.graphics import style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the ActivityToolbar() module has been deprecated, the toolbar can now be called using&lt;br /&gt;
 ToolbarBox()&lt;br /&gt;
Then, from the ToolbarBox(), include the ActivityButton and StopButton. In order for the StopButton to be align to the right as per Sugar activity interface, a separator has to be included as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
toolbar_box = ToolbarBox()&lt;br /&gt;
&lt;br /&gt;
activity_button = ActivityToolbarButton(self)&lt;br /&gt;
toolbar_box.toolbar.insert(activity_button, 0)&lt;br /&gt;
activity_button.show()&lt;br /&gt;
&lt;br /&gt;
separator = Gtk.SeparatorToolItem()&lt;br /&gt;
separator.props.draw = False&lt;br /&gt;
separator.set_expand(True)&lt;br /&gt;
toolbar_box.toolbar.insert(separator, -1)&lt;br /&gt;
separator.show()&lt;br /&gt;
&lt;br /&gt;
stop_button = StopButton(self)&lt;br /&gt;
toolbar_box.toolbar.insert(stop_button, -1)&lt;br /&gt;
stop_button.show()&lt;br /&gt;
self.set_toolbar_box(toolbar_box)&lt;br /&gt;
toolbar_box.show()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
There are tools to help you do the porting. There is a script in the pygobject repository for porting called [http://git.gnome.org/browse/pygobject/tree/pygi-convert.sh pygi-convert.sh], more info about the script can be found in [http://live.gnome.org/PyGObject/IntrospectionPorting the PyGObject Introspection Porting guide].&lt;br /&gt;
&lt;br /&gt;
Here is a script to automate the rename of the imports &#039;&#039;&#039;sugar&#039;&#039;&#039; to &#039;&#039;&#039;sugar3&#039;&#039;&#039;: [http://dev.laptop.org/~manuq/sugar-convert.sh sugar-convert.sh].&lt;br /&gt;
&lt;br /&gt;
If you are having trouble finding how a particular GTK class/method/constant has been named in PyGI, run [http://dev.laptop.org/~dsd/20110806/pygi-enumerate.py pygi-enumerate.py] and grep the output. (this app lists all identified methods and constants).  Usage example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python pygi-enumerate.py | grep get_selection&lt;br /&gt;
Gtk.AccelLabel.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.Editable.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.Entry.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.IconView.get_selection_mode() (instance method)&lt;br /&gt;
Gtk.Label.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.SelectionData.get_selection() (instance method)&lt;br /&gt;
Gtk.SpinButton.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.TextBuffer.get_selection_bound() (instance method)&lt;br /&gt;
Gtk.TextBuffer.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.TreeView.get_selection() (instance method)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constructor considerations ===&lt;br /&gt;
&lt;br /&gt;
With PyGI it is possible to use Python-like constructors, or &amp;quot;new&amp;quot; functions e.g. the following are (usually) equivalent:&lt;br /&gt;
 label = Gtk.Button()&lt;br /&gt;
 label = Gtk.Button.new()&lt;br /&gt;
&lt;br /&gt;
However, the first form is preferred: it is more Python-like. Internally, the difference is that Gtk.Label.new() translates to a call to gtk_label_new(), whereas Gtk.Label() (the preferred form) will directly construct an instance of GtkLabel at the GObject level.&lt;br /&gt;
&lt;br /&gt;
If the constructor takes parameters, they &#039;&#039;&#039;must&#039;&#039;&#039; be named. The parameters correspond to GObject properties in the API documentation which are usually marked as &amp;quot;Construct&amp;quot;. For example, the following code will not work:&lt;br /&gt;
&lt;br /&gt;
 expander = Gtk.Expander(&amp;quot;my expander&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The (confusing) error is:&lt;br /&gt;
 TypeError: GObject.__init__() takes exactly 0 arguments (1 given)&lt;br /&gt;
&lt;br /&gt;
The solution is to go to the [http://developer.gnome.org/gtk3/3.2/GtkExpander.html#GtkExpander.properties GtkExpander API documentation] and find the appropriate property that we wish to set. In this case it is &amp;lt;b&amp;gt;label&amp;lt;/b&amp;gt; (which is a Construct property, further increasing our confidence of success), so the code should be:&lt;br /&gt;
&lt;br /&gt;
 expander = Gtk.Expander(label=&amp;quot;my expander&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Combining the two points above, if you wish to call a construct-like function such as gtk_button_new_with_label(), you do have the option of calling Gtk.Button.new_with_label(), however if we check the [http://developer.gnome.org/gtk3/3.2/GtkButton.html#GtkButton.properties GtkButton properties] we see one called &amp;quot;label&amp;quot; which is equivalent. Therefore gtk_button_new_with_label(&amp;quot;foo&amp;quot;) should be called as:&lt;br /&gt;
 button = Gtk.Button(label=&amp;quot;foo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== HBox, VBox, pack_start and pack_end ===&lt;br /&gt;
&lt;br /&gt;
GtkHBox and GtkVBox, commonly used containers in GTK2 code, have pack_start and pack_end methods. These take 4 parameters:&lt;br /&gt;
# The widget to pack into the container&lt;br /&gt;
# &#039;&#039;&#039;expand&#039;&#039;&#039;: Whether the child should receive extra space when the container grows (default True)&lt;br /&gt;
# &#039;&#039;&#039;fill&#039;&#039;&#039;: True if space given to child by the expand option is actually allocated to child, rather than just padding it. This parameter has no effect if expand is set to False. A child is always allocated the full height of a gtk.HBox and the full width of a gtk.VBox. This option affects the other dimension. (default True)&lt;br /&gt;
# &#039;&#039;&#039;padding&#039;&#039;&#039;: extra space in pixels to put between child and its neighbor (default 0)&lt;br /&gt;
&lt;br /&gt;
In PyGTK, the expand, fill and padding parameters were optional: if unspecified, the default values above were used. In PyGI, these parameters are &#039;&#039;&#039;not&#039;&#039;&#039; optional: all 4 must be specified. Hence the rules for adding in the extra parameters are:&lt;br /&gt;
&lt;br /&gt;
# If &#039;&#039;&#039;expand&#039;&#039;&#039; was not set, use value True&lt;br /&gt;
# If &#039;&#039;&#039;fill&#039;&#039;&#039; was not set, use value True. (however, if expand is False, this parameter gets ignored so False is an equally acceptable option when expand=False)&lt;br /&gt;
# If &#039;&#039;&#039;padding&#039;&#039;&#039; was not set, use value 0.&lt;br /&gt;
&lt;br /&gt;
These parameters can be specified either as positional arguments or as named keyword arguments, however all 4 must always be specified. Some developers prefer keyword arguments, arguing that the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, expand=True, fill=False, padding=4)&amp;lt;/pre&amp;gt;&lt;br /&gt;
is much more readable than:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, True, False, 4)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, these functions are called extremely often; any mildly seasoned GTK developer will have memorized the order and meaning of the parameters. Some developers therefore prefer to avoid the extra work of dropping in hundreds of keyword arguments throughout the code and just use the positional ones. This is really up to you.&lt;br /&gt;
&lt;br /&gt;
If you are using pack_start with the default values (expand=True, fill=True and padding=0), you can avoid using pack_start (and the parameter pain that it brings with it) by just using .add for some added cleanliness, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, True, True, 0)&amp;lt;/pre&amp;gt;&lt;br /&gt;
can be replaced with:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.add(widget)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is as far as you need to go for now. However, in GTK3, GtkVBox and GtkHBox have been deprecated, which means they might be removed in GTK3. The replacement is to use GtkBox directly, and you may wish to make this change now. e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, homogeneous=True, spacing=8)&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, it must be noted that if GtkBox is used directly (instead of using GtkHBox/GtkVBox), the default value of &#039;&#039;&#039;expand&#039;&#039;&#039; is now &#039;&#039;&#039;False&#039;&#039;&#039;. The implications of this are:&lt;br /&gt;
# You need to check your .add() calls, as previously they would behave as pack_start with expand=True, but now they will behave as expand=False (you need to change them to use pack_start with expand=True to retain the old behaviour)&lt;br /&gt;
# Every single pack_start call that has expand=False and padding=0 (and any value of fill) can be converted to .add() for cleanliness&lt;br /&gt;
&lt;br /&gt;
=== GtkAlignment considerations ===&lt;br /&gt;
&lt;br /&gt;
In PyGTK, the gtk.Alignment constructor takes four optional parameters:&lt;br /&gt;
# xalign: the fraction of horizontal free space to the left of the child widget. Ranges from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# yalign: the fraction of vertical free space above the child widget. Ranges from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# xscale: the fraction of horizontal free space that the child widget absorbs, from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# yscale: the fraction of vertical free space that the child widget absorbs, from 0.0 to 1.0. Default value 0.0&lt;br /&gt;
&lt;br /&gt;
In PyGI/GTK3, these parameters are still optional when used in the Gtk.Alignment constructor (as keyword arguments, as explained above). However, the default values have changed. They are now:&lt;br /&gt;
# xalign: default value 0.5&lt;br /&gt;
# yalign: default value 0.5&lt;br /&gt;
# xscale: default value 1&lt;br /&gt;
# yscale: default value 1&lt;br /&gt;
&lt;br /&gt;
If your code was relying on the default value of 0 for any of these parameters in PyGTK, you will now need to explicitly specify that in your constructor. Similarly, if you were previously using construction parameters to select the now-default values, those parameters can be dropped.&lt;br /&gt;
&lt;br /&gt;
Additionally, PyGTK accepted these construction parameters as positional arguments. As explained above, they must now be converted to keyword arguments.&lt;br /&gt;
&lt;br /&gt;
=== Gdk ===&lt;br /&gt;
Previously, gdk was an attribute of the gtk module, which means that it can be called through gtk. For example, if we want to use color_parse():&lt;br /&gt;
 gtk.gdk.color_parse(color)&lt;br /&gt;
However, what we have to do now is:&lt;br /&gt;
 from gi.repository import Gdk&lt;br /&gt;
Then we can modify the code to the following:&lt;br /&gt;
 Gdk.color_parse(color)&lt;br /&gt;
&lt;br /&gt;
=== Pango ===&lt;br /&gt;
Following the release of Gtk3, we should not be importing pango like this:&lt;br /&gt;
 import pango&lt;br /&gt;
In fact, we can now import pango as an attribute within the gtk3 library:&lt;br /&gt;
 from gi.repository import Pango as pango&lt;br /&gt;
&lt;br /&gt;
=== Other considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;self.allocation&#039;&#039; property is no longer available.  Please search your code for &amp;quot;self.allocation&amp;quot; and replace it for &amp;quot;self.get_allocation()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So to get the allocation size:&lt;br /&gt;
&lt;br /&gt;
 self.allocation.width&lt;br /&gt;
 self.allocation.height&lt;br /&gt;
&lt;br /&gt;
should be replaced by:&lt;br /&gt;
&lt;br /&gt;
 self.get_allocated_width()&lt;br /&gt;
 self.get_allocated_height()&lt;br /&gt;
&lt;br /&gt;
=== Constants ===&lt;br /&gt;
&lt;br /&gt;
Most of the constants have slightly different formats, e.g.,&lt;br /&gt;
&lt;br /&gt;
 Gtk.StateFlags.NORMAL&lt;br /&gt;
 Gtk.PolicyType.NEVER&lt;br /&gt;
 Gtk.Justification.LEFT&lt;br /&gt;
&lt;br /&gt;
=== Pixbufs ===&lt;br /&gt;
&lt;br /&gt;
The pixbuf libraies are in their own repository&lt;br /&gt;
&lt;br /&gt;
 from gi.repository import GdkPixbuf&lt;br /&gt;
&lt;br /&gt;
 GdkPixbuf.Pixbuf.new_from_file()&lt;br /&gt;
&lt;br /&gt;
==Make a release==&lt;br /&gt;
===Versioning===&lt;br /&gt;
If you do new releases the versioning of the GTK2 and GTK3 release should be different. For GTK2 releases you should use dotted versions for new development releases major versions. Let&#039;s have a look at hello-world as an example. The latest release of hello-world was version 3. Bug fix releases should be named 3.1 then 3.2 and so on. The new releases for the new development branch should be starting with a major number, in the case of hello-world version 4.&lt;br /&gt;
&lt;br /&gt;
To minimise the maintainer overload we highly encourage you to only do bug-fix releases for the GTK2 branch. New features should only go into the new branch that is based on gobject-introspection and GTK3.&lt;br /&gt;
&lt;br /&gt;
Note that some older versions of Sugar don&#039;t know how to parse dotted version numbers. An alternative to the above is to simply ensure that the version number of the GTK3 branch is always greater than (&amp;gt;) the version number of the GTK2 version. &lt;br /&gt;
&lt;br /&gt;
===GIT conventions===&lt;br /&gt;
We&#039;ve agreed that the GTK3 version should be in the &#039;&#039;&#039;master&#039;&#039;&#039; branch on gitorious.sugarlabs.org. The GTK2 version should be in a branch called &#039;&#039;&#039;gtk2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some helpful git foo:&lt;br /&gt;
&lt;br /&gt;
From your repository, first create the GTK2 branch with:&lt;br /&gt;
 git branch gtk2&lt;br /&gt;
&lt;br /&gt;
Then pull in all GTK3 changes on top of the master branch:&lt;br /&gt;
 git pull git://path/to/gtk3/repo&lt;br /&gt;
&lt;br /&gt;
To move the gtk2 to gitorious.sugarlabs.org:&lt;br /&gt;
 git checkout gtk2&lt;br /&gt;
 git push -u origin gtk2&lt;br /&gt;
&lt;br /&gt;
== Tips to Activity Developers ==&lt;br /&gt;
&lt;br /&gt;
===Changes to the Clipboard===&lt;br /&gt;
Two things to note:&lt;br /&gt;
&lt;br /&gt;
1. You need to specify a clipboard using get()&lt;br /&gt;
    clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)&lt;br /&gt;
2. You need to pass a length to set_text()&lt;br /&gt;
    clipboard.set_text(string, len(string))&lt;br /&gt;
&lt;br /&gt;
See [http://python-gtk-3-tutorial.readthedocs.org/en/latest/clipboard.html] for more details.&lt;br /&gt;
&lt;br /&gt;
===Changes to Drag-and-Drop===&lt;br /&gt;
Slightly different syntax:&lt;br /&gt;
        self.drag_dest_set(Gtk.DestDefaults.ALL, [],&lt;br /&gt;
                           Gdk.DragAction.COPY)&lt;br /&gt;
        self.drag_dest_set_target_list(Gtk.TargetList.new([]))&lt;br /&gt;
        self.drag_dest_add_text_targets()&lt;br /&gt;
        self.connect(&#039;drag_data_received&#039;, self._drag_data_received)&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
        data.get_text()&lt;br /&gt;
or:&lt;br /&gt;
        data.get_image()&lt;br /&gt;
&lt;br /&gt;
See [http://python-gtk-3-tutorial.readthedocs.org/en/latest/drag_and_drop.html] for more details.&lt;br /&gt;
&lt;br /&gt;
===Going from Drawable to Cairo===&lt;br /&gt;
&lt;br /&gt;
GTK-3 does not support gtk Drawable objects, so the first step is to get your activity running under Cairo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cairo&lt;br /&gt;
&lt;br /&gt;
# From activity.Activity, you inherit a canvas.&lt;br /&gt;
# Create a Cairo context from the window.&lt;br /&gt;
cairo_context = self.canvas.get_window().cairo_create()&lt;br /&gt;
&lt;br /&gt;
# Create an XLib surface to be used for drawing&lt;br /&gt;
xlib_surface = surface.create_similar(cairo.CONTENT_COLOR,&lt;br /&gt;
                                      gtk.gdk.screen_width(),&lt;br /&gt;
                                      gtk.gdk.screen_height())&lt;br /&gt;
&lt;br /&gt;
# You&#039;ll need a Cairo context from which you&#039;ll build a GTK Cairo context&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
cairo_context = gtk.gdk.CairoContext(cairo_context)&lt;br /&gt;
&lt;br /&gt;
# Use this context as you would a Drawable, substituting Cairo commands&lt;br /&gt;
# for gtk commands, e.g.,&lt;br /&gt;
cairo_context.move_to(0, 0)&lt;br /&gt;
cairo_context.line_to(100, 100)&lt;br /&gt;
# Cairo uses floats from 0 to 1 for RGB values&lt;br /&gt;
cairo_context.set_source_rgb(r, g, b)&lt;br /&gt;
cairo_context.rectangle(x, y, w, h)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
&lt;br /&gt;
# To invalidate a region to force a refresh, use:&lt;br /&gt;
self.canvas.queue_draw_area(x, y, w, h)&lt;br /&gt;
&lt;br /&gt;
# Handle the expose event&lt;br /&gt;
def do_expose_event(self, event):&lt;br /&gt;
    # Create the cairo context&lt;br /&gt;
    cairo_context = self.canvas.get_window().cairo_create()&lt;br /&gt;
    cairo_context.rectangle(event.area.x, event.area.y,&lt;br /&gt;
                            event.area.width, event.area.height)&lt;br /&gt;
    cairo_context.clip()&lt;br /&gt;
    cairo_context.set_source_surface(xlib_surface)&lt;br /&gt;
    cairo_context.paint()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pango is a bit different when used with Cairo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pango, pangocairo&lt;br /&gt;
&lt;br /&gt;
# Again, from the xlib_surface...&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
&lt;br /&gt;
# Create a PangoCairo context&lt;br /&gt;
cairo_context = pangocairo.CairoContext(cairo_context)&lt;br /&gt;
&lt;br /&gt;
# The pango layout is created from the Cairo context&lt;br /&gt;
pango_layout = cairo_context.create_layout()&lt;br /&gt;
&lt;br /&gt;
# You still use pango to set up font descriptions.&lt;br /&gt;
fd = pango.FontDescription(&#039;Sans&#039;)&lt;br /&gt;
fd.set_size(12 * pango.SCALE)&lt;br /&gt;
&lt;br /&gt;
# Tell your pango layout about your font description&lt;br /&gt;
pango_layout.set_font_description(fd)&lt;br /&gt;
&lt;br /&gt;
# Write text to your pango layout&lt;br /&gt;
pango_layout.set_text(&#039;Hello world&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
# Position it within the Cairo context&lt;br /&gt;
cairo_context.save()&lt;br /&gt;
cairo_context.translate(x, y)&lt;br /&gt;
cairo_context.rotate(pi / 3)  # You can rotate text and images in Cairo&lt;br /&gt;
cairo_context.set_source_rgb(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
# Finally, draw the text&lt;br /&gt;
cairo_context.update_layout(pango_layout)&lt;br /&gt;
cairo_context.show_layout(pango_layout)&lt;br /&gt;
cairo_context.restore()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To draw a bitmap...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Again, from the xlib_surface...&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
&lt;br /&gt;
# Create a gtk context&lt;br /&gt;
cairo_context = gtk.gdk.CairoContext(cairo_context)&lt;br /&gt;
cairo_context.set_source_pixbuf(pixbuf, x, y)&lt;br /&gt;
cairo_context.rectangle(x, y, w, h)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To read a pixel from the xlib surface...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# create a new 1x1 cairo surface&lt;br /&gt;
cairo_surface = cairo.ImageSurface(cairo.FORMAT_RGB24, 1, 1);&lt;br /&gt;
cairo_context = cairo.Context(cairo_surface)&lt;br /&gt;
# translate xlib_surface so that target pixel is at 0, 0&lt;br /&gt;
cairo_context.set_source_surface(xlib_surface, -x, -y)&lt;br /&gt;
cairo_context.rectangle(0,0,1,1)&lt;br /&gt;
cairo_context.set_operator(cairo.OPERATOR_SOURCE)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
cairo_surface.flush() # ensure all writing is done&lt;br /&gt;
# Read the pixel&lt;br /&gt;
return (ord(pixels[2]), ord(pixels[1]), ord(pixels[0]), 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Going from Cairo in GTK-2 to Cairo in GTK-3===&lt;br /&gt;
&lt;br /&gt;
(See http://developer.gnome.org/pangomm/2.28/annotated.html for more details)&lt;br /&gt;
Not much changes, but...&lt;br /&gt;
&lt;br /&gt;
The Cairo/Pango interaction is a little different:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from gi.repository import Pango, PangoCairo&lt;br /&gt;
&lt;br /&gt;
cairo_context = ...&lt;br /&gt;
pango_layout = PangoCairo.create_layout(cairo_context)&lt;br /&gt;
fd = Pango.FontDescription(&#039;Sans&#039;)&lt;br /&gt;
fd.set_size(12 * Pango.SCALE)&lt;br /&gt;
pango_layout.set_font_description(fd)&lt;br /&gt;
pango_layout.set_text(&#039;Hello World&#039;, -1)&lt;br /&gt;
cairo_context.set_source_rgb(1, 0, 0)&lt;br /&gt;
PangoCairo.update_layout(cairo_context, pango_layout)&lt;br /&gt;
PangoCairo.show_layout(cairo_context, pango_layout)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The get_extents() method if different in PangoCairo. It calculates an extent as a Rectangle, but doesn&#039;t return anything. There is a method, get_logical_extents() that returns a Rectangle. Alas, it is not necessarily available after v1.16. Note that Rectangle is not a list but a class with methods for get_x(), get_y(), get_width(), and get_height(), so you cannot iter over it.&lt;br /&gt;
&lt;br /&gt;
==== Replacing pixmaps with Cairo ====&lt;br /&gt;
You need to replace your pixmaps with Cairo in GTK3. See http://developer.gnome.org/gtk3/3.5/ch24s02.html#idp129615008 for example code.&lt;br /&gt;
&lt;br /&gt;
===Taking a screenshot and making a thumbnail===&lt;br /&gt;
To make a screenshot of the window:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
width, height = window.get_width(), window.get_height()&lt;br /&gt;
thumb_surface = Gdk.Window.create_similar_surface(window,&lt;br /&gt;
                                                  cairo.CONTENT_COLOR,&lt;br /&gt;
                                                  width, height)&lt;br /&gt;
&lt;br /&gt;
thumb_width, thumb_height = style.zoom(100), style.zoom(80)&lt;br /&gt;
cairo_context = cairo.Context(thumb_surface)&lt;br /&gt;
thumb_scale_w = thumb_width * 1.0 / width&lt;br /&gt;
thumb_scale_h = thumb_height * 1.0 / height&lt;br /&gt;
cairo_context.scale(thumb_scale_w, thumb_scale_h)&lt;br /&gt;
Gdk.cairo_set_source_window(cairo_context, window, 0, 0)&lt;br /&gt;
cairo_context.paint()&lt;br /&gt;
thumb_surface.write_to_png(png_path_or_filelike_object)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a video widget===&lt;br /&gt;
&lt;br /&gt;
Haven&#039;t gotten this working yet, but some necessary changes include:&lt;br /&gt;
&lt;br /&gt;
Instead of&lt;br /&gt;
 window.xid&lt;br /&gt;
use&lt;br /&gt;
 get_property(&#039;window&#039;).get_xid()&lt;br /&gt;
&lt;br /&gt;
Instead of&lt;br /&gt;
 unset_flags(gtk.DOUBLE_BUFFERED)&lt;br /&gt;
 set_flags(gtk.APP_PAINTABLE)&lt;br /&gt;
use&lt;br /&gt;
 set_double_buffered(False)&lt;br /&gt;
 set_app_paintable(True)&lt;br /&gt;
&lt;br /&gt;
A more basic question is whether or not we migrate to gstreamer-1.0. If we do, some helpful documentation is found here [https://wiki.ubuntu.com/Novacut/GStreamer1.0].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* PyGtk documentation&lt;br /&gt;
:: Gtk3: http://python-gtk-3-tutorial.readthedocs.org&lt;br /&gt;
:: gtk2: http://www.pygtk.org/docs/pygtk/&lt;br /&gt;
* Reference Manual&lt;br /&gt;
:: Gtk3: http://developer.gnome.org/gtk3/3.4/&lt;br /&gt;
* Gdk documentation:&lt;br /&gt;
:: Gdk3: http://developer.gnome.org/gdk/2.24/&lt;br /&gt;
* Pango documentation:&lt;br /&gt;
:: GTK3: http://developer.gnome.org/pangomm&lt;br /&gt;
* Gst-1.0 documentation&lt;br /&gt;
:: Gst-1: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/index.html&lt;br /&gt;
* Gst-1.0 porting hints&lt;br /&gt;
:: https://wiki.ubuntu.com/Novacut/GStreamer1.0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
= More porting wiki pages =&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/Features/GTK3/Porting}}&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Features/GTK3/Porting&amp;diff=101091</id>
		<title>Features/GTK3/Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Features/GTK3/Porting&amp;diff=101091"/>
		<updated>2017-12-23T07:00:12Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: Included sugar3, pango, gdk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Porting an existing activity to GTK3=&lt;br /&gt;
This is a guide to porting an existing activity from GTK2 to [http://developer.gnome.org/gtk3/stable/ GTK3]. It also shows the changes to use the new Sugar toolkit that also now uses [[Features/GTK3|GTK3]]. This guide uses the [http://git.sugarlabs.org/hello-world hello-world] activity as a simple example.&lt;br /&gt;
&lt;br /&gt;
There is another guide written from scratch that uses this one as reference. It was done porting GetBooks Activity [[Features/GTK3/Porting/GetBooks]]&lt;br /&gt;
&lt;br /&gt;
If you would like to reference other examples of GTK3 port:&lt;br /&gt;
* [https://github.com/sugarlabs/biorhythm/commit/c16de3b70cce2cc6f8af933e2b062c844a47c144/ Biorhythm]&lt;br /&gt;
&lt;br /&gt;
==Preparation==&lt;br /&gt;
Before you start porting your activity you are encouraged to branch off a stable branch. This will allow you to keep on doing stable releases on the stable branch and new releases on the master branch. We highly recommend that you use the &#039;sugar-0.94&#039; as the stable branch name because this will keep the repositories consistent and eases the development work. Let&#039;s step through this with a real life example:&lt;br /&gt;
&lt;br /&gt;
The latest release of hello-world was version 3 (commit 04fb9beb708f1078aae93995da3ec06bac7aa433). We want to branch off at that point. If you did not do any changes after the last stable commit simply create a branch with:&lt;br /&gt;
 git branch sugar-0.94&lt;br /&gt;
&lt;br /&gt;
If you have already made commits after that, you need to go to that commit first and create a branch at that specific point in our case commit 04fb9beb708f1078aae93995da3ec06bac7aa433, there is a command to do that in one go:&lt;br /&gt;
 git checkout -b sugar-0.94 04fb9beb708f1078aae93995da3ec06bac7aa433&lt;br /&gt;
 &lt;br /&gt;
In both cases this has created a local branch, as you can see by running &#039;git branch&#039;; you should see the following (if you did the second command you will have sugar-0.94 already selected):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch&lt;br /&gt;
* master&lt;br /&gt;
  sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;sugar-0.94&#039; branch is only available locally, as you can see by running &#039;git branch -r&#039; which shows the remote branches:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch -r&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/master&lt;br /&gt;
  origin/sucrose-0.84&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only branch available besides the master branch is the &#039;sucrose-0.84&#039; branch. Let&#039;s push now our new branch to the remote repository to make it available for others:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The branch is now listed as a remote branch. You can verify as well on your [http://git.sugarlabs.org/hello-world/mainline gitorious page].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[erikos@T61 helloworld]$ git branch -r&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/master&lt;br /&gt;
  origin/sucrose-0.84&lt;br /&gt;
  origin/sugar-0.94&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can switch now between those branches using &#039;git checkout &amp;lt;branch&amp;gt;&#039;. And you can use &#039;git branch&#039; to see which branch you are on (the one with the * before is the branch you are currently on).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout sugar-0.94&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cleanup, adopt to API changes in sugar-toolkit-gtk3 ==&lt;br /&gt;
&#039;&#039;This should be done only on the master branch&#039;&#039;! In the new sugar-toolkit-gtk3 we have removed old API, you should adjust your activity accordingly:&lt;br /&gt;
* the keep button has been removed completely&lt;br /&gt;
* the old-style toolbar has been removed&lt;br /&gt;
* do not use set_toolbox anymore use set_toolbar_box instead (see in [http://git.sugarlabs.org/~walter/abacus/walter-cairo/commit/6871dd340a89ade3b5361457e1bd1d58276a8efc Abacus])&lt;br /&gt;
* remove import of deprecated ActivityToolbox (see [http://git.sugarlabs.org/hello-world/mainline/commit/22060a3063b2d6fd38d6b1cd8d44946170255af3 hello-world])&lt;br /&gt;
* support for &#039;service_name&#039; and &#039;class&#039; has been removed from the activity.info make sure you are using: &#039;bundle_id&#039; instead of &#039;service_name&#039; and &#039;exec&#039; instead of &#039;class&#039; (see in [http://git.sugarlabs.org/record/mainline/commit/6e8968c71e474e2d8d86886badf5cf7d70217dc5 Record])&lt;br /&gt;
&lt;br /&gt;
==Port the activity from GTK2 to GTK3==&lt;br /&gt;
To start, change the importing instruction for GTK from&lt;br /&gt;
 import gtk&lt;br /&gt;
to&lt;br /&gt;
 from gi.repository import Gtk&lt;br /&gt;
&lt;br /&gt;
Remember to import the gi module and specify the Gtk version as 3.0 as well.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import gi&lt;br /&gt;
gi.require_version(&#039;Gtk&#039;, &#039;3.0&#039;)&lt;br /&gt;
from gi.repository import Gtk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you have to change each call that involves Gtk, for example creating a button will look now like this:&lt;br /&gt;
 button = Gtk.Button()&lt;br /&gt;
&lt;br /&gt;
A simple hello world program in GTK3 looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from gi.repository import Gtk&lt;br /&gt;
&lt;br /&gt;
def _destroy_cb(widget, data=None):&lt;br /&gt;
    Gtk.main_quit()&lt;br /&gt;
&lt;br /&gt;
w = Gtk.Window()&lt;br /&gt;
w.connect(&amp;quot;destroy&amp;quot;, _destroy_cb)&lt;br /&gt;
label = Gtk.Label(&#039;Hello World!&#039;)&lt;br /&gt;
w.add(label)&lt;br /&gt;
w.show_all()&lt;br /&gt;
&lt;br /&gt;
Gtk.main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For porting your activity you do have to change your calls for accessing widgets and services in the new GTK3 sugar-toolkit as well. The new namespace is called [https://developer.sugarlabs.org/sugar3/ sugar3], trying to reflect that GTK3 is the underlying technology. For example the import of the base activity class has to be changed from&lt;br /&gt;
 from sugar.activity import activity&lt;br /&gt;
to&lt;br /&gt;
 from sugar3.activity import activity&lt;br /&gt;
&lt;br /&gt;
Make sure you change the setup.py in your activity to point to the new toolkit as well:&lt;br /&gt;
  from sugar3.activity import bundlebuilder&lt;br /&gt;
&lt;br /&gt;
The changes that were needed to port the hello-world activity can be seen in [http://git.sugarlabs.org/hello-world/mainline/commit/508e1c518b56cbde5508e560c8a2ff38a3518583 this commit].&lt;br /&gt;
&lt;br /&gt;
Ok, let&#039;s do these changes now for your activity. Make sure you are in your master branch using the &#039;git branch&#039; command (the master branch should have a &#039;*&#039; before it). Make your changes, commit them (&#039;git commit -a&#039;) and push them to the remote repository (&#039;git push origin master&#039;).&lt;br /&gt;
&lt;br /&gt;
====Simple example on creating a toolbar====&lt;br /&gt;
One of Sugar&#039;s activity most unique user interface includes the toolbar. In order to reference the relevant modules and graphics, the sugar3 library has to be imported. These are the relevant ones that would enable us to create a simple toolbar containing the activity button and the stop button.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from sugar3.activity import activity&lt;br /&gt;
from sugar3.graphics.toolbarbox import ToolbarBox&lt;br /&gt;
from sugar3.activity.widgets import ActivityToolbarButton&lt;br /&gt;
from sugar3.activity.widgets import StopButton&lt;br /&gt;
from sugar3.graphics.toolbarbox import ToolbarButton&lt;br /&gt;
from sugar3.graphics import style&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the ActivityToolbar() module has been deprecated, the toolbar can now be called using&lt;br /&gt;
 ToolbarBox()&lt;br /&gt;
Then, from the ToolbarBox(), include the ActivityButton and StopButton. In order for the StopButton to be align to the right as per Sugar activity interface, a separator has to be included as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
toolbar_box = ToolbarBox()&lt;br /&gt;
&lt;br /&gt;
activity_button = ActivityToolbarButton(self)&lt;br /&gt;
toolbar_box.toolbar.insert(activity_button, 0)&lt;br /&gt;
activity_button.show()&lt;br /&gt;
&lt;br /&gt;
separator = Gtk.SeparatorToolItem()&lt;br /&gt;
separator.props.draw = False&lt;br /&gt;
separator.set_expand(True)&lt;br /&gt;
toolbar_box.toolbar.insert(separator, -1)&lt;br /&gt;
separator.show()&lt;br /&gt;
&lt;br /&gt;
stop_button = StopButton(self)&lt;br /&gt;
toolbar_box.toolbar.insert(stop_button, -1)&lt;br /&gt;
stop_button.show()&lt;br /&gt;
self.set_toolbar_box(toolbar_box)&lt;br /&gt;
toolbar_box.show()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
There are tools to help you do the porting. There is a script in the pygobject repository for porting called [http://git.gnome.org/browse/pygobject/tree/pygi-convert.sh pygi-convert.sh], more info about the script can be found in [http://live.gnome.org/PyGObject/IntrospectionPorting the PyGObject Introspection Porting guide].&lt;br /&gt;
&lt;br /&gt;
Here is a script to automate the rename of the imports &#039;&#039;&#039;sugar&#039;&#039;&#039; to &#039;&#039;&#039;sugar3&#039;&#039;&#039;: [http://dev.laptop.org/~manuq/sugar-convert.sh sugar-convert.sh].&lt;br /&gt;
&lt;br /&gt;
If you are having trouble finding how a particular GTK class/method/constant has been named in PyGI, run [http://dev.laptop.org/~dsd/20110806/pygi-enumerate.py pygi-enumerate.py] and grep the output. (this app lists all identified methods and constants).  Usage example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python pygi-enumerate.py | grep get_selection&lt;br /&gt;
Gtk.AccelLabel.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.Editable.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.Entry.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.IconView.get_selection_mode() (instance method)&lt;br /&gt;
Gtk.Label.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.SelectionData.get_selection() (instance method)&lt;br /&gt;
Gtk.SpinButton.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.TextBuffer.get_selection_bound() (instance method)&lt;br /&gt;
Gtk.TextBuffer.get_selection_bounds() (instance method)&lt;br /&gt;
Gtk.TreeView.get_selection() (instance method)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constructor considerations ===&lt;br /&gt;
&lt;br /&gt;
With PyGI it is possible to use Python-like constructors, or &amp;quot;new&amp;quot; functions e.g. the following are (usually) equivalent:&lt;br /&gt;
 label = Gtk.Button()&lt;br /&gt;
 label = Gtk.Button.new()&lt;br /&gt;
&lt;br /&gt;
However, the first form is preferred: it is more Python-like. Internally, the difference is that Gtk.Label.new() translates to a call to gtk_label_new(), whereas Gtk.Label() (the preferred form) will directly construct an instance of GtkLabel at the GObject level.&lt;br /&gt;
&lt;br /&gt;
If the constructor takes parameters, they &#039;&#039;&#039;must&#039;&#039;&#039; be named. The parameters correspond to GObject properties in the API documentation which are usually marked as &amp;quot;Construct&amp;quot;. For example, the following code will not work:&lt;br /&gt;
&lt;br /&gt;
 expander = Gtk.Expander(&amp;quot;my expander&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The (confusing) error is:&lt;br /&gt;
 TypeError: GObject.__init__() takes exactly 0 arguments (1 given)&lt;br /&gt;
&lt;br /&gt;
The solution is to go to the [http://developer.gnome.org/gtk3/3.2/GtkExpander.html#GtkExpander.properties GtkExpander API documentation] and find the appropriate property that we wish to set. In this case it is &amp;lt;b&amp;gt;label&amp;lt;/b&amp;gt; (which is a Construct property, further increasing our confidence of success), so the code should be:&lt;br /&gt;
&lt;br /&gt;
 expander = Gtk.Expander(label=&amp;quot;my expander&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Combining the two points above, if you wish to call a construct-like function such as gtk_button_new_with_label(), you do have the option of calling Gtk.Button.new_with_label(), however if we check the [http://developer.gnome.org/gtk3/3.2/GtkButton.html#GtkButton.properties GtkButton properties] we see one called &amp;quot;label&amp;quot; which is equivalent. Therefore gtk_button_new_with_label(&amp;quot;foo&amp;quot;) should be called as:&lt;br /&gt;
 button = Gtk.Button(label=&amp;quot;foo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== HBox, VBox, pack_start and pack_end ===&lt;br /&gt;
&lt;br /&gt;
GtkHBox and GtkVBox, commonly used containers in GTK2 code, have pack_start and pack_end methods. These take 4 parameters:&lt;br /&gt;
# The widget to pack into the container&lt;br /&gt;
# &#039;&#039;&#039;expand&#039;&#039;&#039;: Whether the child should receive extra space when the container grows (default True)&lt;br /&gt;
# &#039;&#039;&#039;fill&#039;&#039;&#039;: True if space given to child by the expand option is actually allocated to child, rather than just padding it. This parameter has no effect if expand is set to False. A child is always allocated the full height of a gtk.HBox and the full width of a gtk.VBox. This option affects the other dimension. (default True)&lt;br /&gt;
# &#039;&#039;&#039;padding&#039;&#039;&#039;: extra space in pixels to put between child and its neighbor (default 0)&lt;br /&gt;
&lt;br /&gt;
In PyGTK, the expand, fill and padding parameters were optional: if unspecified, the default values above were used. In PyGI, these parameters are &#039;&#039;&#039;not&#039;&#039;&#039; optional: all 4 must be specified. Hence the rules for adding in the extra parameters are:&lt;br /&gt;
&lt;br /&gt;
# If &#039;&#039;&#039;expand&#039;&#039;&#039; was not set, use value True&lt;br /&gt;
# If &#039;&#039;&#039;fill&#039;&#039;&#039; was not set, use value True. (however, if expand is False, this parameter gets ignored so False is an equally acceptable option when expand=False)&lt;br /&gt;
# If &#039;&#039;&#039;padding&#039;&#039;&#039; was not set, use value 0.&lt;br /&gt;
&lt;br /&gt;
These parameters can be specified either as positional arguments or as named keyword arguments, however all 4 must always be specified. Some developers prefer keyword arguments, arguing that the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, expand=True, fill=False, padding=4)&amp;lt;/pre&amp;gt;&lt;br /&gt;
is much more readable than:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, True, False, 4)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, these functions are called extremely often; any mildly seasoned GTK developer will have memorized the order and meaning of the parameters. Some developers therefore prefer to avoid the extra work of dropping in hundreds of keyword arguments throughout the code and just use the positional ones. This is really up to you.&lt;br /&gt;
&lt;br /&gt;
If you are using pack_start with the default values (expand=True, fill=True and padding=0), you can avoid using pack_start (and the parameter pain that it brings with it) by just using .add for some added cleanliness, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;box.pack_start(widget, True, True, 0)&amp;lt;/pre&amp;gt;&lt;br /&gt;
can be replaced with:&lt;br /&gt;
&amp;lt;pre&amp;gt;box.add(widget)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is as far as you need to go for now. However, in GTK3, GtkVBox and GtkHBox have been deprecated, which means they might be removed in GTK3. The replacement is to use GtkBox directly, and you may wish to make this change now. e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, homogeneous=True, spacing=8)&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, it must be noted that if GtkBox is used directly (instead of using GtkHBox/GtkVBox), the default value of &#039;&#039;&#039;expand&#039;&#039;&#039; is now &#039;&#039;&#039;False&#039;&#039;&#039;. The implications of this are:&lt;br /&gt;
# You need to check your .add() calls, as previously they would behave as pack_start with expand=True, but now they will behave as expand=False (you need to change them to use pack_start with expand=True to retain the old behaviour)&lt;br /&gt;
# Every single pack_start call that has expand=False and padding=0 (and any value of fill) can be converted to .add() for cleanliness&lt;br /&gt;
&lt;br /&gt;
=== GtkAlignment considerations ===&lt;br /&gt;
&lt;br /&gt;
In PyGTK, the gtk.Alignment constructor takes four optional parameters:&lt;br /&gt;
# xalign: the fraction of horizontal free space to the left of the child widget. Ranges from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# yalign: the fraction of vertical free space above the child widget. Ranges from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# xscale: the fraction of horizontal free space that the child widget absorbs, from 0.0 to 1.0. Default value 0.0.&lt;br /&gt;
# yscale: the fraction of vertical free space that the child widget absorbs, from 0.0 to 1.0. Default value 0.0&lt;br /&gt;
&lt;br /&gt;
In PyGI/GTK3, these parameters are still optional when used in the Gtk.Alignment constructor (as keyword arguments, as explained above). However, the default values have changed. They are now:&lt;br /&gt;
# xalign: default value 0.5&lt;br /&gt;
# yalign: default value 0.5&lt;br /&gt;
# xscale: default value 1&lt;br /&gt;
# yscale: default value 1&lt;br /&gt;
&lt;br /&gt;
If your code was relying on the default value of 0 for any of these parameters in PyGTK, you will now need to explicitly specify that in your constructor. Similarly, if you were previously using construction parameters to select the now-default values, those parameters can be dropped.&lt;br /&gt;
&lt;br /&gt;
Additionally, PyGTK accepted these construction parameters as positional arguments. As explained above, they must now be converted to keyword arguments.&lt;br /&gt;
&lt;br /&gt;
=== Gdk ===&lt;br /&gt;
Previously, gdk was an attribute of the gtk module, which means that it can be called through gtk. For example, if we want to use color_parse():&lt;br /&gt;
 gtk.gdk.color_parse(color)&lt;br /&gt;
However, what we have to do now is:&lt;br /&gt;
 from gi.repository import Gdk&lt;br /&gt;
Then we can modify the code to the following:&lt;br /&gt;
 Gdk.color_parse(color)&lt;br /&gt;
&lt;br /&gt;
=== Pango ===&lt;br /&gt;
Following the release of Gtk3, we should not be importing pango like this:&lt;br /&gt;
 import pango&lt;br /&gt;
In fact, we ca now import pango as an attribute within the gtk3 library:&lt;br /&gt;
 from gi.repository import Pango as pango&lt;br /&gt;
&lt;br /&gt;
=== Other considerations ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;self.allocation&#039;&#039; property is no longer available.  Please search your code for &amp;quot;self.allocation&amp;quot; and replace it for &amp;quot;self.get_allocation()&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So to get the allocation size:&lt;br /&gt;
&lt;br /&gt;
 self.allocation.width&lt;br /&gt;
 self.allocation.height&lt;br /&gt;
&lt;br /&gt;
should be replaced by:&lt;br /&gt;
&lt;br /&gt;
 self.get_allocated_width()&lt;br /&gt;
 self.get_allocated_height()&lt;br /&gt;
&lt;br /&gt;
=== Constants ===&lt;br /&gt;
&lt;br /&gt;
Most of the constants have slightly different formats, e.g.,&lt;br /&gt;
&lt;br /&gt;
 Gtk.StateFlags.NORMAL&lt;br /&gt;
 Gtk.PolicyType.NEVER&lt;br /&gt;
 Gtk.Justification.LEFT&lt;br /&gt;
&lt;br /&gt;
=== Pixbufs ===&lt;br /&gt;
&lt;br /&gt;
The pixbuf libraies are in their own repository&lt;br /&gt;
&lt;br /&gt;
 from gi.repository import GdkPixbuf&lt;br /&gt;
&lt;br /&gt;
 GdkPixbuf.Pixbuf.new_from_file()&lt;br /&gt;
&lt;br /&gt;
==Make a release==&lt;br /&gt;
===Versioning===&lt;br /&gt;
If you do new releases the versioning of the GTK2 and GTK3 release should be different. For GTK2 releases you should use dotted versions for new development releases major versions. Let&#039;s have a look at hello-world as an example. The latest release of hello-world was version 3. Bug fix releases should be named 3.1 then 3.2 and so on. The new releases for the new development branch should be starting with a major number, in the case of hello-world version 4.&lt;br /&gt;
&lt;br /&gt;
To minimise the maintainer overload we highly encourage you to only do bug-fix releases for the GTK2 branch. New features should only go into the new branch that is based on gobject-introspection and GTK3.&lt;br /&gt;
&lt;br /&gt;
Note that some older versions of Sugar don&#039;t know how to parse dotted version numbers. An alternative to the above is to simply ensure that the version number of the GTK3 branch is always greater than (&amp;gt;) the version number of the GTK2 version. &lt;br /&gt;
&lt;br /&gt;
===GIT conventions===&lt;br /&gt;
We&#039;ve agreed that the GTK3 version should be in the &#039;&#039;&#039;master&#039;&#039;&#039; branch on gitorious.sugarlabs.org. The GTK2 version should be in a branch called &#039;&#039;&#039;gtk2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Some helpful git foo:&lt;br /&gt;
&lt;br /&gt;
From your repository, first create the GTK2 branch with:&lt;br /&gt;
 git branch gtk2&lt;br /&gt;
&lt;br /&gt;
Then pull in all GTK3 changes on top of the master branch:&lt;br /&gt;
 git pull git://path/to/gtk3/repo&lt;br /&gt;
&lt;br /&gt;
To move the gtk2 to gitorious.sugarlabs.org:&lt;br /&gt;
 git checkout gtk2&lt;br /&gt;
 git push -u origin gtk2&lt;br /&gt;
&lt;br /&gt;
== Tips to Activity Developers ==&lt;br /&gt;
&lt;br /&gt;
===Changes to the Clipboard===&lt;br /&gt;
Two things to note:&lt;br /&gt;
&lt;br /&gt;
1. You need to specify a clipboard using get()&lt;br /&gt;
    clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)&lt;br /&gt;
2. You need to pass a length to set_text()&lt;br /&gt;
    clipboard.set_text(string, len(string))&lt;br /&gt;
&lt;br /&gt;
See [http://python-gtk-3-tutorial.readthedocs.org/en/latest/clipboard.html] for more details.&lt;br /&gt;
&lt;br /&gt;
===Changes to Drag-and-Drop===&lt;br /&gt;
Slightly different syntax:&lt;br /&gt;
        self.drag_dest_set(Gtk.DestDefaults.ALL, [],&lt;br /&gt;
                           Gdk.DragAction.COPY)&lt;br /&gt;
        self.drag_dest_set_target_list(Gtk.TargetList.new([]))&lt;br /&gt;
        self.drag_dest_add_text_targets()&lt;br /&gt;
        self.connect(&#039;drag_data_received&#039;, self._drag_data_received)&lt;br /&gt;
&lt;br /&gt;
and:&lt;br /&gt;
        data.get_text()&lt;br /&gt;
or:&lt;br /&gt;
        data.get_image()&lt;br /&gt;
&lt;br /&gt;
See [http://python-gtk-3-tutorial.readthedocs.org/en/latest/drag_and_drop.html] for more details.&lt;br /&gt;
&lt;br /&gt;
===Going from Drawable to Cairo===&lt;br /&gt;
&lt;br /&gt;
GTK-3 does not support gtk Drawable objects, so the first step is to get your activity running under Cairo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cairo&lt;br /&gt;
&lt;br /&gt;
# From activity.Activity, you inherit a canvas.&lt;br /&gt;
# Create a Cairo context from the window.&lt;br /&gt;
cairo_context = self.canvas.get_window().cairo_create()&lt;br /&gt;
&lt;br /&gt;
# Create an XLib surface to be used for drawing&lt;br /&gt;
xlib_surface = surface.create_similar(cairo.CONTENT_COLOR,&lt;br /&gt;
                                      gtk.gdk.screen_width(),&lt;br /&gt;
                                      gtk.gdk.screen_height())&lt;br /&gt;
&lt;br /&gt;
# You&#039;ll need a Cairo context from which you&#039;ll build a GTK Cairo context&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
cairo_context = gtk.gdk.CairoContext(cairo_context)&lt;br /&gt;
&lt;br /&gt;
# Use this context as you would a Drawable, substituting Cairo commands&lt;br /&gt;
# for gtk commands, e.g.,&lt;br /&gt;
cairo_context.move_to(0, 0)&lt;br /&gt;
cairo_context.line_to(100, 100)&lt;br /&gt;
# Cairo uses floats from 0 to 1 for RGB values&lt;br /&gt;
cairo_context.set_source_rgb(r, g, b)&lt;br /&gt;
cairo_context.rectangle(x, y, w, h)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
&lt;br /&gt;
# To invalidate a region to force a refresh, use:&lt;br /&gt;
self.canvas.queue_draw_area(x, y, w, h)&lt;br /&gt;
&lt;br /&gt;
# Handle the expose event&lt;br /&gt;
def do_expose_event(self, event):&lt;br /&gt;
    # Create the cairo context&lt;br /&gt;
    cairo_context = self.canvas.get_window().cairo_create()&lt;br /&gt;
    cairo_context.rectangle(event.area.x, event.area.y,&lt;br /&gt;
                            event.area.width, event.area.height)&lt;br /&gt;
    cairo_context.clip()&lt;br /&gt;
    cairo_context.set_source_surface(xlib_surface)&lt;br /&gt;
    cairo_context.paint()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pango is a bit different when used with Cairo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import pango, pangocairo&lt;br /&gt;
&lt;br /&gt;
# Again, from the xlib_surface...&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
&lt;br /&gt;
# Create a PangoCairo context&lt;br /&gt;
cairo_context = pangocairo.CairoContext(cairo_context)&lt;br /&gt;
&lt;br /&gt;
# The pango layout is created from the Cairo context&lt;br /&gt;
pango_layout = cairo_context.create_layout()&lt;br /&gt;
&lt;br /&gt;
# You still use pango to set up font descriptions.&lt;br /&gt;
fd = pango.FontDescription(&#039;Sans&#039;)&lt;br /&gt;
fd.set_size(12 * pango.SCALE)&lt;br /&gt;
&lt;br /&gt;
# Tell your pango layout about your font description&lt;br /&gt;
pango_layout.set_font_description(fd)&lt;br /&gt;
&lt;br /&gt;
# Write text to your pango layout&lt;br /&gt;
pango_layout.set_text(&#039;Hello world&#039;, -1)&lt;br /&gt;
&lt;br /&gt;
# Position it within the Cairo context&lt;br /&gt;
cairo_context.save()&lt;br /&gt;
cairo_context.translate(x, y)&lt;br /&gt;
cairo_context.rotate(pi / 3)  # You can rotate text and images in Cairo&lt;br /&gt;
cairo_context.set_source_rgb(1, 0, 0)&lt;br /&gt;
&lt;br /&gt;
# Finally, draw the text&lt;br /&gt;
cairo_context.update_layout(pango_layout)&lt;br /&gt;
cairo_context.show_layout(pango_layout)&lt;br /&gt;
cairo_context.restore()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To draw a bitmap...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Again, from the xlib_surface...&lt;br /&gt;
cairo_context = cairo.Context(xlib_surface)&lt;br /&gt;
&lt;br /&gt;
# Create a gtk context&lt;br /&gt;
cairo_context = gtk.gdk.CairoContext(cairo_context)&lt;br /&gt;
cairo_context.set_source_pixbuf(pixbuf, x, y)&lt;br /&gt;
cairo_context.rectangle(x, y, w, h)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To read a pixel from the xlib surface...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# create a new 1x1 cairo surface&lt;br /&gt;
cairo_surface = cairo.ImageSurface(cairo.FORMAT_RGB24, 1, 1);&lt;br /&gt;
cairo_context = cairo.Context(cairo_surface)&lt;br /&gt;
# translate xlib_surface so that target pixel is at 0, 0&lt;br /&gt;
cairo_context.set_source_surface(xlib_surface, -x, -y)&lt;br /&gt;
cairo_context.rectangle(0,0,1,1)&lt;br /&gt;
cairo_context.set_operator(cairo.OPERATOR_SOURCE)&lt;br /&gt;
cairo_context.fill()&lt;br /&gt;
cairo_surface.flush() # ensure all writing is done&lt;br /&gt;
# Read the pixel&lt;br /&gt;
return (ord(pixels[2]), ord(pixels[1]), ord(pixels[0]), 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Going from Cairo in GTK-2 to Cairo in GTK-3===&lt;br /&gt;
&lt;br /&gt;
(See http://developer.gnome.org/pangomm/2.28/annotated.html for more details)&lt;br /&gt;
Not much changes, but...&lt;br /&gt;
&lt;br /&gt;
The Cairo/Pango interaction is a little different:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from gi.repository import Pango, PangoCairo&lt;br /&gt;
&lt;br /&gt;
cairo_context = ...&lt;br /&gt;
pango_layout = PangoCairo.create_layout(cairo_context)&lt;br /&gt;
fd = Pango.FontDescription(&#039;Sans&#039;)&lt;br /&gt;
fd.set_size(12 * Pango.SCALE)&lt;br /&gt;
pango_layout.set_font_description(fd)&lt;br /&gt;
pango_layout.set_text(&#039;Hello World&#039;, -1)&lt;br /&gt;
cairo_context.set_source_rgb(1, 0, 0)&lt;br /&gt;
PangoCairo.update_layout(cairo_context, pango_layout)&lt;br /&gt;
PangoCairo.show_layout(cairo_context, pango_layout)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The get_extents() method if different in PangoCairo. It calculates an extent as a Rectangle, but doesn&#039;t return anything. There is a method, get_logical_extents() that returns a Rectangle. Alas, it is not necessarily available after v1.16. Note that Rectangle is not a list but a class with methods for get_x(), get_y(), get_width(), and get_height(), so you cannot iter over it.&lt;br /&gt;
&lt;br /&gt;
==== Replacing pixmaps with Cairo ====&lt;br /&gt;
You need to replace your pixmaps with Cairo in GTK3. See http://developer.gnome.org/gtk3/3.5/ch24s02.html#idp129615008 for example code.&lt;br /&gt;
&lt;br /&gt;
===Taking a screenshot and making a thumbnail===&lt;br /&gt;
To make a screenshot of the window:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
width, height = window.get_width(), window.get_height()&lt;br /&gt;
thumb_surface = Gdk.Window.create_similar_surface(window,&lt;br /&gt;
                                                  cairo.CONTENT_COLOR,&lt;br /&gt;
                                                  width, height)&lt;br /&gt;
&lt;br /&gt;
thumb_width, thumb_height = style.zoom(100), style.zoom(80)&lt;br /&gt;
cairo_context = cairo.Context(thumb_surface)&lt;br /&gt;
thumb_scale_w = thumb_width * 1.0 / width&lt;br /&gt;
thumb_scale_h = thumb_height * 1.0 / height&lt;br /&gt;
cairo_context.scale(thumb_scale_w, thumb_scale_h)&lt;br /&gt;
Gdk.cairo_set_source_window(cairo_context, window, 0, 0)&lt;br /&gt;
cairo_context.paint()&lt;br /&gt;
thumb_surface.write_to_png(png_path_or_filelike_object)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Creating a video widget===&lt;br /&gt;
&lt;br /&gt;
Haven&#039;t gotten this working yet, but some necessary changes include:&lt;br /&gt;
&lt;br /&gt;
Instead of&lt;br /&gt;
 window.xid&lt;br /&gt;
use&lt;br /&gt;
 get_property(&#039;window&#039;).get_xid()&lt;br /&gt;
&lt;br /&gt;
Instead of&lt;br /&gt;
 unset_flags(gtk.DOUBLE_BUFFERED)&lt;br /&gt;
 set_flags(gtk.APP_PAINTABLE)&lt;br /&gt;
use&lt;br /&gt;
 set_double_buffered(False)&lt;br /&gt;
 set_app_paintable(True)&lt;br /&gt;
&lt;br /&gt;
A more basic question is whether or not we migrate to gstreamer-1.0. If we do, some helpful documentation is found here [https://wiki.ubuntu.com/Novacut/GStreamer1.0].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* PyGtk documentation&lt;br /&gt;
:: Gtk3: http://python-gtk-3-tutorial.readthedocs.org&lt;br /&gt;
:: gtk2: http://www.pygtk.org/docs/pygtk/&lt;br /&gt;
* Reference Manual&lt;br /&gt;
:: Gtk3: http://developer.gnome.org/gtk3/3.4/&lt;br /&gt;
* Gdk documentation:&lt;br /&gt;
:: Gdk3: http://developer.gnome.org/gdk/2.24/&lt;br /&gt;
* Pango documentation:&lt;br /&gt;
:: GTK3: http://developer.gnome.org/pangomm&lt;br /&gt;
* Gst-1.0 documentation&lt;br /&gt;
:: Gst-1: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/index.html&lt;br /&gt;
* Gst-1.0 porting hints&lt;br /&gt;
:: https://wiki.ubuntu.com/Novacut/GStreamer1.0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
&lt;br /&gt;
= More porting wiki pages =&lt;br /&gt;
&lt;br /&gt;
{{Special:PrefixIndex/Features/GTK3/Porting}}&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99874</id>
		<title>Sugar Labs/FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99874"/>
		<updated>2017-01-07T16:16:19Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Using Sugar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Graduate|Some useful stuff in here}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{TeamHeader|Sugar Labs|home=Community Home|meeting_link=Events|meeting_label=Events Calendar}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;, or follow the question links at the top of the major sections, or visit [[:Category:FAQ]].&lt;br /&gt;
__TOC__&lt;br /&gt;
==Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar? ===&lt;br /&gt;
:Sugar is an educational software platform built with the Python programming language and based on the principles of cognitive and social constructivism. See [[What is Sugar?]].&lt;br /&gt;
&lt;br /&gt;
=== Who is doing Sugar development? ===&lt;br /&gt;
:Sugar is a community project where all work is done by volunteers. You can get an idea of the people involved from the [[Development Team/Release/Modules]] page.&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar support Android? ===&lt;br /&gt;
: Not at this time, although there are some developers working to change that situation. See this [http://www.mail-archive.com/iaep@lists.sugarlabs.org/msg13765.html mailing list thread].&lt;br /&gt;
&lt;br /&gt;
=== What makes Sugar different from other educational software platforms? ===&lt;br /&gt;
* See [[Marketing Team/Website#Website_2|Website sandbox]].&lt;br /&gt;
:The Sugar interface, in its departure from the desktop metaphor for computing, is the first serious attempt to create a user interface that is based on both cognitive and social constructivism: learners should engage in authentic exploration and collaboration. It is based on three very simple principles about what makes us human: (1) everyone is a teacher and a learner; (2) humans by their nature are social beings; and (3) humans by their nature are expressive. These are the pillars of a user experience for learning. &lt;br /&gt;
&lt;br /&gt;
:Sugar also considers two aphorisms: (1) you learn through doing, so if you want more learning, you want more doing; and (2) love is a better master than duty—you want people to engage in things that are authentic to them, things that they love.&lt;br /&gt;
&lt;br /&gt;
:The presence of other people is inherent to the Sugar interface: collaboration is a first-order experience. Students and teachers engage in a dialog with each other, support each other, critique each other, and share ideas. &lt;br /&gt;
&lt;br /&gt;
:Sugar is also discoverable: it can accommodate a wide variety of users, with different levels of skill in terms of reading, language, and different levels of experience with computing. It is easy to approach, and yet it doesn&#039;t put an upper bound on personal expression; one can peel away layers and go deeper and deeper, with few restrictions.&lt;br /&gt;
&lt;br /&gt;
:Sugar is based on Python, an interpreted language, allowing the direct appropriation of ideas: in whatever realm the learner is exploring—music, browsing, reading, writing, programming, graphics, etc.—they are able to drill deeper; they are not going to hit a wall, since they can, at every level, engage in debugging both their personal expression and the very tools that they use for that expression.&lt;br /&gt;
&lt;br /&gt;
==Using Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== Who can use Sugar and how do they benefit? ===&lt;br /&gt;
:Sugar is a free software project, freely available to anyone who wants to use it or improve upon it.&lt;br /&gt;
&lt;br /&gt;
:The Sugar platform was designed for young children (K–6), but it is finding applicability in a number of different venues where the simplicity of design maps is an enabler, e.g., mobile applications, the elderly, etc. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Why Sugar?&#039;&#039;&#039; Sugar will engage even the youngest learner in the use of computation as a powerful &amp;quot;thing to think with.&amp;quot; They will quickly become proficient in using the computer as a tool to engage in authentic problem-solving. Sugar users develop skills that help them in all aspects of life.&lt;br /&gt;
* Sugar comes with hundreds of tools for discovery through exploring, expressing, and sharing: browsing, writing, rich media, etc.&lt;br /&gt;
* Sugar comes with a built-in collaboration system: peer-to-peer learning; always-on support; and single-click sharing.&lt;br /&gt;
* Sugar comes with built-in tools for reflection; a built-in portfolio assessment tool that serves as a forum for discussion between children, their parents, and their teachers. &lt;br /&gt;
* The Sugar learning platform is discoverable: it uses simple means to reach to complex ends with no upper bound on where you can reach. &lt;br /&gt;
* Sugar is designed for local appropriation: it has built-in tools for making changes and improvements and a growing global community of support.&lt;br /&gt;
* Sugar puts an emphasis on learning through doing and debugging: more engaged learners are to tackle authentic problems.&lt;br /&gt;
* Sugar is available in a wide variety of forms: as part of GNU/Linux distributions; LiveUSB/CD; and in  virtual machines or emulation.&lt;br /&gt;
:There is a further summary of the Sugar benefits [[Deployment Team/Small_deployment_guide#Why_Sugar|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I get online with the Live USB/CD, and what can I do then? ===&lt;br /&gt;
&lt;br /&gt;
:The Live USB device must be inserted into a USB port on your computer, the Live CD must be in your CD-ROM or DVD drive, when you start your computer, and your BIOS settings should be set to first look for an operating system there on the USB or CD-ROM device. If the settings are okay, the Live USB/CD will boot.&lt;br /&gt;
&lt;br /&gt;
:After a little while, you will be prompted for a name and you will get to choose the colour of your avatar. This is a small X, like the arms and legs of a human, with an O as the head above the X. This is &amp;quot;you&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Wait a little longer, and you will see &amp;quot;yourself&amp;quot; in the middle of the screen. Just below &amp;quot;you&amp;quot;, is your journal, where everything you do is recorded. &lt;br /&gt;
&lt;br /&gt;
:In the top left corner of the Frame is a circle of smaller circles. This is your Neighbourhood-circle. At the moment, only nearby wireless access points are visible as small coloured circles - more colour inside means better signal strength. Let your mouse pointer hover above a circle to see the name of the wireless network. A small padlock means you need to supply a username and password to access the network. Click the circle you would like to access. It should be a wireless network you know will grant you Internet access once you are connected. If the network is protected with a padlock, you will be prompted for a valid username and password at this point, so give these and click the OK-button. If everything is okay, you are now connected.&lt;br /&gt;
&lt;br /&gt;
:You should soon see many small avatars like your own in your neighbourhood. Hover your mouse pointer above them to see their usernames.&lt;br /&gt;
&lt;br /&gt;
:In the top left corner next to the Neighbourhood-circle, is your Friends-circle. You don&#039;t have any Sugar-friends at the moment, so this will be empty. Next to the Friends-circle is a circle with a single dot - that&#039;s right - it means you. Click the You-circle, and you will get back to you and your activities.&lt;br /&gt;
&lt;br /&gt;
:Surrounding your avatar on the Home screen are many activities, so click the one that looks like a cartoon talk bubble to start the Chat-activity or some other activity - like the Paint-activity or the Calculator-activity. After a little while, the new activity opens. In the top right corner of all activities is a small menu, which says &amp;quot;Share with:&amp;quot;. Click this to unfold the options, and choose Neighbourhood by clicking on it.&lt;br /&gt;
&lt;br /&gt;
:Click the Neighbourhood-circle again, and you will notice that the activity is now visible to everyone in your neighbourhood. If you hover your mouse button over an activity in your neighbourhood, a small menu will unfold where you may choose to join the activity by selecting &amp;quot;Join&amp;quot; from the activity&#039;s menu. Remember, your neighbourhood is the entire world! People in other parts of the world may be working or sleeping when you start sharing your activities, so be patient - it might be many hours before anyone is available for a chat. Enjoy! :-)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on {GNU/Linux, Fedora, Ubuntu, SUSE, MAC OS, Windows, etc.}? ===&lt;br /&gt;
:Please refer to the [[Supported systems]] page for an up-to-date list of supported systems.&lt;br /&gt;
&lt;br /&gt;
=== Is there an image of the OS that can be run on a PC? ===&lt;br /&gt;
:You can download a Live USB image at [[Sugar on a Stick]] and a Live CD version of Sugar at http://wiki.laptop.org/go/LiveCd, or run Sugar natively on a [[Supported systems|supported system]]. (The language can be set from the Sugar-control-panel or My Settings link on the avatar panel.)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on an ASUS Eee PC (or other &amp;quot;ultra-mobile&amp;quot; or &amp;quot;mini&amp;quot; PCs)?===&lt;br /&gt;
Yes. If it can run GNU/Linux and GNOME, it can run Sugar. Try [[Sugar on a Stick]] as a way to get started, but you should be able install it natively as well.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to have mesh support with the Live USB/CD ? ===&lt;br /&gt;
Q: If I understand this correctly, mesh support means your wireless card functions as both an access point/router and a network node. In short, your wireless computer can pass along packages from nearby wireless computers and the other way round. Do you need special wireless cards for this, or is this a driver/software issue that could be fixed in the Live CD, so that more people can experience mesh networks?&lt;br /&gt;
&lt;br /&gt;
:A: Yes, it will be possible to have [http://www.open80211s.org/trac/wiki/HOWTO-0.2.1 mesh support] with the Live CD shortly, provided you have a suitable wireless card.&lt;br /&gt;
&lt;br /&gt;
:[http://www.o11s.org/ open80211s] is an open-source implementation of the emerging IEEE 802.11s wireless mesh standard. It has been accepted in the mainline Linux kernel and is included in release 2.6.26. The resulting software will run on GNU/Linux on commodity PC hardware. &lt;br /&gt;
&lt;br /&gt;
:Open80211s is based on the mac80211 wireless stack and should run on any of the wireless cards that mac80211 supports. At present, September 2008, four families of drivers are supported or partially supported. The ath5k driver supports Atheros WLAN based chipsets, the b43 driver supports the 802.11 B/G family of wireless chips Broadcom produces, libertas_tf supports the Marvell 88W83886 USB device as found in the OLPC XO-1 laptop, and the zd1211rw driver covers a large proportion of USB-wireless devices on the consumer market as these are based on the ZyDAS ZD1211. Several months after the acquisition, Atheros rebranded the ZyDAS ZD1211 chip to AR5007UG.&lt;br /&gt;
&lt;br /&gt;
=== Are there any platforms where Sugar runs on? ===&lt;br /&gt;
:The Sugar Learning Platform is a leading learning platform that began in the famous One Laptop Per Child project. It is used every day by nearly 3 million children around the world. [http://sugarizer.org/ Sugarizer] is a web implementation of the platform and runs on every device - from tiny Raspberry Pi computers to small Android and iOS phones to tablets and to laptops and desktops. It has 3 broad components:&lt;br /&gt;
&lt;br /&gt;
:1. Web Application: a web application that runs in modern web browsers&lt;br /&gt;
:2. Application: an installable app for every operating system&lt;br /&gt;
:3. Server: a nodejs/express server for applications to connect with&lt;br /&gt;
&lt;br /&gt;
:Enjoy the experience and help us reach every child on every device in every country.&lt;br /&gt;
&lt;br /&gt;
== Sugar Labs ==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar Labs? ===&lt;br /&gt;
:Sugar Labs, a non-profit foundation, serves as a support base and gathering place for the community of educators and software developers who want to extend the Sugar platform and who have been creating Sugar-compatible applications.&lt;br /&gt;
&lt;br /&gt;
=== What is the mission of Sugar Labs? ===&lt;br /&gt;
:The overarching mission of Sugar Labs is to support the Sugar platform through software development, and community outreach and support. The purpose of the Sugar platform is provide a software and content environment that enhances learning. Towards this end, Sugar is designed to facilitate learners to “explore, express, debug, and critique.” &lt;br /&gt;
&lt;br /&gt;
=== What are the principles that guide Sugar Labs? ===&lt;br /&gt;
:Sugar Labs subscribes to principle that learning thrives within a culture of freedom of expression, hence it has a natural affinity with the free software movement (Please see [[Sugar_Labs#Principles|Principles]] page in this wiki for more details). The core Sugar platform has been developed under a GNU General Public License (GPL); individual activities may be under different licenses.&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship of Sugar Labs to One Laptop per Child? ===&lt;br /&gt;
:Sugar was originally developed as the user interface (UI) for the One Laptop per Child (OLPC) XO-1 laptop. Sugar Labs was established as an independent entity in order to facilitate the growth of Sugar beyond any single hardware platform. While Sugar Labs has a cooperative working relationship with OLPC, it is by no means an exclusive or proprietary relationship. Sugar Labs is not bound to any specific hardware platform or Linux distribution (Please see [[Supported systems]]).&lt;br /&gt;
&lt;br /&gt;
:Sugar Labs is the upstream community for the Sugar project. Sugar Labs welcomes a close working relationship with OLPC. Sugar Labs also welcomes cooperation with other laptop and computer manufacturers and software and content providers.&lt;br /&gt;
&lt;br /&gt;
:OLPC and Sugar Labs are not diverging, we are on the same page; we are both hoping to fund and support Sugar so that we can continue to provide the best learning experience for children. The Sugar Labs initiative is consistent with taking Sugar to the next level; this is not inconsistent with what OLPC is doing. Any help from outside or inside OLPC should help establish Sugar as a more stable and better product.&lt;br /&gt;
&lt;br /&gt;
=== What is the standard Sugar license? ===&lt;br /&gt;
:Materials created by the Sugar Labs contributors are usually shared on GNU GPL free software license.&lt;br /&gt;
&lt;br /&gt;
=== What is a Sugar Activity? ===&lt;br /&gt;
:Activity is a small educational application (like this one) built into Sugar. Anyone can create an activity, you too...!&lt;br /&gt;
&lt;br /&gt;
=== Who is upstream for Sugar? ===&lt;br /&gt;
:Sugar Labs is the upstream for the Sugar project.&lt;br /&gt;
&lt;br /&gt;
=== Who is Sugar Labs? ===&lt;br /&gt;
:Sugar is a community project, so it is the sum of those of you who participate. Sugar Labs was started by some Sugar-community members: [[User:Walter|Walter Bender]], [[User:ChristophD|Christoph Derndorfer]], [[User:Bert|Bert Freudenberg]], [[User:Marcopg|Marco Pesenti Gritti]], [[User:Bernie|Bernardo Innocenti]], Aaron Kaplan, [[User:Erikos|Simon Schampijer]], and [[User:Tomeu|Tomeu Vizoso]]. We have rules of [[Sugar Labs/Governance | governance]] that have been vetted by a process of public discussion.&lt;br /&gt;
&lt;br /&gt;
=== How do I get involved? ===&lt;br /&gt;
:Please see the [[Sugar Labs/Getting Involved|Getting Involved]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== How do I learn more about Sugar Labs? ===&lt;br /&gt;
:Check out the following additional FAQs, and join the IAEP mailing list and ask us about anything related to the project that isn&#039;t related to code. &lt;br /&gt;
&lt;br /&gt;
* [[Activity Team/FAQ|Activities]]&lt;br /&gt;
* [[Deployment Team/FAQ|Deployment]]&lt;br /&gt;
* [[Design Team/FAQ|Design]]&lt;br /&gt;
* [[Development Team/FAQ|Development]]&lt;br /&gt;
* [[Documentation Team/FAQ|Documentation]]&lt;br /&gt;
* [[Education Team/FAQ|Education]]&lt;br /&gt;
* [[Infrastructure Team/FAQ|Infrastructure]]&lt;br /&gt;
* [[Local Labs/FAQ|Local Labs]]&lt;br /&gt;
* [[Marketing Team/FAQ|Marketing]]&lt;br /&gt;
* [[Math4Team/FAQ|Math4 Project]]&lt;br /&gt;
* [[Oversight Board|Oversight Board]]&lt;br /&gt;
* [[Sugar on a Stick/FAQ|Sugar on a Stick]]&lt;br /&gt;
* [[BugSquad/FAQ|Testing]]&lt;br /&gt;
* [[Translation Team/FAQ|Translation]]&lt;br /&gt;
* [[Wiki Team/FAQ| Wiki]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:General public]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99873</id>
		<title>Sugar Labs/FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99873"/>
		<updated>2017-01-07T16:11:58Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Sugar Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Graduate|Some useful stuff in here}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{TeamHeader|Sugar Labs|home=Community Home|meeting_link=Events|meeting_label=Events Calendar}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;, or follow the question links at the top of the major sections, or visit [[:Category:FAQ]].&lt;br /&gt;
__TOC__&lt;br /&gt;
==Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar? ===&lt;br /&gt;
:Sugar is an educational software platform built with the Python programming language and based on the principles of cognitive and social constructivism. See [[What is Sugar?]].&lt;br /&gt;
&lt;br /&gt;
=== Who is doing Sugar development? ===&lt;br /&gt;
:Sugar is a community project where all work is done by volunteers. You can get an idea of the people involved from the [[Development Team/Release/Modules]] page.&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar support Android? ===&lt;br /&gt;
: Not at this time, although there are some developers working to change that situation. See this [http://www.mail-archive.com/iaep@lists.sugarlabs.org/msg13765.html mailing list thread].&lt;br /&gt;
&lt;br /&gt;
=== What makes Sugar different from other educational software platforms? ===&lt;br /&gt;
* See [[Marketing Team/Website#Website_2|Website sandbox]].&lt;br /&gt;
:The Sugar interface, in its departure from the desktop metaphor for computing, is the first serious attempt to create a user interface that is based on both cognitive and social constructivism: learners should engage in authentic exploration and collaboration. It is based on three very simple principles about what makes us human: (1) everyone is a teacher and a learner; (2) humans by their nature are social beings; and (3) humans by their nature are expressive. These are the pillars of a user experience for learning. &lt;br /&gt;
&lt;br /&gt;
:Sugar also considers two aphorisms: (1) you learn through doing, so if you want more learning, you want more doing; and (2) love is a better master than duty—you want people to engage in things that are authentic to them, things that they love.&lt;br /&gt;
&lt;br /&gt;
:The presence of other people is inherent to the Sugar interface: collaboration is a first-order experience. Students and teachers engage in a dialog with each other, support each other, critique each other, and share ideas. &lt;br /&gt;
&lt;br /&gt;
:Sugar is also discoverable: it can accommodate a wide variety of users, with different levels of skill in terms of reading, language, and different levels of experience with computing. It is easy to approach, and yet it doesn&#039;t put an upper bound on personal expression; one can peel away layers and go deeper and deeper, with few restrictions.&lt;br /&gt;
&lt;br /&gt;
:Sugar is based on Python, an interpreted language, allowing the direct appropriation of ideas: in whatever realm the learner is exploring—music, browsing, reading, writing, programming, graphics, etc.—they are able to drill deeper; they are not going to hit a wall, since they can, at every level, engage in debugging both their personal expression and the very tools that they use for that expression.&lt;br /&gt;
&lt;br /&gt;
==Using Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== Who can use Sugar and how do they benefit? ===&lt;br /&gt;
:Sugar is a free software project, freely available to anyone who wants to use it or improve upon it.&lt;br /&gt;
&lt;br /&gt;
:The Sugar platform was designed for young children (K–6), but it is finding applicability in a number of different venues where the simplicity of design maps is an enabler, e.g., mobile applications, the elderly, etc. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Why Sugar?&#039;&#039;&#039; Sugar will engage even the youngest learner in the use of computation as a powerful &amp;quot;thing to think with.&amp;quot; They will quickly become proficient in using the computer as a tool to engage in authentic problem-solving. Sugar users develop skills that help them in all aspects of life.&lt;br /&gt;
* Sugar comes with hundreds of tools for discovery through exploring, expressing, and sharing: browsing, writing, rich media, etc.&lt;br /&gt;
* Sugar comes with a built-in collaboration system: peer-to-peer learning; always-on support; and single-click sharing.&lt;br /&gt;
* Sugar comes with built-in tools for reflection; a built-in portfolio assessment tool that serves as a forum for discussion between children, their parents, and their teachers. &lt;br /&gt;
* The Sugar learning platform is discoverable: it uses simple means to reach to complex ends with no upper bound on where you can reach. &lt;br /&gt;
* Sugar is designed for local appropriation: it has built-in tools for making changes and improvements and a growing global community of support.&lt;br /&gt;
* Sugar puts an emphasis on learning through doing and debugging: more engaged learners are to tackle authentic problems.&lt;br /&gt;
* Sugar is available in a wide variety of forms: as part of GNU/Linux distributions; LiveUSB/CD; and in  virtual machines or emulation.&lt;br /&gt;
:There is a further summary of the Sugar benefits [[Deployment Team/Small_deployment_guide#Why_Sugar|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I get online with the Live USB/CD, and what can I do then? ===&lt;br /&gt;
&lt;br /&gt;
:The Live USB device must be inserted into a USB port on your computer, the Live CD must be in your CD-ROM or DVD drive, when you start your computer, and your BIOS settings should be set to first look for an operating system there on the USB or CD-ROM device. If the settings are okay, the Live USB/CD will boot.&lt;br /&gt;
&lt;br /&gt;
:After a little while, you will be prompted for a name and you will get to choose the colour of your avatar. This is a small X, like the arms and legs of a human, with an O as the head above the X. This is &amp;quot;you&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Wait a little longer, and you will see &amp;quot;yourself&amp;quot; in the middle of the screen. Just below &amp;quot;you&amp;quot;, is your journal, where everything you do is recorded. &lt;br /&gt;
&lt;br /&gt;
:In the top left corner of the Frame is a circle of smaller circles. This is your Neighbourhood-circle. At the moment, only nearby wireless access points are visible as small coloured circles - more colour inside means better signal strength. Let your mouse pointer hover above a circle to see the name of the wireless network. A small padlock means you need to supply a username and password to access the network. Click the circle you would like to access. It should be a wireless network you know will grant you Internet access once you are connected. If the network is protected with a padlock, you will be prompted for a valid username and password at this point, so give these and click the OK-button. If everything is okay, you are now connected.&lt;br /&gt;
&lt;br /&gt;
:You should soon see many small avatars like your own in your neighbourhood. Hover your mouse pointer above them to see their usernames.&lt;br /&gt;
&lt;br /&gt;
:In the top left corner next to the Neighbourhood-circle, is your Friends-circle. You don&#039;t have any Sugar-friends at the moment, so this will be empty. Next to the Friends-circle is a circle with a single dot - that&#039;s right - it means you. Click the You-circle, and you will get back to you and your activities.&lt;br /&gt;
&lt;br /&gt;
:Surrounding your avatar on the Home screen are many activities, so click the one that looks like a cartoon talk bubble to start the Chat-activity or some other activity - like the Paint-activity or the Calculator-activity. After a little while, the new activity opens. In the top right corner of all activities is a small menu, which says &amp;quot;Share with:&amp;quot;. Click this to unfold the options, and choose Neighbourhood by clicking on it.&lt;br /&gt;
&lt;br /&gt;
:Click the Neighbourhood-circle again, and you will notice that the activity is now visible to everyone in your neighbourhood. If you hover your mouse button over an activity in your neighbourhood, a small menu will unfold where you may choose to join the activity by selecting &amp;quot;Join&amp;quot; from the activity&#039;s menu. Remember, your neighbourhood is the entire world! People in other parts of the world may be working or sleeping when you start sharing your activities, so be patient - it might be many hours before anyone is available for a chat. Enjoy! :-)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on {GNU/Linux, Fedora, Ubuntu, SUSE, MAC OS, Windows, etc.}? ===&lt;br /&gt;
:Please refer to the [[Supported systems]] page for an up-to-date list of supported systems.&lt;br /&gt;
&lt;br /&gt;
=== Is there an image of the OS that can be run on a PC? ===&lt;br /&gt;
:You can download a Live USB image at [[Sugar on a Stick]] and a Live CD version of Sugar at http://wiki.laptop.org/go/LiveCd, or run Sugar natively on a [[Supported systems|supported system]]. (The language can be set from the Sugar-control-panel or My Settings link on the avatar panel.)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on an ASUS Eee PC (or other &amp;quot;ultra-mobile&amp;quot; or &amp;quot;mini&amp;quot; PCs)?===&lt;br /&gt;
Yes. If it can run GNU/Linux and GNOME, it can run Sugar. Try [[Sugar on a Stick]] as a way to get started, but you should be able install it natively as well.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to have mesh support with the Live USB/CD ? ===&lt;br /&gt;
Q: If I understand this correctly, mesh support means your wireless card functions as both an access point/router and a network node. In short, your wireless computer can pass along packages from nearby wireless computers and the other way round. Do you need special wireless cards for this, or is this a driver/software issue that could be fixed in the Live CD, so that more people can experience mesh networks?&lt;br /&gt;
&lt;br /&gt;
:A: Yes, it will be possible to have [http://www.open80211s.org/trac/wiki/HOWTO-0.2.1 mesh support] with the Live CD shortly, provided you have a suitable wireless card.&lt;br /&gt;
&lt;br /&gt;
:[http://www.o11s.org/ open80211s] is an open-source implementation of the emerging IEEE 802.11s wireless mesh standard. It has been accepted in the mainline Linux kernel and is included in release 2.6.26. The resulting software will run on GNU/Linux on commodity PC hardware. &lt;br /&gt;
&lt;br /&gt;
:Open80211s is based on the mac80211 wireless stack and should run on any of the wireless cards that mac80211 supports. At present, September 2008, four families of drivers are supported or partially supported. The ath5k driver supports Atheros WLAN based chipsets, the b43 driver supports the 802.11 B/G family of wireless chips Broadcom produces, libertas_tf supports the Marvell 88W83886 USB device as found in the OLPC XO-1 laptop, and the zd1211rw driver covers a large proportion of USB-wireless devices on the consumer market as these are based on the ZyDAS ZD1211. Several months after the acquisition, Atheros rebranded the ZyDAS ZD1211 chip to AR5007UG.&lt;br /&gt;
&lt;br /&gt;
== Sugar Labs ==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar Labs? ===&lt;br /&gt;
:Sugar Labs, a non-profit foundation, serves as a support base and gathering place for the community of educators and software developers who want to extend the Sugar platform and who have been creating Sugar-compatible applications.&lt;br /&gt;
&lt;br /&gt;
=== What is the mission of Sugar Labs? ===&lt;br /&gt;
:The overarching mission of Sugar Labs is to support the Sugar platform through software development, and community outreach and support. The purpose of the Sugar platform is provide a software and content environment that enhances learning. Towards this end, Sugar is designed to facilitate learners to “explore, express, debug, and critique.” &lt;br /&gt;
&lt;br /&gt;
=== What are the principles that guide Sugar Labs? ===&lt;br /&gt;
:Sugar Labs subscribes to principle that learning thrives within a culture of freedom of expression, hence it has a natural affinity with the free software movement (Please see [[Sugar_Labs#Principles|Principles]] page in this wiki for more details). The core Sugar platform has been developed under a GNU General Public License (GPL); individual activities may be under different licenses.&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship of Sugar Labs to One Laptop per Child? ===&lt;br /&gt;
:Sugar was originally developed as the user interface (UI) for the One Laptop per Child (OLPC) XO-1 laptop. Sugar Labs was established as an independent entity in order to facilitate the growth of Sugar beyond any single hardware platform. While Sugar Labs has a cooperative working relationship with OLPC, it is by no means an exclusive or proprietary relationship. Sugar Labs is not bound to any specific hardware platform or Linux distribution (Please see [[Supported systems]]).&lt;br /&gt;
&lt;br /&gt;
:Sugar Labs is the upstream community for the Sugar project. Sugar Labs welcomes a close working relationship with OLPC. Sugar Labs also welcomes cooperation with other laptop and computer manufacturers and software and content providers.&lt;br /&gt;
&lt;br /&gt;
:OLPC and Sugar Labs are not diverging, we are on the same page; we are both hoping to fund and support Sugar so that we can continue to provide the best learning experience for children. The Sugar Labs initiative is consistent with taking Sugar to the next level; this is not inconsistent with what OLPC is doing. Any help from outside or inside OLPC should help establish Sugar as a more stable and better product.&lt;br /&gt;
&lt;br /&gt;
=== What is the standard Sugar license? ===&lt;br /&gt;
:Materials created by the Sugar Labs contributors are usually shared on GNU GPL free software license.&lt;br /&gt;
&lt;br /&gt;
=== What is a Sugar Activity? ===&lt;br /&gt;
:Activity is a small educational application (like this one) built into Sugar. Anyone can create an activity, you too...!&lt;br /&gt;
&lt;br /&gt;
=== Who is upstream for Sugar? ===&lt;br /&gt;
:Sugar Labs is the upstream for the Sugar project.&lt;br /&gt;
&lt;br /&gt;
=== Who is Sugar Labs? ===&lt;br /&gt;
:Sugar is a community project, so it is the sum of those of you who participate. Sugar Labs was started by some Sugar-community members: [[User:Walter|Walter Bender]], [[User:ChristophD|Christoph Derndorfer]], [[User:Bert|Bert Freudenberg]], [[User:Marcopg|Marco Pesenti Gritti]], [[User:Bernie|Bernardo Innocenti]], Aaron Kaplan, [[User:Erikos|Simon Schampijer]], and [[User:Tomeu|Tomeu Vizoso]]. We have rules of [[Sugar Labs/Governance | governance]] that have been vetted by a process of public discussion.&lt;br /&gt;
&lt;br /&gt;
=== How do I get involved? ===&lt;br /&gt;
:Please see the [[Sugar Labs/Getting Involved|Getting Involved]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== How do I learn more about Sugar Labs? ===&lt;br /&gt;
:Check out the following additional FAQs, and join the IAEP mailing list and ask us about anything related to the project that isn&#039;t related to code. &lt;br /&gt;
&lt;br /&gt;
* [[Activity Team/FAQ|Activities]]&lt;br /&gt;
* [[Deployment Team/FAQ|Deployment]]&lt;br /&gt;
* [[Design Team/FAQ|Design]]&lt;br /&gt;
* [[Development Team/FAQ|Development]]&lt;br /&gt;
* [[Documentation Team/FAQ|Documentation]]&lt;br /&gt;
* [[Education Team/FAQ|Education]]&lt;br /&gt;
* [[Infrastructure Team/FAQ|Infrastructure]]&lt;br /&gt;
* [[Local Labs/FAQ|Local Labs]]&lt;br /&gt;
* [[Marketing Team/FAQ|Marketing]]&lt;br /&gt;
* [[Math4Team/FAQ|Math4 Project]]&lt;br /&gt;
* [[Oversight Board|Oversight Board]]&lt;br /&gt;
* [[Sugar on a Stick/FAQ|Sugar on a Stick]]&lt;br /&gt;
* [[BugSquad/FAQ|Testing]]&lt;br /&gt;
* [[Translation Team/FAQ|Translation]]&lt;br /&gt;
* [[Wiki Team/FAQ| Wiki]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:General public]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99872</id>
		<title>Sugar Labs/FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/FAQ&amp;diff=99872"/>
		<updated>2017-01-07T16:04:29Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* How can I get online with the Live USB/CD, and what can I do then? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Graduate|Some useful stuff in here}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{TeamHeader|Sugar Labs|home=Community Home|meeting_link=Events|meeting_label=Events Calendar}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;, or follow the question links at the top of the major sections, or visit [[:Category:FAQ]].&lt;br /&gt;
__TOC__&lt;br /&gt;
==Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar? ===&lt;br /&gt;
:Sugar is an educational software platform built with the Python programming language and based on the principles of cognitive and social constructivism. See [[What is Sugar?]].&lt;br /&gt;
&lt;br /&gt;
=== Who is doing Sugar development? ===&lt;br /&gt;
:Sugar is a community project where all work is done by volunteers. You can get an idea of the people involved from the [[Development Team/Release/Modules]] page.&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar support Android? ===&lt;br /&gt;
: Not at this time, although there are some developers working to change that situation. See this [http://www.mail-archive.com/iaep@lists.sugarlabs.org/msg13765.html mailing list thread].&lt;br /&gt;
&lt;br /&gt;
=== What makes Sugar different from other educational software platforms? ===&lt;br /&gt;
* See [[Marketing Team/Website#Website_2|Website sandbox]].&lt;br /&gt;
:The Sugar interface, in its departure from the desktop metaphor for computing, is the first serious attempt to create a user interface that is based on both cognitive and social constructivism: learners should engage in authentic exploration and collaboration. It is based on three very simple principles about what makes us human: (1) everyone is a teacher and a learner; (2) humans by their nature are social beings; and (3) humans by their nature are expressive. These are the pillars of a user experience for learning. &lt;br /&gt;
&lt;br /&gt;
:Sugar also considers two aphorisms: (1) you learn through doing, so if you want more learning, you want more doing; and (2) love is a better master than duty—you want people to engage in things that are authentic to them, things that they love.&lt;br /&gt;
&lt;br /&gt;
:The presence of other people is inherent to the Sugar interface: collaboration is a first-order experience. Students and teachers engage in a dialog with each other, support each other, critique each other, and share ideas. &lt;br /&gt;
&lt;br /&gt;
:Sugar is also discoverable: it can accommodate a wide variety of users, with different levels of skill in terms of reading, language, and different levels of experience with computing. It is easy to approach, and yet it doesn&#039;t put an upper bound on personal expression; one can peel away layers and go deeper and deeper, with few restrictions.&lt;br /&gt;
&lt;br /&gt;
:Sugar is based on Python, an interpreted language, allowing the direct appropriation of ideas: in whatever realm the learner is exploring—music, browsing, reading, writing, programming, graphics, etc.—they are able to drill deeper; they are not going to hit a wall, since they can, at every level, engage in debugging both their personal expression and the very tools that they use for that expression.&lt;br /&gt;
&lt;br /&gt;
==Using Sugar==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== Who can use Sugar and how do they benefit? ===&lt;br /&gt;
:Sugar is a free software project, freely available to anyone who wants to use it or improve upon it.&lt;br /&gt;
&lt;br /&gt;
:The Sugar platform was designed for young children (K–6), but it is finding applicability in a number of different venues where the simplicity of design maps is an enabler, e.g., mobile applications, the elderly, etc. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Why Sugar?&#039;&#039;&#039; Sugar will engage even the youngest learner in the use of computation as a powerful &amp;quot;thing to think with.&amp;quot; They will quickly become proficient in using the computer as a tool to engage in authentic problem-solving. Sugar users develop skills that help them in all aspects of life.&lt;br /&gt;
* Sugar comes with hundreds of tools for discovery through exploring, expressing, and sharing: browsing, writing, rich media, etc.&lt;br /&gt;
* Sugar comes with a built-in collaboration system: peer-to-peer learning; always-on support; and single-click sharing.&lt;br /&gt;
* Sugar comes with built-in tools for reflection; a built-in portfolio assessment tool that serves as a forum for discussion between children, their parents, and their teachers. &lt;br /&gt;
* The Sugar learning platform is discoverable: it uses simple means to reach to complex ends with no upper bound on where you can reach. &lt;br /&gt;
* Sugar is designed for local appropriation: it has built-in tools for making changes and improvements and a growing global community of support.&lt;br /&gt;
* Sugar puts an emphasis on learning through doing and debugging: more engaged learners are to tackle authentic problems.&lt;br /&gt;
* Sugar is available in a wide variety of forms: as part of GNU/Linux distributions; LiveUSB/CD; and in  virtual machines or emulation.&lt;br /&gt;
:There is a further summary of the Sugar benefits [[Deployment Team/Small_deployment_guide#Why_Sugar|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How can I get online with the Live USB/CD, and what can I do then? ===&lt;br /&gt;
&lt;br /&gt;
:The Live USB device must be inserted into a USB port on your computer, the Live CD must be in your CD-ROM or DVD drive, when you start your computer, and your BIOS settings should be set to first look for an operating system there on the USB or CD-ROM device. If the settings are okay, the Live USB/CD will boot.&lt;br /&gt;
&lt;br /&gt;
:After a little while, you will be prompted for a name and you will get to choose the colour of your avatar. This is a small X, like the arms and legs of a human, with an O as the head above the X. This is &amp;quot;you&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:Wait a little longer, and you will see &amp;quot;yourself&amp;quot; in the middle of the screen. Just below &amp;quot;you&amp;quot;, is your journal, where everything you do is recorded. &lt;br /&gt;
&lt;br /&gt;
:In the top left corner of the Frame is a circle of smaller circles. This is your Neighbourhood-circle. At the moment, only nearby wireless access points are visible as small coloured circles - more colour inside means better signal strength. Let your mouse pointer hover above a circle to see the name of the wireless network. A small padlock means you need to supply a username and password to access the network. Click the circle you would like to access. It should be a wireless network you know will grant you Internet access once you are connected. If the network is protected with a padlock, you will be prompted for a valid username and password at this point, so give these and click the OK-button. If everything is okay, you are now connected.&lt;br /&gt;
&lt;br /&gt;
:You should soon see many small avatars like your own in your neighbourhood. Hover your mouse pointer above them to see their usernames.&lt;br /&gt;
&lt;br /&gt;
:In the top left corner next to the Neighbourhood-circle, is your Friends-circle. You don&#039;t have any Sugar-friends at the moment, so this will be empty. Next to the Friends-circle is a circle with a single dot - that&#039;s right - it means you. Click the You-circle, and you will get back to you and your activities.&lt;br /&gt;
&lt;br /&gt;
:Surrounding your avatar on the Home screen are many activities, so click the one that looks like a cartoon talk bubble to start the Chat-activity or some other activity - like the Paint-activity or the Calculator-activity. After a little while, the new activity opens. In the top right corner of all activities is a small menu, which says &amp;quot;Share with:&amp;quot;. Click this to unfold the options, and choose Neighbourhood by clicking on it.&lt;br /&gt;
&lt;br /&gt;
:Click the Neighbourhood-circle again, and you will notice that the activity is now visible to everyone in your neighbourhood. If you hover your mouse button over an activity in your neighbourhood, a small menu will unfold where you may choose to join the activity by selecting &amp;quot;Join&amp;quot; from the activity&#039;s menu. Remember, your neighbourhood is the entire world! People in other parts of the world may be working or sleeping when you start sharing your activities, so be patient - it might be many hours before anyone is available for a chat. Enjoy! :-)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on {GNU/Linux, Fedora, Ubuntu, SUSE, MAC OS, Windows, etc.}? ===&lt;br /&gt;
:Please refer to the [[Supported systems]] page for an up-to-date list of supported systems.&lt;br /&gt;
&lt;br /&gt;
=== Is there an image of the OS that can be run on a PC? ===&lt;br /&gt;
:You can download a Live USB image at [[Sugar on a Stick]] and a Live CD version of Sugar at http://wiki.laptop.org/go/LiveCd, or run Sugar natively on a [[Supported systems|supported system]]. (The language can be set from the Sugar-control-panel or My Settings link on the avatar panel.)&lt;br /&gt;
&lt;br /&gt;
=== Does Sugar run on an ASUS Eee PC (or other &amp;quot;ultra-mobile&amp;quot; or &amp;quot;mini&amp;quot; PCs)?===&lt;br /&gt;
Yes. If it can run GNU/Linux and GNOME, it can run Sugar. Try [[Sugar on a Stick]] as a way to get started, but you should be able install it natively as well.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to have mesh support with the Live USB/CD ? ===&lt;br /&gt;
Q: If I understand this correctly, mesh support means your wireless card functions as both an access point/router and a network node. In short, your wireless computer can pass along packages from nearby wireless computers and the other way round. Do you need special wireless cards for this, or is this a driver/software issue that could be fixed in the Live CD, so that more people can experience mesh networks?&lt;br /&gt;
&lt;br /&gt;
:A: Yes, it will be possible to have [http://www.open80211s.org/trac/wiki/HOWTO-0.2.1 mesh support] with the Live CD shortly, provided you have a suitable wireless card.&lt;br /&gt;
&lt;br /&gt;
:[http://www.o11s.org/ open80211s] is an open-source implementation of the emerging IEEE 802.11s wireless mesh standard. It has been accepted in the mainline Linux kernel and is included in release 2.6.26. The resulting software will run on GNU/Linux on commodity PC hardware. &lt;br /&gt;
&lt;br /&gt;
:Open80211s is based on the mac80211 wireless stack and should run on any of the wireless cards that mac80211 supports. At present, September 2008, four families of drivers are supported or partially supported. The ath5k driver supports Atheros WLAN based chipsets, the b43 driver supports the 802.11 B/G family of wireless chips Broadcom produces, libertas_tf supports the Marvell 88W83886 USB device as found in the OLPC XO-1 laptop, and the zd1211rw driver covers a large proportion of USB-wireless devices on the consumer market as these are based on the ZyDAS ZD1211. Several months after the acquisition, Atheros rebranded the ZyDAS ZD1211 chip to AR5007UG.&lt;br /&gt;
&lt;br /&gt;
== Sugar Labs ==&lt;br /&gt;
: &#039;&#039;&#039;[[Talk:Sugar Labs/FAQ | Post new questions here]]&#039;&#039;&#039;.&lt;br /&gt;
=== What is Sugar Labs? ===&lt;br /&gt;
:Sugar Labs, a non-profit foundation, serves as a support base and gathering place for the community of educators and software developers who want to extend the Sugar platform and who have been creating Sugar-compatible applications.&lt;br /&gt;
&lt;br /&gt;
=== What is the mission of Sugar Labs? ===&lt;br /&gt;
:The overarching mission of Sugar Labs is to support the Sugar platform through software development, and community outreach and support. The purpose of the Sugar platform is provide a software and content environment that enhances learning. Towards this end, Sugar is designed to facilitate learners to “explore, express, debug, and critique.” &lt;br /&gt;
&lt;br /&gt;
=== What are the principles that guide Sugar Labs? ===&lt;br /&gt;
:Sugar Labs subscribes to principle that learning thrives within a culture of freedom of expression, hence it has a natural affinity with the free software movement (Please see [[Sugar_Labs#Principles|Principles]] page in this wiki for more details). The core Sugar platform has been developed under a GNU General Public License (GPL); individual activities may be under different licenses.&lt;br /&gt;
&lt;br /&gt;
=== What is the relationship of Sugar Labs to One Laptop per Child? ===&lt;br /&gt;
:Sugar was originally developed as the user interface (UI) for the One Laptop per Child (OLPC) XO-1 laptop. Sugar Labs was established as an independent entity in order to facilitate the growth of Sugar beyond any single hardware platform. While Sugar Labs has a cooperative working relationship with OLPC, it is by no means an exclusive or proprietary relationship. Sugar Labs is not bound to any specific hardware platform or Linux distribution (Please see [[Supported systems]]).&lt;br /&gt;
&lt;br /&gt;
:Sugar Labs is the upstream community for the Sugar project. Sugar Labs welcomes a close working relationship with OLPC. Sugar Labs also welcomes cooperation with other laptop and computer manufacturers and software and content providers.&lt;br /&gt;
&lt;br /&gt;
:OLPC and Sugar Labs are not diverging, we are on the same page; we are both hoping to fund and support Sugar so that we can continue to provide the best learning experience for children. The Sugar Labs initiative is consistent with taking Sugar to the next level; this is not inconsistent with what OLPC is doing. Any help from outside or inside OLPC should help establish Sugar as a more stable and better product.&lt;br /&gt;
&lt;br /&gt;
=== Who is upstream for Sugar? ===&lt;br /&gt;
:Sugar Labs is the upstream for the Sugar project.&lt;br /&gt;
&lt;br /&gt;
=== Who is Sugar Labs? ===&lt;br /&gt;
:Sugar is a community project, so it is the sum of those of you who participate. Sugar Labs was started by some Sugar-community members: [[User:Walter|Walter Bender]], [[User:ChristophD|Christoph Derndorfer]], [[User:Bert|Bert Freudenberg]], [[User:Marcopg|Marco Pesenti Gritti]], [[User:Bernie|Bernardo Innocenti]], Aaron Kaplan, [[User:Erikos|Simon Schampijer]], and [[User:Tomeu|Tomeu Vizoso]]. We have rules of [[Sugar Labs/Governance | governance]] that have been vetted by a process of public discussion.&lt;br /&gt;
&lt;br /&gt;
=== How do I get involved? ===&lt;br /&gt;
:Please see the [[Sugar Labs/Getting Involved|Getting Involved]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== How do I learn more about Sugar Labs? ===&lt;br /&gt;
:Check out the following additional FAQs, and join the IAEP mailing list and ask us about anything related to the project that isn&#039;t related to code. &lt;br /&gt;
&lt;br /&gt;
* [[Activity Team/FAQ|Activities]]&lt;br /&gt;
* [[Deployment Team/FAQ|Deployment]]&lt;br /&gt;
* [[Design Team/FAQ|Design]]&lt;br /&gt;
* [[Development Team/FAQ|Development]]&lt;br /&gt;
* [[Documentation Team/FAQ|Documentation]]&lt;br /&gt;
* [[Education Team/FAQ|Education]]&lt;br /&gt;
* [[Infrastructure Team/FAQ|Infrastructure]]&lt;br /&gt;
* [[Local Labs/FAQ|Local Labs]]&lt;br /&gt;
* [[Marketing Team/FAQ|Marketing]]&lt;br /&gt;
* [[Math4Team/FAQ|Math4 Project]]&lt;br /&gt;
* [[Oversight Board|Oversight Board]]&lt;br /&gt;
* [[Sugar on a Stick/FAQ|Sugar on a Stick]]&lt;br /&gt;
* [[BugSquad/FAQ|Testing]]&lt;br /&gt;
* [[Translation Team/FAQ|Translation]]&lt;br /&gt;
* [[Wiki Team/FAQ| Wiki]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:General public]]&lt;br /&gt;
[[Category:FAQ]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/Current_Events&amp;diff=99771</id>
		<title>Sugar Labs/Current Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/Current_Events&amp;diff=99771"/>
		<updated>2016-12-20T13:20:54Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Sugar Digest */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== What&#039;s new ==&lt;br /&gt;
&lt;br /&gt;
This page is updated every few weeks with notes from the Sugar Labs community. (The digest is also sent to the community-news at sugarlabs.org list, blogged at [http://walterbender.org/ walterbender.org], and [[Archive/Current Events|archived here]].) If you would like to contribute, please send email to [[User:walter|walter]] at sugarlabs.org by the weekend. (Also visit &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://planet.sugarlabs.org planet.sugarlabs.org].&amp;lt;/span&amp;gt;)﻿&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Sugar Digest ==&lt;br /&gt;
&lt;br /&gt;
1. Marvin Minsky was fond of saying that there is nothing more dangerous than when a roomful of people all agree with each other. We don&#039;t have to worry about that in the Sugar community!!! Marvin also observed that &amp;quot;it&#039;s very important to have friends who can solve problems you can&#039;t.&amp;quot; The diversity of our community is its strength.&lt;br /&gt;
&lt;br /&gt;
Another Marvin quote relevant to our current quest to define ourselves as a community: &amp;quot;Our present culture may be largely shaped by this strange idea of isolating children&#039;s thought from adult thought. Perhaps the way our culture educates its children better explains why most of us come out as dumb as they do, than it explains how some of us come out as smart as they do.&amp;quot; As Laura Vargas put it recently, Sugar Labs is a community &amp;quot;where you can learn how to design, develop and deploy high-quality Free Software.&amp;quot; Within our community, children and adults are working together.&lt;br /&gt;
&lt;br /&gt;
2. Sam Parkinson is our new release manager. Sam, a former GCI winner from Australia, has been responsible for many of the patches to the Sugar toolkit over the past few releases and has also been one of our most prelific code reviewers. Martin Abente, our release manager for the past four releases, has agreed to mentor Sam during the transition. Tip of the hat to Martin for all of his contributions and continued support.&lt;br /&gt;
&lt;br /&gt;
3. Mariah Noelle Villarreal just got back from the Google Code-in reunion, where she represented Sugar Labs. She had a chance to meet Ezequiel and Piotr, our two winners, and spend time with members of the other participating projects. Mariah brought multiple copies of Sugar on a Stick to hand out and reports that there was a positive reception, especially among some of the parents in attendance. She also voiced some disappointment with the degree of awareness of Software Libre among attendees. FWIW, Devin Ulibarri and I are working on a new paper regarding the importance of Software Libre to education. Stay tuned.&lt;br /&gt;
&lt;br /&gt;
4. I just got back from a trip to Santiago, Chile, where I was hosted by the education division of Fundación Chile. (Cecilia Rodriguez Alcala Garcia, formally of Educa Paraguay, was responsible for my invitation to run some workshops and give a keynote address at Creo Chile.)  The theme of my workshops was programming as a vehicle for engaging in critical thinking. I introduced Turtle Blocks and Music Blocks first to a team of engineers from throughout the foundation, then to an executive group, then to a &amp;quot;hacker&amp;quot; group attending the Creo Chile event, and finally to a group of children and their parents. I was assisted by Andrea Vasquez Garcia, without whom I would have been lost. In addition, I participated in a workshop run by a local rap artist, Nelson Bobadilla Alvarado, and an educator, Francisca Petrovich Ursic. We did a collaborative, interactive Music Blocks program, whereby we could programmatically participate in the performance. A bit crude, but I learned a lot in the process. My keynote, which I have uploaded to [[File:FchBender2016.pdf]], focused on Sugar and the role of Software Libre in education.&lt;br /&gt;
&lt;br /&gt;
In the workshop for executives, I was challenged to write a Turtle program to calculate the expected value of the number of coin flips required to get three heads or three tails in a row. My response can be seen at [http://walterbender.github.io/turtleblocksjs/?file=threeinarow.tb].&lt;br /&gt;
&lt;br /&gt;
One sub-goal of my trip was to seek advice regarding a reference machine for Sugar. Alas, I was not yet able to get a definitive answer, as the foundation does not directly distribute hardware and the ministry of education has a wide variance in the types of machines they distribute. But I hope to get some feedback on this topic in the coming weeks.&lt;br /&gt;
&lt;br /&gt;
While I was in Santiago, Chile defeated Mexico in the Copa América. I credited the win to Sugar (and the Chilean futbol shirt I was wearing). Hopefully it will mean that Sugar will find a warn reception in Chile.&lt;br /&gt;
&lt;br /&gt;
5. Google Summer of Code is well underway. Mentors are writing mid-term evaluations this week. Be sure to check out the great work being done by our interns, including [https://github.com/sugarlabs/edit-fonts-activity], [http://vikramahujagsoc.blogspot.in/], [https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/313#discussion_r63140566], [http://musicblocks.net/2016/06/13/multiple-rhythm-rulers/], [https://www.youtube.com/watch?v=FAHUOBJ7fqk], and [https://iamutkarshtiwari.wordpress.com/].&lt;br /&gt;
&lt;br /&gt;
6. On the flight back from Santiago, I wrote a Python script to convert glif files into Turtle Block projects. (Tip of the hat to Eli Heuer for providing me some sample glif files.) The results are quite fun (See [http://walterbender.github.io/musicblocks/?file=a.tb]). Next up, a version where each knot and control point is represented by a turtle, and thus the glyph will be editable.&lt;br /&gt;
&lt;br /&gt;
=== In the Community ===&lt;br /&gt;
&lt;br /&gt;
7. Gary Stager has written a nice [https://www.edsurge.com/news/2016-06-07-as-the-maker-movement-turns-45-gary-stager-pays-tribute-to-m-i-t-computing-pioneer-cynthia-solomon tribute to Cynthia Solomon] in celebration of the 45th anniversary of the Maker Movement.&lt;br /&gt;
&lt;br /&gt;
8. Please join us every 1st Friday of the month at UTC 1900 on irc.freenode.net #sugar-meeting.&lt;br /&gt;
&lt;br /&gt;
=== Tech Talk ===&lt;br /&gt;
&lt;br /&gt;
9. Sam has announced the second release leading up to Sugar 0.110. Recent changes include:&lt;br /&gt;
* James Cameron fixed Gtk 3.6 compatibility and an edge case with bundle erasure&lt;br /&gt;
* Utkarsh Tiwari added a WiFi password visibility toggle&lt;br /&gt;
* Abhijit Patel added a PopWindow api for sugar toolkit&lt;br /&gt;
* Sebastian Silva fixed Broadway compatibility for `sugar-activity`&lt;br /&gt;
* The [http://wiki.sugarlabs.org/go/Features/Tick_based_animation smooth animations feature] landed&lt;br /&gt;
* Git submodules are now supported by the bundlebuilder&lt;br /&gt;
* Improved Gtk 3.20 support&lt;br /&gt;
* Misc bug/interface fixes&lt;br /&gt;
&lt;br /&gt;
Sam has been busy updating the [https://developer.sugarlabs.org/sugar3/sugar3.graphics.icon.html API documentation] and is soliciting feedback. Also, Sam has updated Fedora [https://copr.fedorainfracloud.org/coprs/samtoday/sugar/ COPR] with the new versions of the Sugar packages. Tarballs for sugar, sugar-toolkit-gtk3 and sugar-artwork are in the usual places on the download server [http://download.sugarlabs.org/sources/sucrose/glucose/].&lt;br /&gt;
&lt;br /&gt;
10. Tom Gilliard reports the availability of Sugar spins for Fedora24 ([http://dl.fedoraproject.org/pub/alt/unofficial/releases/24/x86_64/Fedora-SoaS-Live-x86_64-24-20160614.n.0.iso x86_64],  [http://dl.fedoraproject.org/pub/alt/unofficial/releases/24/i386/Fedora-SoaS-Live-i386-24-20160614.n.0.iso i386]). &lt;br /&gt;
&lt;br /&gt;
=== Sugar Labs ===&lt;br /&gt;
&lt;br /&gt;
11. Please visit our [http://planet.sugarlabs.org planet].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Community News archive ==&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;[[Archive/Current Events|archive]]&#039;&#039;&#039; of this digest is available.&lt;br /&gt;
&lt;br /&gt;
==Planet==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;The Sugar Labs [http://planet.sugarlabs.org/ Planet] is found [http://planet.sugarlabs.org/ here].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sugar in the news==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|align=right valogn=top|02 Nov 2016||&#039;&#039;&#039;BBVA&#039;&#039;&#039; &amp;amp;ndash; [https://www.youtube.com/watch?v=puA2NH2uVQQ&amp;amp;feature=youtu.be Sociedad de la Creatividad - desafíos de hoy para el futuro] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23 Oct 2016||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/locales/la-computacion-es-una-herramienta-para-promover-agentes-de-cambio-1530653.html La computación es una herramienta para promover agentes de cambio]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23 Jul 2016||&#039;&#039;&#039;La Tercera&#039;&#039;&#039; &amp;amp;ndash; [http://www.latercera.com/noticia/tendencias/2016/07/27-689886-9-walter-bender-cuando-todos-estan-de-acuerdo-con-todos-es-bastante-peligroso.shtml Cuando todos están de acuerdo con todos es bastante peligroso]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|02 May 2016||&#039;&#039;&#039;Fedora Insider&#039;&#039;&#039; &amp;amp;ndash; [http://www.linuxinsider.com/story/Fedora-Based-Sugar-on-a-Stick-Is-One-Sweet-Desktop-83446.html Fedora-based Sugar on a Stick is one sweet desktop]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09 Feb 2016||&#039;&#039;&#039;www.montevideo.com&#039;&#039;&#039; &amp;amp;ndash; [http://www.montevideo.com.uy/auc.aspx?299096 DOS URUGUAYOS ENTRE GANADORES DEL CONCURSO GOOGLE CODE-IN]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Aug 2015||&#039;&#039;&#039;Musson Foundation&#039;&#039;&#039; &amp;amp;ndash; [https://youtu.be/HZtVv2nlP8Y Jamaica Girls Code] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Aug 2015||&#039;&#039;&#039;Google Open Source&#039;&#039;&#039; &amp;amp;ndash; [http://google-opensource.blogspot.com/2015/08/my-sweet-adventures-with-sugar-labs-and.html My sweet adventures with Sugar Labs and Google Code-in]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09 May 2015||&#039;&#039;&#039;La Prensa&#039;&#039;&#039; &amp;amp;ndash; [http://www.laprensa.com.ni/2015/05/09/nacionales/1829026-de-alumnos-a-creadores-de-su-aprendizaje De alumnos a creadores de su aprendizaje]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|30 Apr 2015||&#039;&#039;&#039;Diario La República&#039;&#039;&#039; &amp;amp;ndash; [http://www.republica.com.uy/investigador-sueco-visito-uruguay-para-conocer-el-proyecto-butia/514419/ Swedish researcher visited Uruguay to meet the project Butiá]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24 Apr 2015||&#039;&#039;&#039;Jamaica Observer&#039;&#039;&#039; &amp;amp;ndash; [http://www.jamaicaobserver.com/magazines/career/Future-coders_18811152 Future Coders]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24 Apr 2015||&#039;&#039;&#039;Jamaica Information Service&#039;&#039;&#039; &amp;amp;ndash; [http://jis.gov.jm/state-minister-urges-young-women-enter-ict-sector/ State minister urges young women to enter ICT sector]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|6 Feb 2015||&#039;&#039;&#039;Cromo&#039;&#039;&#039; &amp;amp;ndash; [http://www.cromo.com.uy/2015/02/el-chico-google/ El chico Google]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|5 Feb 2015||&#039;&#039;&#039;Capital Noticias Canelones&#039;&#039;&#039; &amp;amp;ndash; [https://www.google.com/url?q=https%3A%2F%2Fwww.facebook.com%2Fvideo.php%3Fv%3D400864146741913%26set%3Dvb.246080195553643%26type%3D2%26theater&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNFGeMoL69EHGf4Kudmoxo47duJf_Q El joven de Canelones, Ignacio Rodríguez, ganó nuevamente la competencia de programación de Google.] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|3 Feb 2015||&#039;&#039;&#039;montevideo.com&#039;&#039;&#039; &amp;amp;ndash; [http://www.montevideo.com.uy/auc.aspx?261076 Código joven]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|1 Dec 2014||&#039;&#039;&#039;Google Open Source Blog&#039;&#039;&#039; &amp;amp;ndash; [http://google-opensource.blogspot.com/2014/12/3-2-1-code-in-inviting-teens-to.html 3, 2, 1 Code-in: Inviting teens to contribute to open source]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|7 Oct 2014||&#039;&#039;&#039;Kauffman Report&#039;&#039;&#039; &amp;amp;ndash; [http://www.kauffman.org/blogs/policy-dialogue/2014/august/paraguay-thirsty-for-21st-century-education Paraguay Thirsty for 21st-Century Education]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|25 Sept 2014||&#039;&#039;&#039;ANEP&#039;&#039;&#039; &amp;amp;ndash; [http://www.anep.edu.uy/anep/index.php/897-fecundo-intercambio-de-jovenes-de-todo-el-mundo-en-encuentro-de-programadores Fecundo intercambio de jovenes de todo el mundo en encuentro de programadores]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12 Jun 2014||&#039;&#039;&#039;Producción Nacional&#039;&#039;&#039; &amp;amp;ndash; [https://www.youtube.com/watch?v=0YbRCMRpstg Innovando con XO] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Apr 2014||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/suplementos/centinela/paraguay-educa-realiza-talleres-de-programacion-y-de-robotica-1238493.html Paraguay Educa realiza talleres de programación y de robótica]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|21 Apr 2014||&#039;&#039;&#039;El Tiempo&#039;&#039;&#039; &amp;amp;ndash; [http://www.eltiempo.com/vida-de-hoy/educacion/entrevista-de-el-tiempo-a-walter-bender_13855020-4 &#039;Cada niño podría ser un maestro del &#039;software&#039;: Walter Bender]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|2 Apr 2014||&#039;&#039;&#039;vera.tv&#039;&#039;&#039; &amp;amp;ndash; [http://tv.vera.com.uy/video/7012 Antel vuelta a clases] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|4 Feb 2014||&#039;&#039;&#039;La Diaria&#039;&#039;&#039; &amp;amp;ndash; [http://ladiaria.com.uy/articulo/2014/2/en-codigo/ En código]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24 Jan 2014||&#039;&#039;&#039;Espectador&#039;&#039;&#039; &amp;amp;ndash; [http://www.espectador.com/sociedad/283177/entre-los-ganadores-del-concurso-anual-de-programacion-de-google-code-in-hay-nuevamente-un-joven-uruguayo Entre los ganadores del concurso anual de programación de Google Code-in hay nuevamente un joven uruguayo]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23 Jan 2014||&#039;&#039;&#039;El Pais&#039;&#039;&#039; &amp;amp;ndash; [http://www.elpais.com.uy/vida-actual/ensena-profesores-ahora-premia-google.html Le enseña a sus profesores y ahora lo premia Google]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|20 Jan 2014||&#039;&#039;&#039;Google Open Source Blog&#039;&#039;&#039; &amp;amp;ndash; [http://google-opensource.blogspot.com/ Google Code-in 2013 - drumroll please!]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Nov 2013||&#039;&#039;&#039;BBVA Paraguay&#039;&#039;&#039; &amp;amp;ndash; [http://www.youtube.com/watch?v=y_wTBs2ektI&amp;amp;feature=youtu.be&amp;amp;utm_source=buffer&amp;amp;utm_campaign=Buffer&amp;amp;utm_content=bufferbac3c&amp;amp;utm_medium=twitter Turtle Art Day in Caacupé] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|17 Oct 2013||&#039;&#039;&#039;ANTEL Integra&#039;&#039;&#039; &amp;amp;ndash; [http://www.integra.antel.com.uy/2013/10/educacion/turtle-art-la-plataforma-del-butia/ Turtle Art: la plataforma del Butiá]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14 Oct 2013||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/locales/software-libre-es-tema-de-paneles-en-la-cumbre-627064.html Software libre es tema de paneles en la cumbre]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14 Oct 2013||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/locales/programar-ayuda-a-los-ninos-a-pensar-628059.html Programar ayuda a los niños a pensar]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14 Oct 2013||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/locales/hoy-es-el-dia-de-tortugarte-en-caacupe-627470.html Hoy es el Día de TortugArte, en Caacupé]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14 Oct 2013||&#039;&#039;&#039;ABC Color&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/edicion-impresa/locales/las-tic-en-la-educacion-son-clave-para-el-desarrollo-del-pais-aseguran-627469.html Las TIC en la educación son clave para el desarrollo del país, aseguran]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12 Oct 2013||&#039;&#039;&#039;Cromo&#039;&#039;&#039; &amp;amp;ndash; [http://www.cromo.com.uy/2013/10/mhijo-el-programador/ M’hijo el programador]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08 Aug 2013||&#039;&#039;&#039;News1&#039;&#039;&#039; &amp;amp;ndash; [http://news1.kr/articles/1273059 Interview with former MIT Media Lab director] (in Korean)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12 Jul 2013||&#039;&#039;&#039;RIT&#039;&#039;&#039; &amp;amp;ndash; [http://www.rit.edu/news/story.php?id=50113 ‘Sky Time’ video game selected for White House Champions of Change event July 23]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Apr 2013||&#039;&#039;&#039;BBC Mundo&#039;&#039;&#039; &amp;amp;ndash; [http://www.bbc.co.uk/mundo/noticias/2013/04/130422_programadores_adolescentes_am.shtml Los programadores adolescentes premiados por Google]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07 Feb 2013||&#039;&#039;&#039;el Neuvo Herald&#039;&#039;&#039; &amp;amp;ndash; [http://www.elnuevoherald.com/2013/02/07/1402134/joven-uruguayo-brilla-como-programador.html Joven uruguayo brilla como programador y es distinguido por Google]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06 Feb 2013||&#039;&#039;&#039;el Observador&#039;&#039;&#039; &amp;amp;ndash; [http://www.elobservador.com.uy/noticia/242936/joven-uruguayo-gana-la-competencia-google-code/ Joven uruguayo gana la competencia Google Code] (Also see [http://people.sugarlabs.org/aguz/gci-press-interviews.html GCI press interviews])&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|Jan 2013||&#039;&#039;&#039;Raspberry Pi Geek&#039;&#039;&#039; &amp;amp;ndash; [http://www.raspberry-pi-geek.com/Archive/2013/01/Pi-with-Sugar-and-turtles-as-a-learning-tool/(language)/eng-US Pi with Sugar and turtles as a learning tool]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07 Sep 2012||&#039;&#039;&#039;NDTV&#039;&#039;&#039; &amp;amp;ndash; [http://gadgets.ndtv.com/laptops/news/one-laptop-per-child-initiative-a-hit-in-rural-india-263867 One Laptop Per Child initiative a hit in rural India]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08 Jul 2012||&#039;&#039;&#039;Estado de S. Paulo&#039;&#039;&#039; &amp;amp;ndash; [http://blogs.estadao.com.br/radar-tecnologico/2012/07/08/para-educar/ Para educar]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24 Apr 2012||&#039;&#039;&#039;Pacific Standard&#039;&#039;&#039; &amp;amp;ndash; [http://www.psmag.com/education/one-laptop-per-child-redux-38589/ OLPC Redux]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12 Apr 2012||&#039;&#039;&#039;Huffington Post&#039;&#039;&#039; &amp;amp;ndash; [http://www.huffingtonpost.com/ketaki-desai/one-laptop-per-child_b_1417801.html Hult Global Case Challenge: One Laptop Per Child]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|30 Mar 2012||&#039;&#039;&#039;newswise&#039;&#039;&#039; &amp;amp;ndash; [http://www.newswise.com/articles/sugar-on-a-stick-helps-kids-learn-how-to-learn “Sugar on a Stick” Helps Kids Learn How to Learn]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|11 Jan 2012||&#039;&#039;&#039;Boston Herald&#039;&#039;&#039; &amp;amp;ndash; [http://bostonherald.com/business/technology/general/view.bg?articleid=1394672 One Laptop Per Child screening $100 tablet]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|10 Jan 2012||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/gadgets/news/2012/01/charging-by-crank-bicycle-waterwheel-hands-on-with-the-olpc-xo-30-tablet.ars Crank, bicycle, and waterwheel: hands-on with the OLPC XO 3.0 tablet]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08 Jan 2012||&#039;&#039;&#039;The Verge&#039;&#039;&#039; &amp;amp;ndash; [http://www.theverge.com/2012/1/8/2691733/olpc-xo-3-0-tablet-pictures-video OLPC XO 3.0 tablet preview: impressions, video, and pictures]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07 Jan 2012||&#039;&#039;&#039;The Verge&#039;&#039;&#039; &amp;amp;ndash; [http://www.theverge.com/2012/1/6/2688604/olpc-xo-3-0-tablet-a-8-inch-tablet-with-android-and-sugar-options-for OLPC XO 3.0 tablet: an 8-inch tablet for $100, with Android and Sugar options for the children]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23 Dec 2011||&#039;&#039;&#039;Miller-McCune&#039;&#039;&#039; &amp;amp;ndash; [http://www.miller-mccune.com/education/one-laptop-per-child-redux-38589/ One Laptop Per Child Redux]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18 Oct 2011||&#039;&#039;&#039;BDU&#039;&#039;&#039; &amp;amp;ndash; [http://www.youtube.com/watch?v=IcpzVnuFP0M&amp;amp;feature=channel_video_title Robotics in Uruguay] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|11 Aug 2011||&#039;&#039;&#039;Berlin.de&#039;&#039;&#039; &amp;amp;ndash; [http://www.berlin.de/projektzukunft/presse/aktuelle-pressemitteilung/detailseite/datum/2011/08/08/gewinner-des-berliner-landeswettbewerbs-zu-open-source-stehen-fest/ Gewinner des Berliner Landeswettbewerbs zu Open Source stehen fest]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|25 Jul 2011||&#039;&#039;&#039;CCC Classic&#039;&#039;&#039; &amp;amp;ndash; [http://wiki.sugarlabs.org/go/File:CCC-StartingLine.jpg Garmin-sugarlabs development cycling team at Crit starting line] &lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|25 Jul 2011||&#039;&#039;&#039;CCC Classic&#039;&#039;&#039; &amp;amp;ndash; [http://wiki.sugarlabs.org/go/File:CCC-after.jpg Garmin-sugarlabs development cycling team after Crit] &lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|13 Apr 2011||&#039;&#039;&#039;framablog&#039;&#039;&#039; &amp;amp;ndash; [http://www.framablog.org/index.php/post/2011/04/13/sugar-labs-education-walter-bender L&#039;expérience Sugar Labs préfigure-t-elle une révolution éducative du XXIe siècle?]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05 Apr 2011||&#039;&#039;&#039;Businesswire&#039;&#039;&#039; &amp;amp;ndash; [http://www.businesswire.com/news/home/20110405006842/en/Government-Peru-Expands-Laptop-Child-Program-Local The Government of Peru Expands the One Laptop Per Child Program with Local Manufacturing]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|31 Jan 2011||&#039;&#039;&#039;Sundance&#039;&#039;&#039; &amp;amp;ndash; [http://www.youtube.com/watch?v=ABp7GkLgN94 A Day in the Life &amp;amp;ndash; Peru]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|01 Dec 2010||&#039;&#039;&#039;velonation&#039;&#039;&#039; &amp;amp;ndash; [http://www.velonation.com/News/ID/6564/Sugar-Labs-to-back-Garmin-Cervelos-development-team-in-unique-arrangement.aspx Sugar Labs to back Garmin-Cervelo’s development team in unique arrangement]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28 Oct 2010||&#039;&#039;&#039;UCR&#039;&#039;&#039; &amp;amp;ndash; [http://www.ucr.ac.cr/noticias/2010/10/28/nuevas-tecnologias-deben-estar-al-alcance-de-todos-los-ninos-y-ninas.html Nuevas tecnologías deben estar al alcance de todos los niños y niñas]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05 Oct 2010||&#039;&#039;&#039;xconomy&#039;&#039;&#039; &amp;amp;ndash; [http://www.xconomy.com/boston/2010/10/05/one-ecosystem-per-child-walter-bender-and-olpc-reunite-to-enhance-learning-and-grow-economies-in-developing-nations/#comments One Ecosystem per Child]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08&amp;amp;nbsp;Sep&amp;amp;nbsp;2010||&#039;&#039;&#039;FLOSS Weekly&#039;&#039;&#039; &amp;amp;ndash; [http://twit.tv/floss134 Sugar Labs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09&amp;amp;nbsp;Aug&amp;amp;nbsp;2010||&#039;&#039;&#039;ABC digital&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/abc/nota/165361-Indicadores-constatan-el-impacto-positivo-en-el-aprendizaje-de-ninos/ Indicadores constatan el impacto positivo en el aprendizaje de niños]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23&amp;amp;nbsp;Jun&amp;amp;nbsp;2010||&#039;&#039;&#039;ABC digital&#039;&#039;&#039; &amp;amp;ndash; [http://www.abc.com.py/abc/nota/137383-Xo-para-todas-las-escuelas-de-Caacup%C3%A9/ Xo para todas las escuelas de Caacupé]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|21&amp;amp;nbsp;Jun&amp;amp;nbsp;2010||&#039;&#039;&#039;La Nacion&#039;&#039;&#039; &amp;amp;ndash; [http://www.lanacion.com.py/noticias_um-312380.htm “Buscamos que los niños no solo usen softwares, sino que puedan crear uno”]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|20&amp;amp;nbsp;Jun&amp;amp;nbsp;2010||&#039;&#039;&#039;UltimaHora.com&#039;&#039;&#039; &amp;amp;ndash; [http://www.ultimahora.com/notas/332297-La-laptop-une-a-padres,-alumnos-y-docentes La laptop une a padres, alumnos y docentes]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|15&amp;amp;nbsp;Jun&amp;amp;nbsp;2010||&#039;&#039;&#039;The H&#039;&#039;&#039; &amp;amp;ndash; [http://www.h-online.com/open/news/item/OLPC-XO-1-5-software-updated-1022936.html OLPC XO-1.5 software updated]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|10&amp;amp;nbsp;Jun&amp;amp;nbsp;2010||&#039;&#039;&#039;engadget&#039;&#039;&#039; &amp;amp;ndash; [http://www.engadget.com/2010/06/11/sugar-on-a-stick-hits-3-0-teaches-us-about-a-new-kind-of-fruit/ Sugar on a Stick hits 3.0, teaches us about a new kind of fruit]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2010||&#039;&#039;&#039;Pro Linux DE&#039;&#039;&#039; &amp;amp;ndash; [http://www.pro-linux.de/news/1/15722/sugar-on-a-stick-v3-freigegeben.html Sugar on a Stick v3 freigegeben] (German)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2010||&#039;&#039;&#039;NY Times&#039;&#039;&#039; &amp;amp;ndash; [http://bits.blogs.nytimes.com/2010/05/27/olpc-partners-with-marvell-to-launch-100-tablet/?src=busln One Laptop Per Child Project Works With Marvell to Produce a $100 Tablet]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2010||&#039;&#039;&#039;PC World&#039;&#039;&#039; &amp;amp;ndash; [http://www.pcworld.com/businesscenter/article/197361/olpc_rules_out_windows_for_xo3.html OLPC Rules out Windows for XO-3]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|03&amp;amp;nbsp;May&amp;amp;nbsp;2010||&#039;&#039;&#039;WXXI: Mixed Media&#039;&#039;&#039; &amp;amp;ndash; [http://www.publicbroadcasting.net/wxxi/news.newsmain/article/0/0/1644648/news/Mixed.Media.Special.Edition.05-03-10 Interview with Walter Bender] (audio)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|03&amp;amp;nbsp;May&amp;amp;nbsp;2010||&#039;&#039;&#039;Linux Magazine&#039;&#039;&#039; &amp;amp;ndash; [http://www.linux-magazine.com/Online/News/OLPC-Computers-for-Palestinian-Refugee-Children OLPC Computers for Palestinian Refugee Children]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14&amp;amp;nbsp;Apr&amp;amp;nbsp;2010||&#039;&#039;&#039;National Science Foundation&#039;&#039;&#039; &amp;amp;ndash; [http://www.nsf.gov/discoveries/disc_summ.jsp?cntn_id=116638 XO Laptops Inspire Learning In Birmingham, Alabama] ([http://www.nsf.gov/cgi-bin/good-bye?http://www.youtube.com/watch?v=inxOg-dt6rw video])&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|02&amp;amp;nbsp;Apr&amp;amp;nbsp;2010||&amp;lt;div class=&amp;quot;NavFrame collapsed&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;NavHead&amp;quot;&amp;gt;&#039;&#039;&#039;Dailymotion&#039;&#039;&#039; &amp;amp;ndash; [http://www.dailymotion.com/video/xct0lp_un-jour-a-paris-ensembles-pour-olpc_tech Un jour... à Paris... ensembles pour OLPC et Sugar...] (video) &amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;NavContent&amp;quot;&amp;gt;{{#widget:Daily Motion&lt;br /&gt;
|id=xct0lp&lt;br /&gt;
|width=420&lt;br /&gt;
|height=336&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|15&amp;amp;nbsp;Mar&amp;amp;nbsp;2010||&#039;&#039;&#039;nbc13.com&#039;&#039;&#039; &amp;amp;ndash; [http://www2.nbc13.com/vtm/news/local/article/video_birmingham_city_students_opt_to_spend_spring_break_in_class_xo_comput/138224/ Birmingham City students opt to spend spring break in class, XO computer camps] (video)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Feb&amp;amp;nbsp;2010||&#039;&#039;&#039;LWN&#039;&#039;&#039; &amp;amp;ndash; [https://lwn.net/SubscriberLink/374790/8dc41b030f4562b1/ Karma targets easier creation of educational software]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05&amp;amp;nbsp;Feb&amp;amp;nbsp;2010||&#039;&#039;&#039;iprofesional&#039;&#039;&#039; &amp;amp;ndash; [http://tecnologia.iprofesional.com/notas/93943-La-PC-barata-de-Negroponte-desembarca-en-la-Argentina-para-pelear-contra-Intel.html La PC barata de Negroponte desembarca en la Argentina para pelear contra Intel]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14&amp;amp;nbsp;Jan&amp;amp;nbsp;2010||&#039;&#039;&#039;AALF&#039;&#039;&#039; &amp;amp;ndash; [http://www.aalf.org/articles/view.php?ArticleID=86 Open Systems for Broader Change]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|03&amp;amp;nbsp;Jan&amp;amp;nbsp;2010||&#039;&#039;&#039;Educacion 2.0&#039;&#039;&#039; &amp;amp;ndash; [http://www.educdoscero.com/2009/12/plan-ceibal-el-libro.html PLAN CEIBAL, El Libro]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14&amp;amp;nbsp;Dec&amp;amp;nbsp;2009||&#039;&#039;&#039;xconomy&#039;&#039;&#039; &amp;amp;ndash; [http://www.xconomy.com/boston/2009/12/14/sugar-gets-sweeter-former-olpc-exec-walter-bender-on-netbooks-e-books-blueberry-and-cloudberry/?single_page=true Sugar gets sweeter]&lt;br /&gt;
|-&lt;br /&gt;
|align-right valign=top|10&amp;amp;nbsp;Dec&amp;amp;nbsp;2009||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/open-source/reviews/2009/12/sugar-software-environment-gets-sweeter-with-version-2.ars Sugar software environment gets sweeter with version 2]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09&amp;amp;nbsp;Dec&amp;amp;nbsp;2009||&#039;&#039;&#039;Wired&#039;&#039;&#039; &amp;amp;ndash; [http://www.wired.com/geekdad/2009/12/new-sugar-on-a-stick-brings-much-needed-improvements/ New Sugar on a Stick Brings Much Needed Improvements]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08&amp;amp;nbsp;Dec&amp;amp;nbsp;2009||&#039;&#039;&#039;engadget&#039;&#039;&#039; &amp;amp;ndash; [http://www.engadget.com/2009/12/08/sugar-on-a-stick-os-goes-to-2-0-gets-blueberry-coating-and-crea/ Sugar on a Stick OS goes to 2.0, gets Blueberry coating and creamy Fedora 12 center (video)]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07&amp;amp;nbsp;Dec&amp;amp;nbsp;2009||&#039;&#039;&#039;Teleread.org&#039;&#039;&#039; &amp;amp;ndash; [http://www.teleread.org/2009/12/07/sugar-on-a-stick-what-it-means-for-e-books-and-education/ Sugar on a Stick: What it means for e-books and education]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;Nov&amp;amp;nbsp;2009||&#039;&#039;&#039;CNET Japan&#039;&#039;&#039; &amp;amp;ndash; [http://japan.cnet.com/special/story/0,2000056049,20404126,00.htm 「コードを見せて、もっと良くなるよ」と言える子どもが生まれる--Sugar Labsが描く未来]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Nov&amp;amp;nbsp;2009||&#039;&#039;&#039;zanichelli&#039;&#039;&#039; &amp;amp;ndash; [http://scienze.zanichelli.it/notizie/2009/11/16/intervista-walter-bender-e-sugar-labs/ software libero a scuola]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12&amp;amp;nbsp;Nov&amp;amp;nbsp;2009||&#039;&#039;&#039;opensuse.org&#039;&#039;&#039; &amp;amp;ndash; [http://en.opensuse.org/Marketing/Team/11_2_Launch/Announcement openSUSE 11.2 Released]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07&amp;amp;nbsp;Nov&amp;amp;nbsp;2009||&#039;&#039;&#039;My Broadband News&#039;&#039;&#039; &amp;amp;ndash; [http://mybroadband.co.za/news/Software/10351.html Mandriva 2010 packs a punch [and Sugar]]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Nov&amp;amp;nbsp;2009||&#039;&#039;&#039;GhanaWeb&#039;&#039;&#039; &amp;amp;ndash; [http://www.ghanaweb.com/GhanaHomePage/NewsArchive/artikel.php?ID=171387 Open education and an IT-enabled economic growth in Ghana: Musings of a dutiful citizen]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;Oct&amp;amp;nbsp;2009||&#039;&#039;&#039;Linux Magazine ES&#039;&#039;&#039; &amp;amp;ndash; [http://www.linux-magazine.es/issue/54/078-083_SugarLM54.pdf Software Libre como apoyo al aprendizaje]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09&amp;amp;nbsp;Oct&amp;amp;nbsp;2009||&#039;&#039;&#039;interdisciplines&#039;&#039;&#039; &amp;amp;ndash; [http://www.interdisciplines.org/mobilea2k/papers/2  OLPC and Sugar: mobility through the community]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08&amp;amp;nbsp;Oct&amp;amp;nbsp;2009||&#039;&#039;&#039;IBM developerWorks&#039;&#039;&#039; &amp;amp;ndash; [http://www.ibm.com/developerworks/linux/library/l-linux-10th-anniversary/index.html 10 important Linux developments everyone should know about]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|01&amp;amp;nbsp;Oct&amp;amp;nbsp;2009||&#039;&#039;&#039;OLPC France&#039;&#039;&#039; &amp;amp;ndash; [http://olpc-france.org/wiki/index.php?title=Interview_Walter_Bender_au_SugarCamp Interview Walter Bender au SugarCamp]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|25&amp;amp;nbsp;Sep&amp;amp;nbsp;2009||&#039;&#039;&#039;The Inquirer&#039;&#039;&#039; &amp;amp;ndash; [http://www.theinquirer.net/inquirer/news/1555781/one-laptop-per-child-marches One Laptop per Child marches on]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Sep&amp;amp;nbsp;2009||&#039;&#039;&#039;Groklaw&#039;&#039;&#039; &amp;amp;ndash; [http://www.groklaw.net/article.php?story=20090918110925298 The Role of Free Software in Education]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Sep&amp;amp;nbsp;2009||&#039;&#039;&#039;Reuters&#039;&#039;&#039; &amp;amp;ndash; [http://www.reuters.com/article/pressRelease/idUS97755+18-Sep-2009+PRN20090918 Sugar Labs and Free Software Foundation Celebrate Software Freedom Day]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|17&amp;amp;nbsp;Sep&amp;amp;nbsp;2009||&#039;&#039;&#039;ICTDev.org&#039;&#039;&#039; &amp;amp;ndash; [http://ictdev.org/pulse/20090916/ict4d/dreaming-again-one-laptop-child Dream Again with One Laptop per Child]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;Aug&amp;amp;nbsp;2009||&#039;&#039;&#039;Latinux&#039;&#039;&#039; &amp;amp;ndash; [http://www.latinuxmagazine.com/ediciones/pdf/latinux-magazine-VolINum1-beta.pdf Azúcar en una memoria USB]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|03&amp;amp;nbsp;Aug&amp;amp;nbsp;2009||&#039;&#039;&#039;Wired: Geek Dad&#039;&#039;&#039; &amp;amp;ndash; [http://www.wired.com/geekdad/2009/08/inventing-a-new-paradigm-sugarlabs-and-the-sugar-ui/ Inventing a New Paradigm: SugarLabs and the Sugar UI]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|30&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;Zanichelli&#039;&#039;&#039; &amp;amp;ndash; [http://scienze.zanichelli.it/notizie/2009/06/30/sugar-on-a-stick-imparare-insieme/ Sugar on a Stick: imparare insieme]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|23&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;Everything USB&#039;&#039;&#039; &amp;amp;ndash; [http://www.everythingusb.com/recycle-usb-17077.html RecycleUSB.com - Donate your Flash Drives for a Good Cause]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|22&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;OLPC France&#039;&#039;&#039; &amp;amp;ndash; [http://olpc-france.org/blog/2009/07/sugar-mauvaise-presse-et-mise-au-point/ Sugar : mauvaise presse et mise au point]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|13&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;Spiegel Online&#039;&#039;&#039; &amp;amp;ndash; [http://www.spiegel.de/netzwelt/tech/0,1518,634718,00.html Das zuckersüße Leichtbau-Linux]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;ComputerWorldUK&#039;&#039;&#039; &amp;amp;ndash; [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2334&amp;amp;blogid=14 Gran Canaria Desktop Summit: a Study in Contrasts]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;Windows Forest&#039;&#039;&#039; &amp;amp;ndash; [http://www.forest.impress.co.jp/article/2009/06/30/olpcusb.html USBメモリなどから“OLPC”用のOSを利用できる「Sugar on a Stick」が無償公開]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|02&amp;amp;nbsp;Jul&amp;amp;nbsp;2009||&#039;&#039;&#039;Howard County Library&#039;&#039;&#039; &amp;amp;ndash; [http://hclibrary.org/opensource/?p=228 Sugar on a Stick]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;Deutschlandfunk&#039;&#039;&#039; &amp;amp;ndash; [http://www.dradio.de/dlf/sendungen/computer/989765/ Süßes für die Kleinen: Sugar ist Linux speziell für Kinder] (in Deutsch)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;EduTech&#039;&#039;&#039; &amp;amp;ndash; [http://blogs.worldbank.org/edutech/sugar-on-a-stick-and-other-delectables-praise-for-the-lowly-usb-drive Sugar on a stick, and other delectables (praise for the lowly USB drive)]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/open-source/news/2009/06/sugar-on-a-stick-brings-sweet-taste-of-linux-to-classrooms.ars Sugar on a Stick brings sweet taste of Linux to classrooms]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;BBC&#039;&#039;&#039; &amp;amp;ndash; [http://news.bbc.co.uk/2/hi/technology/8117064.stm OLPC software to power aging PCs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;Technology Review&#039;&#039;&#039; &amp;amp;ndash; [http://www.technologyreview.com/computing/22919/ $100 Laptop Becomes a $5 PC]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|15&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;TechSavvyKids&#039;&#039;&#039; &amp;amp;ndash; [http://techsavvykids.podomatic.com/player/web/2009-06-15T11_15_29-07_00 Episode 10 FOSSVT: Sugar on a Stick] (audio)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|10&amp;amp;nbsp;Jun&amp;amp;nbsp;2009||&#039;&#039;&#039;LWN.net&#039;&#039;&#039; &amp;amp;ndash; [http://lwn.net/SubscriberLink/336910/3878a88c0c27f977/ Sugar moves from the shadow of OLPC]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2009||&#039;&#039;&#039;LWN.net&#039;&#039;&#039; &amp;amp;ndash; [http://lwn.net/SubscriberLink/334911/cf451c615cfdaa33/ Activities and the move to context-oriented desktops] (subscriber link)&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2009||&#039;&#039;&#039;Business Wire&#039;&#039;&#039; &amp;amp;ndash; [http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&amp;amp;newsId=20090527006237&amp;amp;newsLang=en Dailymotion Launches Support for Open Video Formats and Video HTML Tag]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|01&amp;amp;nbsp;May&amp;amp;nbsp;2009||&#039;&#039;&#039;Guysoft&#039;&#039;&#039; &amp;amp;ndash; [http://guysoft.wordpress.com/2009/05/01/nokia-n810-running-olpc-sugar/ Nokia N810 Running OLPC Sugar]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|29&amp;amp;nbsp;Apr&amp;amp;nbsp;2009||&#039;&#039;&#039;El Mercurio&#039;&#039;&#039; &amp;amp;ndash; [http://www.mer.cl/modulos/catalogo/Paginas/2009/04/29/MERSTVS017AA2904.htm?idnoticia=CC116HNVJ120090429 Así se vivió la fiesta del software libre]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;Apr&amp;amp;nbsp;2009||&#039;&#039;&#039;ostatic&#039;&#039;&#039; &amp;amp;ndash; [http://ostatic.com/blog/sugar-on-a-stick-good-for-kids-minds-and-school-budgets Sugar on a Stick: Good for Kids&#039; Minds (and School Budgets)]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|25&amp;amp;nbsp;Apr&amp;amp;nbsp;2009||&#039;&#039;&#039;Free Software Magazine&#039;&#039;&#039; &amp;amp;ndash; [http://www.freesoftwaremagazine.com/columns/bittersweet_facts_about_olpc_and_sugar The Bittersweet Facts about OLPC and Sugar]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|24&amp;amp;nbsp;Apr&amp;amp;nbsp;2009||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/open-source/news/2009/04/sugar-labs-releases-beta-of-live-usb-learning-environment.ars First taste: Sugar on a Stick learning platform]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|22&amp;amp;nbsp;Apr&amp;amp;nbsp;2009||&#039;&#039;&#039;Betanews&#039;&#039;&#039; &amp;amp;ndash; [http://www.betanews.com/article/Beta-of-Live-USB-Sugar-OS-opens/1240409113#talkback Beta of Live USB Sugar OS opens]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;Mar&amp;amp;nbsp;2009||&#039;&#039;&#039;Mass High Tech&#039;&#039;&#039; &amp;amp;ndash; [http://www.masshightech.com/stories/2009/03/23/weekly3-Google-promotes-summer-open-source-internships.html Google promotes summer open-source internships]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Mar&amp;amp;nbsp;2009||&#039;&#039;&#039;Metropolis&#039;&#039;&#039; &amp;amp;ndash; [http://www.metropolismag.com/story/20090318/a-good-argument A Good Argument]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Mar&amp;amp;nbsp;2009||&#039;&#039;&#039;Laptop Magazine&#039;&#039;&#039; &amp;amp;ndash; [http://blog.laptopmag.com/sugar-labs-new-version-of-sugar-learning-platform-is-netbook-and-pc-ready Sugar Labs’ New Version of Sugar Learning Platform Is Netbook and PC Ready]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Mar&amp;amp;nbsp;2009||&#039;&#039;&#039;Market Watch&#039;&#039;&#039; &amp;amp;ndash; [http://www.marketwatch.com/news/story/sugar-labs-nonprofit-announces-new/story.aspx?guid={EF4B8934-0046-465F-AD4D-E82FBCE8F1EC}&amp;amp;dist=msr_7 Sugar Labs Nonprofit Announces New Version of Sugar Learning Platform for Children, Runs on Netbooks and PCs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14&amp;amp;nbsp;Feb&amp;amp;nbsp;2009||&#039;&#039;&#039;OLPC Learning Club – DC&#039;&#039;&#039; &amp;amp;ndash; [http://olpclearningclub.org/meetings/learning-learning-on-a-stick/ Learning Learning on a Stick]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05&amp;amp;nbsp;Feb&amp;amp;nbsp;2009||&#039;&#039;&#039;xconomy&#039;&#039;&#039; &amp;amp;ndash; [http://www.xconomy.com/boston/2009/02/05/sugar-beyond-the-xo-laptop-walter-bender-on-olpc-sucrose-084-and-sugar-on-a-stick/ Sugar Beyond the XO Laptop: Walter Bender on OLPC, Sucrose 0.84, and “Sugar on a Stick”]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;Linus Magazine&#039;&#039;&#039; &amp;amp;ndash; [http://www.linux-magazine.com/content/view/full/32999 Sugar Defies OLPC Cutbacks]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|19&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;Feeding the Penguins&#039;&#039;&#039; &amp;amp;ndash; [http://morgancollett.wordpress.com/2009/01/19/the-status-of-sugar-post-olpc/ The status of Sugar, post-OLPC]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/software/sugar/xo_acer_aspire_one_thin_client_sugar.html Sugar on Acer Aspire One &amp;amp; Thin Client via LTSP]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|12&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;Bill Kerr&#039;&#039;&#039; &amp;amp;ndash; [http://billkerr2.blogspot.com/2009/01/thoughts-about-olpc-cutbacks.html thoughts about olpc cutbacks]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|07&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/news.ars/post/20090107-olpc-downsizes-half-of-its-staff-cuts-sugar-development.html OLPC downsizes half of its staff, cuts Sugar development]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Jan&amp;amp;nbsp;2009||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/sales_talk/microsoft/how_microsoft_got_xp_on_the_xo.html An Inside Look at how Microsoft got XP on the XO]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|30&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/software/sugar/sugar_labs_status_at_six_month.html Sugar Labs Status at Six Months]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|22&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;The GNOME Project&#039;&#039;&#039; &amp;amp;ndash; [http://www.gnome.org/press/releases/2008-12-sugarlabs.html Sugar Labs, the nonprofit behind the OLPC software, is joining the GNOME Foundation]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;Feeding the Penguins&#039;&#039;&#039; &amp;amp;ndash; [http://morgancollett.wordpress.com/2008/12/15/sugar-git-repository-change/ Sugar git repository change]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|14&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;NPR&#039;&#039;&#039; &amp;amp;ndash; [http://www.npr.org/templates/story/story.php?storyId=96825852 Laptop Deal Links Rural Peru To Opportunity, Risk (Part 2)]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|13&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;NPR&#039;&#039;&#039; &amp;amp;ndash; [http://www.npr.org/templates/story/story.php?storyId=96510072 Laptops May Change The Way Rural Peru Learns (Part 1)]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|09&amp;amp;nbsp;Dec&amp;amp;nbsp;2008||&#039;&#039;&#039;SFC&#039;&#039;&#039; &amp;amp;ndash; [http://conservancy.softwarefreedom.org/news/2008/dec/09/sugar/ Sugar Labs joins Conservancy]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|31&amp;amp;nbsp;Oct&amp;amp;nbsp;2008||&#039;&#039;&#039;Linux Devices&#039;&#039;&#039; &amp;amp;ndash; [http://www.linuxdevices.com/news/NS3023016259.html An OLPC dilemma: Linux or Windows?]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|10&amp;amp;nbsp;Oct&amp;amp;nbsp;2008||&#039;&#039;&#039;Feeding the Penguin&#039;&#039;&#039; &amp;amp;ndash; [http://morgancollett.wordpress.com/2008/10/10/sugar-on-ubuntu/ Sugar on Ubuntu]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|21&amp;amp;nbsp;Sep&amp;amp;nbsp;2008||&#039;&#039;&#039;Groklaw&#039;&#039;&#039; &amp;amp;ndash; [http://www.groklaw.net/article.php?story=20080920181151638 Interview with Walter Bender of Sugar Labs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|17&amp;amp;nbsp;Sep&amp;amp;nbsp;2008||&#039;&#039;&#039;Bill Kerr&#039;&#039;&#039; &amp;amp;ndash; [http://billkerr2.blogspot.com/2008/09/sugar-labs.html Sugar Labs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;Sep&amp;amp;nbsp;2008||&#039;&#039;&#039;Open Source&#039;&#039;&#039; &amp;amp;ndash; [http://opensource.sfsu.edu/node/562 Sugar everywhere]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28&amp;amp;nbsp;Aug&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/use_cases/education/an_answer_to_question_22.html An answer to Walter Bender&#039;s question 22]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|20&amp;amp;nbsp;Aug&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/software/operating_system/sugarizing_it_intel_classmate_2.html Sugarize it: Intel Classmate 2]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|08&amp;amp;nbsp;Aug&amp;amp;nbsp;2008||&#039;&#039;&#039;Investor&#039;s Business Daily&#039;&#039;&#039; &amp;amp;ndash; [http://www.investors.com/Tech/TechExecQA.asp?artid=303074322503278 &#039;Learning&#039; Vs. Laptop Was Issue]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Aug&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/people/leadership/23_questions_on_technology_education.html Twenty-three Questions on Technology and Education]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Jul&amp;amp;nbsp;2008||&#039;&#039;&#039;Bill Kerr&#039;&#039;&#039; &amp;amp;ndash; [http://billkerr2.blogspot.com/2008/07/evaluating-sugar-in-developed-world.html evaluating Sugar in the developed world]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|28&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC News&#039;&#039;&#039; &amp;amp;ndash; [http://www.olpcnews.com/software/sugar/cutting_edge_sugar_ui.html A Cutting Edge Sugar User Interface Demo]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|18&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;PC World&#039;&#039;&#039; &amp;amp;ndash; [http://www.pcworld.com/businesscenter/article/147265/olpc_spinoff_developing_ui_for_intels_classmate_pc.html OLPC Spin-off Developing UI for Intel&#039;s Classmate PC]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|17&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;Datamation&#039;&#039;&#039; &amp;amp;ndash; [http://itmanagement.earthweb.com/osrc/article.php/12068_3753376_1 If Business Succeeds with GNU/Linux, Why Not OLPC?]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|11&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;LinuxInsider&#039;&#039;&#039; &amp;amp;ndash; [http://www.linuxinsider.com/story/Sugar-Labs-Walter-Bender-on-the-Sweetness-of-Collaborative-Learning-63354.html The Sweetness of Collaborative Learning]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;Bill Kerr&#039;&#039;&#039; &amp;amp;ndash; [http://billkerr2.blogspot.com/2008/06/untangling-free-sugar-and.html untangling Free, Sugar, and Constructionism]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;Open Education&#039;&#039;&#039; &amp;amp;ndash; [http://www.openeducation.net/2008/06/03/walter-bender-discusses-sugar-labs-foundation/ Walter Bender Discusses Sugar Labs Foundation]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|06&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;BusinessWeek&#039;&#039;&#039; &amp;amp;ndash; [http://prod-blogs.businessweek.com/globalbiz/blog/globespotting/archives/2008/06/olpc_the_educat.html OLPC: The Educational Philosophy Controversy]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;Code Culture&#039;&#039;&#039; &amp;amp;ndash; [http://radian.org/notebook/distraction-machine The Distraction Machine]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|05&amp;amp;nbsp;Jun&amp;amp;nbsp;2008||&#039;&#039;&#039;BusinessWeek&#039;&#039;&#039; &amp;amp;ndash; [http://www.businessweek.com/globalbiz/blog/globespotting/archives/2008/06/olpc_the_open-s.html OLPC: The Open-Source Controversy]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|27&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;The New York Times&#039;&#039;&#039; &amp;amp;ndash; [http://bits.blogs.nytimes.com/2008/05/27/why-walter-bender-left-one-laptop-per-child-edited-hold-for-wed-am/ Why Walter Bender Left One Laptop Per Child]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|26&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;ars technica&#039;&#039;&#039; &amp;amp;ndash; [http://arstechnica.com/news.ars/post/20080526-former-olpc-software-president-wants-to-expand-sugars-reach.html OLPC software maker splits from X0 hardware, goes solo]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|22&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;BetaNews&#039;&#039;&#039; &amp;amp;ndash; [http://www.betanews.com/article/Linux_startup_Sugar_Labs_in_informal_talks_with_four_laptop_makers/1211467857 Linux start-up Sugar Labs in informal talks with four laptop makers]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;OSTATIC&#039;&#039;&#039; &amp;amp;ndash; [http://ostatic.com/162220-blog/olpcs-open-source-sugar-platform-aims-for-new-hardware OLPC&#039;s Open Source Sugar Platform Aims for New Hardware]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;PCWorld&#039;&#039;&#039; &amp;amp;ndash; [http://www.pcworld.com/businesscenter/article/146002/bender_forms_group_to_promote_olpcs_sugar_ui.html Bender Forms Group to Promote OLPC&#039;s Sugar UI]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;MHT&#039;&#039;&#039; &amp;amp;ndash; [http://masshightech.bizjournals.com/masshightech/stories/2008/05/12/daily35.html Bender jumps from OLPC, founds Sugar Labs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;News.com&#039;&#039;&#039; &amp;amp;ndash; [http://www.news.com/8301-10784_3-9946242-7.html Sugar Labs will make OLPC interface available for Eee PC, others]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;Feeding the Peguins&#039;&#039;&#039; &amp;amp;ndash; [http://morgancollett.wordpress.com/2008/05/16/the-future-of-sugar/ The future of Sugar]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;Sugar list&#039;&#039;&#039; &amp;amp;ndash; [http://lists.laptop.org/pipermail/sugar/2008-May/005800.html A few thoughts on SugarLabs]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;xconomy&#039;&#039;&#039; &amp;amp;ndash; [http://www.xconomy.com/2008/05/16/bender-creates-sugar-labs-new-foundation-to-adapt-olpcs-laptop-interface-for-other-machines/ Bender Creates Sugar Labs—New Foundation to Adapt OLPC’s Laptop Interface for Other Machines]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;BBC&#039;&#039;&#039; &amp;amp;ndash; [http://news.bbc.co.uk/2/hi/technology/7405346.stm  &#039;$100 laptop&#039; platform moves on]&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|15&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;OLPC wiki&#039;&#039;&#039; &amp;amp;ndash; [http://wiki.laptop.org/go/AnnounceFAQ Dual-boot XO] Claim: OLPC will not work to port Sugar to Windows.&lt;br /&gt;
|-&lt;br /&gt;
|align=right valign=top|16&amp;amp;nbsp;May&amp;amp;nbsp;2008||&#039;&#039;&#039;Softpedia&#039;&#039;&#039; &amp;amp;ndash; [http://news.softpedia.com/news/Bender-Launches-Sugar-Labs-for-Better-Development-of-OLPC-039-s-Sugar-UI-85881.shtml Bender Launches Sugar Labs for Better Development of OLPC&#039;s Sugar UI] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Press releases==&lt;br /&gt;
http://www.sugarlabs.org/press&lt;br /&gt;
&lt;br /&gt;
[[Category:General public]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs&amp;diff=99770</id>
		<title>Sugar Labs</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs&amp;diff=99770"/>
		<updated>2016-12-20T13:08:42Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Community News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Sugar Labs|home=Community Home|meeting_link=Events|meeting_label=Events Calendar}}&lt;br /&gt;
[[Category:General public]]&lt;br /&gt;
[[Category:Team]]&amp;lt;/noinclude&amp;gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
===Mission===&lt;br /&gt;
&lt;br /&gt;
[[Trademark|Sugar Labs&amp;lt;sup&amp;gt;®&amp;lt;/sup&amp;gt;]] is a volunteer-driven member project of [http://www.sfconservancy.org/ Software Freedom Conservancy], a nonprofit corporation. Originally part of the One Laptop Per Child project, Sugar Labs coordinates [[Sugar Labs/Getting Involved|volunteers]] around the world who are passionate about providing educational opportunities to children through the Sugar Learning Platform. Sugar Labs® is supported by donations and is seeking [[Donate|funding]] to accelerate development.&lt;br /&gt;
&lt;br /&gt;
== [[:Category:Team|Teams]] ==&lt;br /&gt;
Sugar Labs is organized around overlapping Teams.  Please use the &#039;&#039;&#039;Community&#039;&#039;&#039; panel in the wiki sidebar to visit and explore the work and events for each team.&lt;br /&gt;
This [[:Category:Team | &#039;&#039;Team&#039;&#039; category page]] collects all Sugar Labs wiki pages with a &#039;&#039;Team&#039;&#039; tag.&lt;br /&gt;
== [[:Category:Project|Projects]] ==&lt;br /&gt;
Sugar Labs is working on a few [[:Category:Project|projects]] focused on delivering specific goals in a defined time period.  The &#039;&#039;&#039;Projects&#039;&#039;&#039; panel in the wiki sidebar holds our premier projects. Please also see these project home pages:&lt;br /&gt;
&lt;br /&gt;
| [[Harmonic Distribution]] | [https://sugardextrose.org/ Dextrose] | [[Sugar Creation Kit]] | [[Sugar on a Stick]] |&lt;br /&gt;
&lt;br /&gt;
| [[Replacing Textbooks]] | [[Math4Team |Math4 Project]] |&lt;br /&gt;
&lt;br /&gt;
| [[Summer of Code]] |&lt;br /&gt;
&lt;br /&gt;
== Sugar Labs: a community ==&lt;br /&gt;
:::::::&amp;lt;span style=&amp;quot;font-size: 150%&amp;quot;&amp;gt;for learning and software-development&amp;lt;/span&amp;gt;&lt;br /&gt;
The Sugar development platform is available under the open-source GNU General Public License (GPL) to anyone who wants to extend it. “Sugar Labs” is a member project of the [http://sfconservancy.org/ Software Freedom Conservancy] (a non-profit foundation to produce and distribute and support the use of free software) and serves as a support base and gathering place for the community of educators and software developers who want to extend the platform and who have been creating Sugar-compatible applications.&lt;br /&gt;
&lt;br /&gt;
=== Education Goals ===&lt;br /&gt;
Sugar is useful only to the extent it is used by the learning community. Thus, Sugar Labs is working with educators around the world to focus on these learning challenges:&lt;br /&gt;
&lt;br /&gt;
* To make Sugar and Sugar activities freely and readily available to learners everywhere&lt;br /&gt;
* To explore and share best practices&lt;br /&gt;
* To provide a forum for discussion and support for technology for learning&lt;br /&gt;
* To provide mechanism for evaluation and dissemination of results.&lt;br /&gt;
&lt;br /&gt;
=== Technical Goals ===&lt;br /&gt;
Sugar supports the notions that learners should “share by default” and be able to “explore, express, debug, and critique.” Thus Sugar puts an emphasis on “activities” rather than “applications.” The foundation will focus on solving the challenges that are relevant to these aspects of the interface, namely:&lt;br /&gt;
&lt;br /&gt;
* To make it “simple” to share Sugar activities. This will require an architecture that allows discovery of activities.&lt;br /&gt;
* To create versions of Sugar that run on multiple operating systems and on multiple hardware platforms. It should be “simple” to install Sugar everywhere. Specifically, it means packaging for every distribution and every virtual machine—removing hardware-related dependencies wherever possible.&lt;br /&gt;
* To make it  “simple” to write Sugar activities. This necessitates stable APIs and example code that uses these APIs.&lt;br /&gt;
* To make Sugar activities even more secure. Our principal user community is comprised of children; they must be protected from malware, phishing, botnets, etc.&lt;br /&gt;
&lt;br /&gt;
=== Community Goals ===&lt;br /&gt;
Sugar Labs is here to support community innovation, entrepreneurship, and enterprise. Sugar Labs would like to help community members start projects that help sustain and grow the Sugar technology and learning communities:&lt;br /&gt;
&lt;br /&gt;
* To provide local and regional technical and pedagogical support.&lt;br /&gt;
* To create new learning activities and pedagogical practice.&lt;br /&gt;
* To provide localization and internationalization of software, content, and documentation.&lt;br /&gt;
* To provide integration and customization services.&lt;br /&gt;
&lt;br /&gt;
=== Principles ===&lt;br /&gt;
In order for Sugar to be successful, it needs the participation of a large number of people who share common goals while maintaining independence, so that each participant has the ability to act independently. For these reasons, Sugar Labs subscribes to the principles described [http://flors.wordpress.com/2008/05/04/the-paradigm-of-the-open-organization/ here], which are the author&#039;s own translation of an [http://web.archive.org/web/20050317231119/http://interactors.coop/organizacionabierta original text in Spanish.]&lt;br /&gt;
&lt;br /&gt;
====Identity====&lt;br /&gt;
* Clear mission – Fully disclosed objectives.&lt;br /&gt;
* Declared commitments – Affinities and aversions explained.&lt;br /&gt;
* Declared outside connections – Relationships with other organizations explicitly listed.&lt;br /&gt;
&lt;br /&gt;
====Structure====&lt;br /&gt;
* Horizontal organization – Teams and facilitators work on responsibilities and agreements.&lt;br /&gt;
* Identified contributors – Who is who, people are reachable.&lt;br /&gt;
* Clear responsibilities – Who is in charge of what.&lt;br /&gt;
* Activities described – All of the ongoing work is acknowledged.&lt;br /&gt;
See [[Wiki_Team/Guide/Wiki_Structure | Wiki Structure]] for a guide to how the wiki models Sugar Labs&#039; structure.&lt;br /&gt;
&lt;br /&gt;
====Operation====&lt;br /&gt;
* Open participation – Anybody can access the information and get a first responsibility.&lt;br /&gt;
* Meritocracy – Responsibilities are acquired (or lost) based on one&#039;s skills, results, and contributors’ support.&lt;br /&gt;
* Voluntary (non-)engagement – Nobody is forced to be involved or to keep responsibilities.&lt;br /&gt;
&lt;br /&gt;
====Information====&lt;br /&gt;
* Regular reports – Reported activities and future plans allow monitoring and participation.&lt;br /&gt;
* Information accessible – Even internal operational information is available by default.&lt;br /&gt;
*: We try to operate &#039;&#039;&#039;&#039;&#039;[[Archive/Current_Events/2009-06-10#En_plein_air|en plein air]]&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
* Explicit confidentiality – It is explained what matters are confidential, why, and who can access them.&lt;br /&gt;
&lt;br /&gt;
====Goods====&lt;br /&gt;
* Economic model – Feasibility and sustainability plans are exposed. (Please see/contribute to the discussion [[Sugar Labs/Funding|here]].)&lt;br /&gt;
* Resources – Inventory of items detailing who contributed what and why.&lt;br /&gt;
* Public accounts – It’s clear where the money comes from and where it goes.&lt;br /&gt;
* A special [[Sugar Labs/Thank You|thanks]] to our contributors.&lt;br /&gt;
&lt;br /&gt;
=== [[Sugar Labs/Governance|Governance]] ===&lt;br /&gt;
Informed by the above principles, Sugar Labs has a [[Sugar Labs/Governance|governance model]].&lt;br /&gt;
&lt;br /&gt;
==[[Sugar Labs/Roadmap|Roadmap]]==&lt;br /&gt;
The [[Sugar Labs/Roadmap|Sugar Community roadmap]] is used to guide our community efforts:&lt;br /&gt;
* Mission, Vision, Values&lt;br /&gt;
* Distribution&lt;br /&gt;
* Deployments&lt;br /&gt;
* Quality Assurance&lt;br /&gt;
* Infrastructure&lt;br /&gt;
&lt;br /&gt;
==[[Sugar Labs/Current Events|Community News]]==&lt;br /&gt;
A [[Sugar Labs/Current Events|current events page]] is updated weekly (usually on Monday morning) with notes from the Sugar Labs community. (The Sugar Digest is also sent to the [http://lists.sugarlabs.org/listinfo/community-news community-news at lists.sugarlabs.org] list and blogged at [http://walterbender.org/ walterbender.org].) If you would like to contribute, please send email to [[User:walter|walter]] at sugarlabs.org by the weekend. (Also visit [http://planet.sugarlabs.org planet.sugarlabs.org].)&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;[[Archive/Current Events|archive]]&#039;&#039;&#039; of Sugar Digests is available.&lt;br /&gt;
&lt;br /&gt;
==[[Sugar Labs/Events | Events Calendar]]==&lt;br /&gt;
Sugar [[Sugar Labs/Events | community events]] are posted in a public calendar within the Google Calendar system. The calendar is available in a variety of formats: &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt; [[Image:XML.gif|link=http://www.google.com/calendar/feeds/6n9a99dr5knag9tp0obc0rncug%40group.calendar.google.com/public/basic]] [[Image:ICal.gif|link=http://www.google.com/calendar/ical/h9cfuk10894em7a8moemquusmg%40group.calendar.google.com/public/basic.ics]] [[Image:HTML.gif|link=http://www.google.com/calendar/embed?src=6n9a99dr5knag9tp0obc0rncug%40group.calendar.google.com&amp;amp;ctz=America/New_York]].&lt;br /&gt;
&lt;br /&gt;
Please contact [[User:Walter]] if you&#039;d like to post an event to the calendar. Or simply post it below and it will be included.&lt;br /&gt;
&lt;br /&gt;
== [[Local Labs]] ==&lt;br /&gt;
A local Sugar Lab adapts the technology and pedagogy to an area&#039;s culture and resources (&#039;&#039;e.g.&#039;&#039;, developing activities and content specific to a region); helps translate Sugar to the local language(s); supports Sugar deployments in area schools; creates a local community devoted to the Sugar Labs principles, making Sugar more open and sustainable; provides for communication, between the local communities and the global Sugar Labs community; develops Local content and software that can be used not only for local purposes but also for the overall community; hosts, co-hosts or partners in the organization of conferences, workshops, talks and meetings related to the use or development of Sugar.&lt;br /&gt;
&lt;br /&gt;
Please visit these Local Labs:&lt;br /&gt;
&lt;br /&gt;
| [http://co.sugarlabs.org/go/Laboratorios_Azúcar_Colombia Sugar Labs Colombia] | [http://cl.sugarlabs.org/go/Página_Principal Sugar Labs Chile] | [[Sugar Labs DC]] | [http://pe.sugarlabs.org/ Sugar Labs Peru] | [http://ar.sugarlabs.org/ Sugar Labs Argentina] |&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavFrame &amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;NavHead&amp;quot;&amp;gt;&#039;&#039;&#039;Local Lab wiki portal&#039;&#039;&#039; &amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;NavContent&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|[http://co.sugarlabs.org/go/Laboratorios_Azúcar_Colombia Sugar Labs Colombia]&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://co.sugarlabs.org&lt;br /&gt;
|width=410&lt;br /&gt;
|height=342&lt;br /&gt;
|border=1&lt;br /&gt;
}}&lt;br /&gt;
|[http://cl.sugarlabs.org/go/Página_Principal Chile Local Labs]&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://cl.sugarlabs.org&lt;br /&gt;
|width=410&lt;br /&gt;
|height=342&lt;br /&gt;
|border=1&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
|[[Sugar Labs DC]]&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://wiki.sugarlabs.org/go/Sugar_Labs_DC&lt;br /&gt;
|width=410&lt;br /&gt;
|height=342&lt;br /&gt;
|border=1&lt;br /&gt;
}}&lt;br /&gt;
|[http://pe.sugarlabs.org/ Sugar Labs Peru]&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://pe.sugarlabs.org/&lt;br /&gt;
|width=410&lt;br /&gt;
|height=342&lt;br /&gt;
|border=1&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://ar.sugarlabs.org/ Sugar Labs Argentina]&lt;br /&gt;
{{#widget:Iframe&lt;br /&gt;
|url=http://ar.sugarlabs.org&lt;br /&gt;
|width=410&lt;br /&gt;
|height=342&lt;br /&gt;
|border=1&lt;br /&gt;
}}&lt;br /&gt;
| Who&#039;s next?&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subpages index ==&lt;br /&gt;
{{Special:PrefixIndex/Sugar_Labs/}}&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/Members&amp;diff=99769</id>
		<title>Sugar Labs/Members</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_Labs/Members&amp;diff=99769"/>
		<updated>2016-12-20T13:04:42Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Applying for membership */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Policy]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Sugar Labs Membership ==&lt;br /&gt;
The Sugar Labs [[Sugar Labs/Members/List|members list]] consists of most of the contributors to the Sugar project. Members can run for election to the [[Oversight Board|Oversight Board]], vote in the elections for the Oversight Board, and suggest [[Sugar Labs/Governance#Sugar Labs Referenda|referenda]].&lt;br /&gt;
&lt;br /&gt;
Any &amp;quot;significant and sustained&amp;quot; contributor to Sugar Labs is eligible for membership. Although it is difficult to specify a precise definition, a [[Sugar_Labs/Sugar_contributors|contributor]] generally must have contributed to a non-trivial improvement of the Sugar project or Sugar Labs activity. Contributions may be code, documentation, translations, maintenance of project-wide resources, &#039;&#039;running a Sugar deployment&#039;&#039;, or other non-trivial activities which benefit Sugar Labs. Membership eligibility is an individual determination: while contributions made in the course of employment will be considered, they will generally be ascribed to the individuals involved, rather than accruing to all employees of a &amp;quot;contributing&amp;quot; corporation. The Membership and Elections Committee will oversee membership applications (Please apply by sending email to &#039;&#039;members at sugarlabs.org&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
The Membership and Elections Committee will review the membership list for currency once per year. Any member may join this committee, which is currently staffed by [[User:Sebastian/FuenteLibre|Sebastian Silva]], [[Samson Goddy]], and [mailto:cbigenho@hotmail.com Caryl Bigenho].&lt;br /&gt;
&lt;br /&gt;
== Applying for membership ==&lt;br /&gt;
All submissions MUST be sent via email to &#039;&#039;&#039;members&#039;&#039;&#039; at &#039;&#039;&#039;sugarlabs.org&#039;&#039;&#039;. Submissions sent to other email addresses or sent after the deadline will not be processed for this year&#039;s election. Someone on the &#039;&#039;&#039;MEC&#039;&#039;&#039; will reply to your query within 2 business days. If you don&#039;t get a reply after a week, please contact [[Samson Goddy]]  or [mailto:cbigenho@hotmail.com Caryl Bigenho].&lt;br /&gt;
&lt;br /&gt;
In your email, please include:&lt;br /&gt;
* Your name&lt;br /&gt;
* Your [[IRC]] / Wiki / [http://git.sugarlabs.org Gitorious] username&lt;br /&gt;
* A description of your contribution to Sugar Labs, links are preferable.&lt;br /&gt;
&lt;br /&gt;
== Currency assurance policy ==&lt;br /&gt;
&lt;br /&gt;
In order to ensure that the Sugar Labs Membership list is reflective of the current status of the project and its participants, once a year members will be asked to confirm that they still wish to be a Sugar Labs Member. If this request bounces, or if a request has not been replied to after it has been a) resent, b) checked for a more current email address, and c) six months have passed, the member will be sent a removal notice with an invitation to reapply.&lt;br /&gt;
&lt;br /&gt;
The most recent currency review was in January 2016.&lt;br /&gt;
&lt;br /&gt;
== Members List ==&lt;br /&gt;
This is our [http://wiki.sugarlabs.org/go/Sugar_Labs/Members/List Sugar_Labs/Members/List].&lt;br /&gt;
&lt;br /&gt;
== Membership Committee ==&lt;br /&gt;
&lt;br /&gt;
For 2015 to 2016-08-01 the Membership and Election Committee was Caryl Bigenho, Samson Goddy, and Sebastian Silva.&lt;br /&gt;
&lt;br /&gt;
The [[Oversight Board]] appoints members to the committee though a normal motion procedure. &lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Service/email]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Participate]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&amp;diff=99493</id>
		<title>Activity Team/Git Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&amp;diff=99493"/>
		<updated>2016-12-06T04:46:40Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: /* Sending a pull-request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Activity Team}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
We use the pull-request model, see [https://help.github.com/articles/about-pull-requests/ github&#039;s help on pull-request].&lt;br /&gt;
&lt;br /&gt;
In short, you will:&lt;br /&gt;
&lt;br /&gt;
* file an issue about what you plan to change&lt;br /&gt;
* do your changes in a new branch&lt;br /&gt;
* push your branch and submit a pull-request for it&lt;br /&gt;
* go through the review process until your pull-request is merged&lt;br /&gt;
* close your issue&lt;br /&gt;
&lt;br /&gt;
== Activity Repositories ==&lt;br /&gt;
&lt;br /&gt;
To request a new activity repo, email the http://lists.sugarlabs.org/listinfo/systems list with the name of the repo and the github usernames who should have access.&lt;br /&gt;
&lt;br /&gt;
We recommend using the same process as below to develop your own Activities.&lt;br /&gt;
&lt;br /&gt;
== Modifying Sugar ==&lt;br /&gt;
&lt;br /&gt;
Before going through the details on how to submit changes, let&#039;s look at the useful tools we provide to assist contributors in the process of modifying Sugar.&lt;br /&gt;
&lt;br /&gt;
If you are hacking on sugar-web, run the testsuit with the karma command inside a osbuild shell:&lt;br /&gt;
&lt;br /&gt;
 karma start sugar-web/test/karma.conf.js&lt;br /&gt;
&lt;br /&gt;
We encourage writing new unit tests for new features.&lt;br /&gt;
&lt;br /&gt;
After you do the changes, run:&lt;br /&gt;
&lt;br /&gt;
 check&lt;br /&gt;
&lt;br /&gt;
It will run all the code checks and the unit tests making sure you won&#039;t break the build when your changes are pushed. If the checks doesn&#039;t succeed because of coding style, see the coding style guide [https://developer.sugarlabs.org/web-style.md.html for web] or [https://developer.sugarlabs.org/python-style.md.html for Python]. If a test doesn&#039;t pass either your code needs to be fixed or the test need to be adapted.&lt;br /&gt;
&lt;br /&gt;
== Open an Issue ==&lt;br /&gt;
&lt;br /&gt;
We track issues in http://bugs.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
Generally, each improvement to Sugar should start with an issue discussion, to ensure that work to fix a bug isn&#039;t wasted.&lt;br /&gt;
&lt;br /&gt;
== GitHub ==&lt;br /&gt;
&lt;br /&gt;
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.&lt;br /&gt;
&lt;br /&gt;
Getting started with GitHub&lt;br /&gt;
&lt;br /&gt;
You will learn to do the following:&lt;br /&gt;
* Create an account, which you do once.&lt;br /&gt;
* Create and add an SSH key, which you do once or if you change system.&lt;br /&gt;
* Create a project, a local repository, and identify yourself to git, which you do once per project.&lt;br /&gt;
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.&lt;br /&gt;
&lt;br /&gt;
=== Create an Account ===&lt;br /&gt;
&lt;br /&gt;
Create an account [https://github.com/join here]&lt;br /&gt;
&lt;br /&gt;
=== Create SSH Key on Windows ===&lt;br /&gt;
&lt;br /&gt;
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].&lt;br /&gt;
&lt;br /&gt;
* Run the puttygen.exe utility to generate a pair of private/public keys.&lt;br /&gt;
* Click on the &#039;&#039;Generate&#039;&#039; button (Make sure SSH-2 RSA parameter is checked)&lt;br /&gt;
* Move the mouse around to generate your key.&lt;br /&gt;
* Once you have accumulated enough &amp;quot;heat&amp;quot;, the application will generate your key pair.&lt;br /&gt;
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.&lt;br /&gt;
* Click on the Save private key button to save your private key in a file.&lt;br /&gt;
&lt;br /&gt;
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.&lt;br /&gt;
This key can now be used on GitHub to access Git on Windows. Good luck!&lt;br /&gt;
&lt;br /&gt;
=== Create SSH Key on GNU/Linux ===&lt;br /&gt;
&lt;br /&gt;
Skip this section if you already have an SSH key in &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory that you trust.&lt;br /&gt;
&lt;br /&gt;
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)&lt;br /&gt;
&lt;br /&gt;
To create a key use &#039;&#039;ssh-keygen&#039;&#039;. The following command will create a “dsa” key:&lt;br /&gt;
 ssh-keygen -t dsa&lt;br /&gt;
&lt;br /&gt;
For creating a “rsa” key use:&lt;br /&gt;
 ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
The key will be stored as two files in the hidden &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;id_dsa.pub&amp;lt;/tt&amp;gt; is your public key.  &amp;lt;tt&amp;gt;id_dsa&amp;lt;/tt&amp;gt; is your private key.  Only you should have access to this private key.  Access to the key will grant access to GitHub in your name.  For example, here is a list of files in the &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory of user strom:&lt;br /&gt;
 ls -al ~/.ssh&lt;br /&gt;
 -rw-------   1 strom strom  668 2009-12-17 21:51 id_dsa&lt;br /&gt;
 -rw-r--r--   1 strom strom  603 2009-12-17 21:51 id_dsa.pub&lt;br /&gt;
&lt;br /&gt;
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised.  If you do it again, you must also add the new key to GitHub as described in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Setup Git Desktop for Windows 7 or later ===&lt;br /&gt;
&lt;br /&gt;
You can either directly download and install git from [https://git-scm.com/downloads here]&lt;br /&gt;
&lt;br /&gt;
Or you can set up github desktop, which gives you a GUI to do a lot of things. You can download it from [https://desktop.github.com/ here] &lt;br /&gt;
&lt;br /&gt;
=== Add SSH Key ===&lt;br /&gt;
&lt;br /&gt;
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on &#039;Add Ssh Key&#039;. Choose a title. Open your public key in a text editor, web browser, or even &#039;&#039;cat&#039;&#039; command, and then copy and paste the key into the text entry field.  Click on &#039;&#039;Save&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once you do this, GitHub trusts SSH connection from your system because your system has the private key, and GitHub has the public key.  You should only need to do this once, unless you change to another system.&lt;br /&gt;
&lt;br /&gt;
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven&#039;t tested it. Keys should generally be located in &amp;lt;tt&amp;gt;~/.ssh/id_rsa.pub&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;~/.ssh/id_dsa.pub&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=== Identify Yourself to Git ===&lt;br /&gt;
&lt;br /&gt;
Git on your local system must know your email and name.  It uses this when you commit a change, so that when you push or mail it others will know who did it.&lt;br /&gt;
&lt;br /&gt;
If you do not use git on your system for any other project, you can configure git:&lt;br /&gt;
&lt;br /&gt;
 git config --global user.email &amp;quot;your_email@example.com&amp;quot;&lt;br /&gt;
 git config --global user.name &amp;quot;Your name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You should only need to do this once on a system.&lt;br /&gt;
&lt;br /&gt;
Otherwise, configure git in the repository:&lt;br /&gt;
&lt;br /&gt;
 cd ${SLUG}.git&lt;br /&gt;
 git config user.email &amp;lt;email-you-used-for-registering-project&amp;gt;&lt;br /&gt;
 git config user.name &amp;lt;your-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should only need to do this once in a repository.&lt;br /&gt;
&lt;br /&gt;
==GitHub Workflow==&lt;br /&gt;
&lt;br /&gt;
=== Create a Project === &lt;br /&gt;
&lt;br /&gt;
You will create a project if you want to create a new activity or other feature which already has no related code. In case you want to make changes to the already present code, you will have to fork the repository(see the next heading)&lt;br /&gt;
&lt;br /&gt;
Log in to GitHub at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.&lt;br /&gt;
&lt;br /&gt;
=== Fork A Repository ===&lt;br /&gt;
&lt;br /&gt;
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.&lt;br /&gt;
&lt;br /&gt;
Most commonly, forks are used to either propose changes to someone else&#039;s project or to use someone else&#039;s project as a starting point for your own idea.&lt;br /&gt;
&lt;br /&gt;
You should fork the repository first. This step is needed only once. See [https://help.github.com/articles/fork-a-repo/ complete help in github]. Brief instructions follow using [https://github.com/sugarlabs/sugar/ sugar component] as example.&lt;br /&gt;
&lt;br /&gt;
Navigate to the sugar repository, press Fork button, then&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/YOUR-NAME/sugar.git&lt;br /&gt;
 cd sugar&lt;br /&gt;
 git remote add upstream https://github.com/sugarlabs/sugar.git&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
&lt;br /&gt;
==== Propose changes to someone else&#039;s project ====&lt;br /&gt;
&lt;br /&gt;
A great example of using forks to propose changes is for bug fixes. Rather than logging an issue for a bug you&#039;ve found, you can:&lt;br /&gt;
&lt;br /&gt;
1. Fork the repository.&lt;br /&gt;
&lt;br /&gt;
2. Make the fix.&lt;br /&gt;
&lt;br /&gt;
3. Submit a pull request to the project owner.&lt;br /&gt;
&lt;br /&gt;
4. If the project owner likes your work, they might pull your fix into the original repository!&lt;br /&gt;
&lt;br /&gt;
=== Sending a pull-request ===&lt;br /&gt;
In order to request the repository&#039;s owner to consider the changes that you made in your repository and include them in the main code, you will need to make a pull request. In order to do this, just open up your repository page, `https://github.com/yourUserName/RepoName`, now you will a line just above the contents saying something like `This branch is 1 commit ahead of walterbender:master.` and you will also thus be able to see a button to create a New Pull Request for the same, then you can review the changes made and the commits to be added in that request and also a message box for the message you would want others to read, describing the changes you made. Then you can proceed to successfully creating a pull request, which will then be reviewed by others. And you can discuss on the very same page regarding whatever needs to be done. And if all is perfect, your pull request will be merged into the main code!&lt;br /&gt;
&lt;br /&gt;
Create one branch per topic&lt;br /&gt;
&lt;br /&gt;
 git checkout -b topic1&lt;br /&gt;
&lt;br /&gt;
Make one or more commits and push the branch&lt;br /&gt;
&lt;br /&gt;
 git push origin topic1&lt;br /&gt;
&lt;br /&gt;
Submit a pull request for the branch. Navigate to your repository page in github, switch to the branch you made, and then press the Pull Request button.&lt;br /&gt;
&lt;br /&gt;
After that, the review process will happen in the pull-request page on github. The process ends with one of this:&lt;br /&gt;
&lt;br /&gt;
1. A reviewer merges your request.&lt;br /&gt;
&lt;br /&gt;
2. A reviewer rejects your request providing reasons (and closes the request)&lt;br /&gt;
&lt;br /&gt;
3. A reviewer requires changes (and closes the request)&lt;br /&gt;
&lt;br /&gt;
In case they ask you for changes, make them using [https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages interactive rebase]&lt;br /&gt;
&lt;br /&gt;
 git rebase -i master&lt;br /&gt;
&lt;br /&gt;
Submit the changes to another remote branch&lt;br /&gt;
&lt;br /&gt;
 git push origin topic1:topic1-try2&lt;br /&gt;
&lt;br /&gt;
Finally submit the new pull request through the github site as you did before.&lt;br /&gt;
&lt;br /&gt;
Make sure to add &amp;quot;Fixes #1234&amp;quot; to the commit message, being #1234 the number of the issue ticket related to your changes. This way, the ticket will be closed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Create Local Repository (Clone) ===&lt;br /&gt;
&lt;br /&gt;
Clone it from GitHub:&lt;br /&gt;
 git clone git@github.com:username/${SLUG}.git ${SLUG}.git&lt;br /&gt;
&lt;br /&gt;
Replace &#039;&#039;${SLUG}&#039;&#039; with your project slug value.&lt;br /&gt;
&lt;br /&gt;
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs.  You should only need to do this once for each project and system.  You can do it again if you need a fresh copy that has no changes.&lt;br /&gt;
&lt;br /&gt;
=== Keep your fork synced ===&lt;br /&gt;
&lt;br /&gt;
You might fork a project in order to propose changes to the upstream, or original, repository. In this case, it&#039;s good practice to regularly sync your fork with the upstream repository.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to pull in changes from the master repository that is &#039;upstream.&#039; To pull in upstream changes:&lt;br /&gt;
&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
 git merge upstream/master&lt;br /&gt;
&lt;br /&gt;
==== Note: ====&lt;br /&gt;
1. If your local branch didn&#039;t have any unique commits, Git will instead perform a &amp;quot;fast-forward&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
2. Syncing your fork only updates your local copy of the repository. To update your fork on GitHub, you must push your changes.&lt;br /&gt;
&lt;br /&gt;
=== Branches ===&lt;br /&gt;
&lt;br /&gt;
When you&#039;re working on a project, you&#039;re going to have a bunch of different features or ideas in progress at any given time – some of which are ready to go, and others which are not. Branching exists to help you manage this workflow.&lt;br /&gt;
&lt;br /&gt;
When you create a branch in your project, you&#039;re creating an environment where you can try out new ideas. Changes you make on a branch don&#039;t affect the master `branch`, so you&#039;re free to experiment and commit changes, safe in the knowledge that your branch won&#039;t be merged until it&#039;s ready to be reviewed by someone you&#039;re collaborating with.&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that all work you do, should be done in a new branch so that even in case your changes break the code(which happens quite frequently for beginners), you can always easily just remove that branch and start again, and also it helps you to work on two different features simultaneously as you can do that in separate branches.&lt;br /&gt;
&lt;br /&gt;
==== Using GitHub Website ====&lt;br /&gt;
&lt;br /&gt;
You can create a new branch in a repository&#039;s branch selector menu. Just start typing the name of your branch; if it doesn&#039;t exist, GitHub will offer to create it for you:&lt;br /&gt;
&lt;br /&gt;
Likewise, if you go to the Branches page on your repository, you have the option of deleting a branch, provided you have appropriate access to the repository, and that there isn’t an open pull request that depends on it:&lt;br /&gt;
&lt;br /&gt;
==== Using the Terminal ====&lt;br /&gt;
&lt;br /&gt;
The `git branch` command lets you create, list, rename, and delete branches. It doesn’t let you switch between branches or put a forked history back together again. For this reason, git branch is tightly integrated with the `git checkout` `and git merge` commands.&lt;br /&gt;
&lt;br /&gt;
List all of the branches in your repository:&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
Create a new branch called &amp;lt;branch&amp;gt;. This does not check out the new branch:&lt;br /&gt;
 git branch &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Delete the specified branch. This is a “safe” operation in that Git prevents you from deleting the branch if it has unmerged changes:&lt;br /&gt;
 git branch -d &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Force delete the specified branch, even if it has unmerged changes. This is the command to use if you want to permanently throw away all of the commits associated with a particular line of development:&lt;br /&gt;
 git branch -D &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rename the current branch to &amp;lt;branch&amp;gt;:&lt;br /&gt;
 git branch -m &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check out the specified branch, which should have already been created with git branch. This makes &amp;lt;existing-branch&amp;gt; the current branch, and updates the working directory to match:&lt;br /&gt;
 git checkout &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create and check out &amp;lt;new-branch&amp;gt;. The -b option is a convenience flag that tells Git to run git branch &amp;lt;new-branch&amp;gt; before running git checkout &amp;lt;new-branch&amp;gt;:&lt;br /&gt;
 git checkout -b &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Same as the above invocation, but base the new branch off of &amp;lt;existing-branch&amp;gt; instead of the current branch:&lt;br /&gt;
 git checkout -b &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the specified branch into the current branch. Git will determine the merge algorithm automatically:&lt;br /&gt;
 git merge &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the specified branch into the current branch, but always generate a merge commit (even if it was a fast-forward merge). This is useful for documenting all merges that occur in your repository:&lt;br /&gt;
 git merge --no-ff &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tip ====&lt;br /&gt;
&lt;br /&gt;
There&#039;s only one rule: anything in the master branch is always deployable.&lt;br /&gt;
&lt;br /&gt;
Because of this, it&#039;s extremely important that your new branch is created off of master when working on a feature or a fix. Your branch name should be descriptive&lt;br /&gt;
&lt;br /&gt;
For detailed explanation, look at the [https://www.atlassian.com/git/tutorials/using-branches/git-merge &#039;&#039;&#039;atlassian git tutorial&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
=== Commits ===&lt;br /&gt;
&lt;br /&gt;
Once your branch has been created, it&#039;s time to start making changes. Whenever you add, edit, or delete a file, you&#039;re making a commit, and adding them to your branch. This process of adding commits keeps track of your progress as you work on a feature branch.&lt;br /&gt;
&lt;br /&gt;
Commits also create a transparent history of your work that others can follow to understand what you&#039;ve done and why. Each commit has an associated commit message, which is a description explaining why a particular change was made. Furthermore, each commit is considered a separate unit of change. This lets you roll back changes if a bug is found, or if you decide to head in a different direction.&lt;br /&gt;
&lt;br /&gt;
In your local repository, find out from git what files you changed:&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
Add any files that are new or changed:&lt;br /&gt;
 git add &amp;lt;file path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or too add all the files&lt;br /&gt;
 git add --all&lt;br /&gt;
&lt;br /&gt;
Tell git to collect the changes into a commit:&lt;br /&gt;
 git commit&lt;br /&gt;
&lt;br /&gt;
You should do this for every meaningful set of changes you make.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note&#039;&#039; &amp;lt;code&amp;gt; git commit &amp;lt;/code&amp;gt; &#039;&#039;commits your changes to your local repository only.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Request Review ===&lt;br /&gt;
&lt;br /&gt;
Before you publish changes widely, you can ask others to review your work and comment on it.&lt;br /&gt;
&lt;br /&gt;
 git format-patch -1&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 git send-email&lt;br /&gt;
&lt;br /&gt;
You may do this for every set of changes you make.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
We encourage testing before merging a pull-request.&lt;br /&gt;
&lt;br /&gt;
So instead of merging directly with the &amp;quot;merge&amp;quot; button on github UI, we do a local merge, then test, then push.&lt;br /&gt;
&lt;br /&gt;
See [https://help.github.com/articles/merging-a-pull-request/ github help on merging a pull-request]&lt;br /&gt;
&lt;br /&gt;
The github page for the pull-request will provide you the right commands to do the local merge, similar to the following.&lt;br /&gt;
&lt;br /&gt;
Get the changes from that branch to a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b SOME-USER-topic1 master&lt;br /&gt;
 git pull https://github.com/SOME-USER/sugar.git topic1&lt;br /&gt;
&lt;br /&gt;
Test! If everything is fine, merge:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git rebase SOME-USER-topic1&lt;br /&gt;
 git push origin master&lt;br /&gt;
&lt;br /&gt;
=== Push Changes ===&lt;br /&gt;
&lt;br /&gt;
Your changes have to be pushed from your local repository to the repository at github so that others can see them there.&lt;br /&gt;
&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.&lt;br /&gt;
&lt;br /&gt;
=== Close Issue ===&lt;br /&gt;
&lt;br /&gt;
Once your changes are merged, you should close your issue. Be sure to thank everyone who helped you out along the way :)&lt;br /&gt;
&lt;br /&gt;
== Other Notes ==&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
&lt;br /&gt;
alsroot taught me about another git feature: tags&lt;br /&gt;
&lt;br /&gt;
 git tag -m &amp;quot;Release 36&amp;quot; v36 HEAD&lt;br /&gt;
 git push --tags&lt;br /&gt;
&lt;br /&gt;
[[Category:Activity Team]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&amp;diff=99492</id>
		<title>Activity Team/Git Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Activity_Team/Git_Tutorial&amp;diff=99492"/>
		<updated>2016-12-06T04:44:39Z</updated>

		<summary type="html">&lt;p&gt;Emilyo11: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{TeamHeader|Activity Team}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
We use the pull-request model, see [https://help.github.com/articles/about-pull-requests/ github&#039;s help on pull-request].&lt;br /&gt;
&lt;br /&gt;
In short, you will:&lt;br /&gt;
&lt;br /&gt;
* file an issue about what you plan to change&lt;br /&gt;
* do your changes in a new branch&lt;br /&gt;
* push your branch and submit a pull-request for it&lt;br /&gt;
* go through the review process until your pull-request is merged&lt;br /&gt;
* close your issue&lt;br /&gt;
&lt;br /&gt;
== Activity Repositories ==&lt;br /&gt;
&lt;br /&gt;
To request a new activity repo, email the http://lists.sugarlabs.org/listinfo/systems list with the name of the repo and the github usernames who should have access.&lt;br /&gt;
&lt;br /&gt;
We recommend using the same process as below to develop your own Activities.&lt;br /&gt;
&lt;br /&gt;
== Modifying Sugar ==&lt;br /&gt;
&lt;br /&gt;
Before going through the details on how to submit changes, let&#039;s look at the useful tools we provide to assist contributors in the process of modifying Sugar.&lt;br /&gt;
&lt;br /&gt;
If you are hacking on sugar-web, run the testsuit with the karma command inside a osbuild shell:&lt;br /&gt;
&lt;br /&gt;
 karma start sugar-web/test/karma.conf.js&lt;br /&gt;
&lt;br /&gt;
We encourage writing new unit tests for new features.&lt;br /&gt;
&lt;br /&gt;
After you do the changes, run:&lt;br /&gt;
&lt;br /&gt;
 check&lt;br /&gt;
&lt;br /&gt;
It will run all the code checks and the unit tests making sure you won&#039;t break the build when your changes are pushed. If the checks doesn&#039;t succeed because of coding style, see the coding style guide [https://developer.sugarlabs.org/web-style.md.html for web] or [https://developer.sugarlabs.org/python-style.md.html for Python]. If a test doesn&#039;t pass either your code needs to be fixed or the test need to be adapted.&lt;br /&gt;
&lt;br /&gt;
== Open an Issue ==&lt;br /&gt;
&lt;br /&gt;
We track issues in http://bugs.sugarlabs.org&lt;br /&gt;
&lt;br /&gt;
Generally, each improvement to Sugar should start with an issue discussion, to ensure that work to fix a bug isn&#039;t wasted.&lt;br /&gt;
&lt;br /&gt;
== GitHub ==&lt;br /&gt;
&lt;br /&gt;
Sugar Labs uses GitHub as its primary server for git repositories. While you are welcome to use other servers, it is on GitHub where you will find the master branches of the core modules and core activities.&lt;br /&gt;
&lt;br /&gt;
Getting started with GitHub&lt;br /&gt;
&lt;br /&gt;
You will learn to do the following:&lt;br /&gt;
* Create an account, which you do once.&lt;br /&gt;
* Create and add an SSH key, which you do once or if you change system.&lt;br /&gt;
* Create a project, a local repository, and identify yourself to git, which you do once per project.&lt;br /&gt;
* Add source files, change existing source files, commit changes, push changes, and pull changes, which you do regularly.&lt;br /&gt;
&lt;br /&gt;
=== Create an Account ===&lt;br /&gt;
&lt;br /&gt;
Create an account [https://github.com/join here]&lt;br /&gt;
&lt;br /&gt;
=== Create SSH Key on Windows ===&lt;br /&gt;
&lt;br /&gt;
To create an SSH Key on Windows, download the latest [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] [http://the.earth.li/~sgtatham/putty/latest/x86/putty-installer.exe installer].&lt;br /&gt;
&lt;br /&gt;
* Run the puttygen.exe utility to generate a pair of private/public keys.&lt;br /&gt;
* Click on the &#039;&#039;Generate&#039;&#039; button (Make sure SSH-2 RSA parameter is checked)&lt;br /&gt;
* Move the mouse around to generate your key.&lt;br /&gt;
* Once you have accumulated enough &amp;quot;heat&amp;quot;, the application will generate your key pair.&lt;br /&gt;
* Make sure you enter a lengthy passphrase in the Key passphrase field and confirm it in the Confirm passphrase field.&lt;br /&gt;
* Click on the Save private key button to save your private key in a file.&lt;br /&gt;
&lt;br /&gt;
Congratulations! With your mouse, select the content of the box labelled Public key and press Control-C to copy your public SSH key.&lt;br /&gt;
This key can now be used on GitHub to access Git on Windows. Good luck!&lt;br /&gt;
&lt;br /&gt;
=== Create SSH Key on GNU/Linux ===&lt;br /&gt;
&lt;br /&gt;
Skip this section if you already have an SSH key in &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory that you trust.&lt;br /&gt;
&lt;br /&gt;
(An easy-to-read tutorial for generating an ssh key can be found [https://help.github.com/articles/generating-ssh-keys here].)&lt;br /&gt;
&lt;br /&gt;
To create a key use &#039;&#039;ssh-keygen&#039;&#039;. The following command will create a “dsa” key:&lt;br /&gt;
 ssh-keygen -t dsa&lt;br /&gt;
&lt;br /&gt;
For creating a “rsa” key use:&lt;br /&gt;
 ssh-keygen -t rsa&lt;br /&gt;
&lt;br /&gt;
The key will be stored as two files in the hidden &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;id_dsa.pub&amp;lt;/tt&amp;gt; is your public key.  &amp;lt;tt&amp;gt;id_dsa&amp;lt;/tt&amp;gt; is your private key.  Only you should have access to this private key.  Access to the key will grant access to GitHub in your name.  For example, here is a list of files in the &amp;lt;tt&amp;gt;.ssh&amp;lt;/tt&amp;gt; directory of user strom:&lt;br /&gt;
 ls -al ~/.ssh&lt;br /&gt;
 -rw-------   1 strom strom  668 2009-12-17 21:51 id_dsa&lt;br /&gt;
 -rw-r--r--   1 strom strom  603 2009-12-17 21:51 id_dsa.pub&lt;br /&gt;
&lt;br /&gt;
You should only need to create a key once, unless you change to another system, or a different Sugar-on-a-Stick drive, or you think your private key was compromised.  If you do it again, you must also add the new key to GitHub as described in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Setup Git Desktop for Windows 7 or later ===&lt;br /&gt;
&lt;br /&gt;
You can either directly download and install git from [https://git-scm.com/downloads here]&lt;br /&gt;
&lt;br /&gt;
Or you can set up github desktop, which gives you a GUI to do a lot of things. You can download it from [https://desktop.github.com/ here] &lt;br /&gt;
&lt;br /&gt;
=== Add SSH Key ===&lt;br /&gt;
&lt;br /&gt;
Log in to GitHub at http://github.com and go [https://github.com/settings/ssh here] click on &#039;Add Ssh Key&#039;. Choose a title. Open your public key in a text editor, web browser, or even &#039;&#039;cat&#039;&#039; command, and then copy and paste the key into the text entry field.  Click on &#039;&#039;Save&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once you do this, GitHub trusts SSH connection from your system because your system has the private key, and GitHub has the public key.  You should only need to do this once, unless you change to another system.&lt;br /&gt;
&lt;br /&gt;
(With ssh-keygen you can specify the name of your key file. Using this feature is not a good idea, because we haven&#039;t tested it. Keys should generally be located in &amp;lt;tt&amp;gt;~/.ssh/id_rsa.pub&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;~/.ssh/id_dsa.pub&amp;lt;/tt&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
=== Identify Yourself to Git ===&lt;br /&gt;
&lt;br /&gt;
Git on your local system must know your email and name.  It uses this when you commit a change, so that when you push or mail it others will know who did it.&lt;br /&gt;
&lt;br /&gt;
If you do not use git on your system for any other project, you can configure git:&lt;br /&gt;
&lt;br /&gt;
 git config --global user.email &amp;quot;your_email@example.com&amp;quot;&lt;br /&gt;
 git config --global user.name &amp;quot;Your name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You should only need to do this once on a system.&lt;br /&gt;
&lt;br /&gt;
Otherwise, configure git in the repository:&lt;br /&gt;
&lt;br /&gt;
 cd ${SLUG}.git&lt;br /&gt;
 git config user.email &amp;lt;email-you-used-for-registering-project&amp;gt;&lt;br /&gt;
 git config user.name &amp;lt;your-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should only need to do this once in a repository.&lt;br /&gt;
&lt;br /&gt;
==GitHub Workflow==&lt;br /&gt;
&lt;br /&gt;
=== Create a Project === &lt;br /&gt;
&lt;br /&gt;
You will create a project if you want to create a new activity or other feature which already has no related code. In case you want to make changes to the already present code, you will have to fork the repository(see the next heading)&lt;br /&gt;
&lt;br /&gt;
Log in to GitHub at http://github.com and go [https://github.com/new here]. Choose a repository name, and write a description.&lt;br /&gt;
&lt;br /&gt;
=== Fork A Repository ===&lt;br /&gt;
&lt;br /&gt;
A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.&lt;br /&gt;
&lt;br /&gt;
Most commonly, forks are used to either propose changes to someone else&#039;s project or to use someone else&#039;s project as a starting point for your own idea.&lt;br /&gt;
&lt;br /&gt;
You should fork the repository first. This step is needed only once. See [https://help.github.com/articles/fork-a-repo/ complete help in github]. Brief instructions follow using [https://github.com/sugarlabs/sugar/ sugar component] as example.&lt;br /&gt;
&lt;br /&gt;
Navigate to the sugar repository, press Fork button, then&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/YOUR-NAME/sugar.git&lt;br /&gt;
 cd sugar&lt;br /&gt;
 git remote add upstream https://github.com/sugarlabs/sugar.git&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
&lt;br /&gt;
==== Propose changes to someone else&#039;s project ====&lt;br /&gt;
&lt;br /&gt;
A great example of using forks to propose changes is for bug fixes. Rather than logging an issue for a bug you&#039;ve found, you can:&lt;br /&gt;
&lt;br /&gt;
1. Fork the repository.&lt;br /&gt;
&lt;br /&gt;
2. Make the fix.&lt;br /&gt;
&lt;br /&gt;
3. Submit a pull request to the project owner.&lt;br /&gt;
&lt;br /&gt;
4. If the project owner likes your work, they might pull your fix into the original repository!&lt;br /&gt;
&lt;br /&gt;
== Sending a pull-request ==&lt;br /&gt;
In order to request the repository&#039;s owner to consider the changes that you made in your repository and include them in the main code, you will need to make a pull request. In order to do this, just open up your repository page, `https://github.com/yourUserName/RepoName`, now you will a line just above the contents saying something like `This branch is 1 commit ahead of walterbender:master.` and you will also thus be able to see a button to create a New Pull Request for the same, then you can review the changes made and the commits to be added in that request and also a message box for the message you would want others to read, describing the changes you made. Then you can proceed to successfully creating a pull request, which will then be reviewed by others. And you can discuss on the very same page regarding whatever needs to be done. And if all is perfect, your pull request will be merged into the main code!&lt;br /&gt;
&lt;br /&gt;
Create one branch per topic&lt;br /&gt;
&lt;br /&gt;
 git checkout -b topic1&lt;br /&gt;
&lt;br /&gt;
Make one or more commits and push the branch&lt;br /&gt;
&lt;br /&gt;
 git push origin topic1&lt;br /&gt;
&lt;br /&gt;
Submit a pull request for the branch. Navigate to your repository page in github, switch to the branch you made, and then press the Pull Request button.&lt;br /&gt;
&lt;br /&gt;
After that, the review process will happen in the pull-request page on github. The process ends with one of this:&lt;br /&gt;
&lt;br /&gt;
1. A reviewer merges your request.&lt;br /&gt;
&lt;br /&gt;
2. A reviewer rejects your request providing reasons (and closes the request)&lt;br /&gt;
&lt;br /&gt;
3. A reviewer requires changes (and closes the request)&lt;br /&gt;
&lt;br /&gt;
In case they ask you for changes, make them using [https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages interactive rebase]&lt;br /&gt;
&lt;br /&gt;
 git rebase -i master&lt;br /&gt;
&lt;br /&gt;
Submit the changes to another remote branch&lt;br /&gt;
&lt;br /&gt;
 git push origin topic1:topic1-try2&lt;br /&gt;
&lt;br /&gt;
Finally submit the new pull request through the github site as you did before.&lt;br /&gt;
&lt;br /&gt;
Make sure to add &amp;quot;Fixes #1234&amp;quot; to the commit message, being #1234 the number of the issue ticket related to your changes. This way, the ticket will be closed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Create Local Repository (Clone) ===&lt;br /&gt;
&lt;br /&gt;
Clone it from GitHub:&lt;br /&gt;
 git clone git@github.com:username/${SLUG}.git ${SLUG}.git&lt;br /&gt;
&lt;br /&gt;
Replace &#039;&#039;${SLUG}&#039;&#039; with your project slug value.&lt;br /&gt;
&lt;br /&gt;
Once you do this, you will have a local repository directory named ${SLUG}.git that shares the same history of changes (if any) of the repository at Sugar Labs.  You should only need to do this once for each project and system.  You can do it again if you need a fresh copy that has no changes.&lt;br /&gt;
&lt;br /&gt;
=== Keep your fork synced ===&lt;br /&gt;
&lt;br /&gt;
You might fork a project in order to propose changes to the upstream, or original, repository. In this case, it&#039;s good practice to regularly sync your fork with the upstream repository.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to pull in changes from the master repository that is &#039;upstream.&#039; To pull in upstream changes:&lt;br /&gt;
&lt;br /&gt;
 git fetch upstream&lt;br /&gt;
 git merge upstream/master&lt;br /&gt;
&lt;br /&gt;
==== Note: ====&lt;br /&gt;
1. If your local branch didn&#039;t have any unique commits, Git will instead perform a &amp;quot;fast-forward&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
2. Syncing your fork only updates your local copy of the repository. To update your fork on GitHub, you must push your changes.&lt;br /&gt;
&lt;br /&gt;
=== Branches ===&lt;br /&gt;
&lt;br /&gt;
When you&#039;re working on a project, you&#039;re going to have a bunch of different features or ideas in progress at any given time – some of which are ready to go, and others which are not. Branching exists to help you manage this workflow.&lt;br /&gt;
&lt;br /&gt;
When you create a branch in your project, you&#039;re creating an environment where you can try out new ideas. Changes you make on a branch don&#039;t affect the master `branch`, so you&#039;re free to experiment and commit changes, safe in the knowledge that your branch won&#039;t be merged until it&#039;s ready to be reviewed by someone you&#039;re collaborating with.&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that all work you do, should be done in a new branch so that even in case your changes break the code(which happens quite frequently for beginners), you can always easily just remove that branch and start again, and also it helps you to work on two different features simultaneously as you can do that in separate branches.&lt;br /&gt;
&lt;br /&gt;
==== Using GitHub Website ====&lt;br /&gt;
&lt;br /&gt;
You can create a new branch in a repository&#039;s branch selector menu. Just start typing the name of your branch; if it doesn&#039;t exist, GitHub will offer to create it for you:&lt;br /&gt;
&lt;br /&gt;
Likewise, if you go to the Branches page on your repository, you have the option of deleting a branch, provided you have appropriate access to the repository, and that there isn’t an open pull request that depends on it:&lt;br /&gt;
&lt;br /&gt;
==== Using the Terminal ====&lt;br /&gt;
&lt;br /&gt;
The `git branch` command lets you create, list, rename, and delete branches. It doesn’t let you switch between branches or put a forked history back together again. For this reason, git branch is tightly integrated with the `git checkout` `and git merge` commands.&lt;br /&gt;
&lt;br /&gt;
List all of the branches in your repository:&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
Create a new branch called &amp;lt;branch&amp;gt;. This does not check out the new branch:&lt;br /&gt;
 git branch &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Delete the specified branch. This is a “safe” operation in that Git prevents you from deleting the branch if it has unmerged changes:&lt;br /&gt;
 git branch -d &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Force delete the specified branch, even if it has unmerged changes. This is the command to use if you want to permanently throw away all of the commits associated with a particular line of development:&lt;br /&gt;
 git branch -D &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rename the current branch to &amp;lt;branch&amp;gt;:&lt;br /&gt;
 git branch -m &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check out the specified branch, which should have already been created with git branch. This makes &amp;lt;existing-branch&amp;gt; the current branch, and updates the working directory to match:&lt;br /&gt;
 git checkout &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create and check out &amp;lt;new-branch&amp;gt;. The -b option is a convenience flag that tells Git to run git branch &amp;lt;new-branch&amp;gt; before running git checkout &amp;lt;new-branch&amp;gt;:&lt;br /&gt;
 git checkout -b &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Same as the above invocation, but base the new branch off of &amp;lt;existing-branch&amp;gt; instead of the current branch:&lt;br /&gt;
 git checkout -b &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the specified branch into the current branch. Git will determine the merge algorithm automatically:&lt;br /&gt;
 git merge &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Merge the specified branch into the current branch, but always generate a merge commit (even if it was a fast-forward merge). This is useful for documenting all merges that occur in your repository:&lt;br /&gt;
 git merge --no-ff &amp;lt;branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tip ====&lt;br /&gt;
&lt;br /&gt;
There&#039;s only one rule: anything in the master branch is always deployable.&lt;br /&gt;
&lt;br /&gt;
Because of this, it&#039;s extremely important that your new branch is created off of master when working on a feature or a fix. Your branch name should be descriptive&lt;br /&gt;
&lt;br /&gt;
For detailed explanation, look at the [https://www.atlassian.com/git/tutorials/using-branches/git-merge &#039;&#039;&#039;atlassian git tutorial&#039;&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
=== Commits ===&lt;br /&gt;
&lt;br /&gt;
Once your branch has been created, it&#039;s time to start making changes. Whenever you add, edit, or delete a file, you&#039;re making a commit, and adding them to your branch. This process of adding commits keeps track of your progress as you work on a feature branch.&lt;br /&gt;
&lt;br /&gt;
Commits also create a transparent history of your work that others can follow to understand what you&#039;ve done and why. Each commit has an associated commit message, which is a description explaining why a particular change was made. Furthermore, each commit is considered a separate unit of change. This lets you roll back changes if a bug is found, or if you decide to head in a different direction.&lt;br /&gt;
&lt;br /&gt;
In your local repository, find out from git what files you changed:&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
Add any files that are new or changed:&lt;br /&gt;
 git add &amp;lt;file path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or too add all the files&lt;br /&gt;
 git add --all&lt;br /&gt;
&lt;br /&gt;
Tell git to collect the changes into a commit:&lt;br /&gt;
 git commit&lt;br /&gt;
&lt;br /&gt;
You should do this for every meaningful set of changes you make.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note&#039;&#039; &amp;lt;code&amp;gt; git commit &amp;lt;/code&amp;gt; &#039;&#039;commits your changes to your local repository only.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Request Review ===&lt;br /&gt;
&lt;br /&gt;
Before you publish changes widely, you can ask others to review your work and comment on it.&lt;br /&gt;
&lt;br /&gt;
 git format-patch -1&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 git send-email&lt;br /&gt;
&lt;br /&gt;
You may do this for every set of changes you make.&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
We encourage testing before merging a pull-request.&lt;br /&gt;
&lt;br /&gt;
So instead of merging directly with the &amp;quot;merge&amp;quot; button on github UI, we do a local merge, then test, then push.&lt;br /&gt;
&lt;br /&gt;
See [https://help.github.com/articles/merging-a-pull-request/ github help on merging a pull-request]&lt;br /&gt;
&lt;br /&gt;
The github page for the pull-request will provide you the right commands to do the local merge, similar to the following.&lt;br /&gt;
&lt;br /&gt;
Get the changes from that branch to a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout -b SOME-USER-topic1 master&lt;br /&gt;
 git pull https://github.com/SOME-USER/sugar.git topic1&lt;br /&gt;
&lt;br /&gt;
Test! If everything is fine, merge:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git rebase SOME-USER-topic1&lt;br /&gt;
 git push origin master&lt;br /&gt;
&lt;br /&gt;
=== Push Changes ===&lt;br /&gt;
&lt;br /&gt;
Your changes have to be pushed from your local repository to the repository at github so that others can see them there.&lt;br /&gt;
&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
You must do this for every set of changes you make, when you want to synchronise with other developers or prepare for a release.&lt;br /&gt;
&lt;br /&gt;
=== Close Issue ===&lt;br /&gt;
&lt;br /&gt;
Once your changes are merged, you should close your issue. Be sure to thank everyone who helped you out along the way :) &lt;br /&gt;
&lt;br /&gt;
== Other Notes ==&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
&lt;br /&gt;
alsroot taught me about another git feature: tags&lt;br /&gt;
&lt;br /&gt;
 git tag -m &amp;quot;Release 36&amp;quot; v36 HEAD&lt;br /&gt;
 git push --tags&lt;br /&gt;
&lt;br /&gt;
[[Category:Activity Team]]&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Emilyo11</name></author>
	</entry>
</feed>