Skip to content
Permalink
Newer
Older
100644 827 lines (621 sloc) 37 KB
January 29, 2019 14:17
1
# GSoC 2019 Ideas
March 29, 2019 15:08
2
3
* [Port Sugar and core activities to Python 3](#port-sugar-and-core-activities-to-python-3)
4
* [Improve and maintain 25 Sugar activities](#improve-and-maintain-25-sugar-activities)
5
* [Create a new set of activities](#create-a-new-set-of-activities)
6
* [Performance in Music Blocks](#performance-in-music-blocks)
7
* [Platforms for Music Blocks](#platforms-for-music-blocks)
8
* [Reconciling rhythm with pitch in Music Blocks widgets](#reconciling-rhythm-with-pitch-in-music-blocks-widgets)
9
* [Export Music Blocks code to JavaScript](#export-music-blocks-code-to-javascript)
10
* [Expand Sugarizer Exerciser activity](#expand-sugarizer-exerciser-activity)
11
* [Write activity for Sugarizer](#write-activity-for-sugarizer)
12
* [Colored desktop and activity icons](#colored-desktop-and-activity-icons)
13
* [Improve Sugarizer Server Dashboard](#improve-sugarizer-server-dashboard)
14
* [Port Sugarizer activities to Sugar](#port-sugarizer-activities-to-sugar)
15
* [Create a Sugar Dashboard](#create-a-sugar-dashboard)
16
* [Add Bluetooth support to Sugar](#add-bluetooth-support-to-sugar)
March 29, 2019 15:08
17
* [Administrative notes](#administrative-notes)
18
19
------------
20
December 17, 2018 23:36
21
## Port Sugar and core activities to Python 3
22
23
**Selected**<br>
24
Aniket Mathur. [Blog](https://medium.com/@aniketmathur). [Work review](2019/work-product/port-to-python-3/README.md)
December 17, 2018 23:36
26
**Prerequisites**<br>
27
- Experience with Python
December 17, 2018 23:36
28
- Experience with porting telepathy bindings
29
- Strong experience with
February 21, 2019 09:23
30
[Sugar Desktop](https://github.com/sugarlabs/sugar) and activities
December 17, 2018 23:36
31
January 7, 2019 02:29
32
**Description**<br>
33
Sugar runs on Python 2. Support for Python 2 is being withdrawn fast
34
and we need to move to Python 3. The work was started in GSoC 2018,
35
see [link](https://wiki.sugarlabs.org/go/Python_2to3), and needs to be
January 29, 2019 14:17
36
finished and released. See GitHub Project [Port to Python 3 via
January 7, 2019 02:29
37
six](https://github.com/orgs/sugarlabs/projects/1) for open issues and
January 29, 2019 14:17
38
pull requests.
January 7, 2019 02:29
39
40
The telepathy library does not have its bindings for Python 3, and
41
porting Telepathy to its PyGObject binding is a prerequisite for the
42
Port to Python 3 Project, see GitHub Project [Port to
43
TelepathyGLib](https://github.com/orgs/sugarlabs/projects/4).
December 17, 2018 23:36
44
45
**Project Task Checklist**<br>
46
_(in chronological order)_
47
- Port all Telepathy bindings to TelepathyGLib, see [Port to
48
TelepathyGLib](https://github.com/orgs/sugarlabs/projects/4).
49
- Make activitychooser window modal and remove its dependency from
50
toolkit to jarabe, see [sugar/#815](https://github.com/sugarlabs/sugar/issues/815)
51
- Release gwebsockets for Python 3, see [gwebsockets/#2](https://github.com/sugarlabs/gwebsockets/issues)
52
- Continue porting sugar-toolkit-gtk3 to six, see [
53
sugar-toolkit-gtk3/#383](https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/383)
54
- Release sugar-toolkit-gtk3 which is compatible with both Python 2
55
and 3
56
- Port Sugar Desktop to Python 3, see [sugar/#805](https://github.com/sugarlabs/sugar/pull/805)
57
- Port all fructose activities to Python 3
December 17, 2018 23:36
58
59
**Coding Mentors**<br>
February 21, 2019 09:23
60
[Rahul Bothra](https://github.com/pro-panda) and
61
[James Cameron](https://github.com/quozl) (via mailing list)
December 17, 2018 23:36
62
63
**Assisting Mentors**<br>
64
None.
December 17, 2018 23:36
65
66
------------
67
January 18, 2019 17:35
68
## Improve and maintain 25 Sugar activities
69
**Selected**<br>
70
Swarup N. [Blog](https://nswarup14.github.io).
72
**Prerequisites**<br>
73
- Experience with Python
74
- Strong experience with Sugar activities
75
- Experience with maintaining activities on ASLO
76
77
**Description**<br>
January 29, 2019 14:17
78
Sugar has a lot of activities, with 250+ on GitHub, and more
79
elsewhere. These have scope for improvement; bugs,
80
features, updated human translations, and release. This project will involve
81
working on at least 25 activities to improve them. Students can choose
January 7, 2019 02:29
82
activities on their own, and are encouraged to select activities which
83
are either a part of Fructose or have a strong pedagogical value. To
84
understand how to locate and work on activities, see our guide to
85
[Modifying
86
Activities](https://github.com/sugarlabs/sugar-docs/blob/master/src/contributing.md#modifying-activities)
87
January 29, 2019 14:17
88
In their proposal, students should mention some of the issues they will
89
work on. Any new feature suggestion should be discussed on GitHub
90
Issues before being added to a proposal.
January 7, 2019 02:29
91
January 29, 2019 14:17
92
Since there are a lot of activities to work on, **more than one instance
93
of this project may be selected**.
94
95
**Suggested Issues to work on:**<br>
96
- write-activity: [#28 Port to sugar3.speech](https://github.com/sugarlabs/write-activity/issues/28)
97
- jukebox-activity: [#22 Add collaboration for sharing playlist items](https://github.com/sugarlabs/jukebox-activity/issues/22)
98
- jukebox-activity: [#23 Enable visualisations in the playbin element for audio content](https://github.com/sugarlabs/jukebox-activity/issues/23)
99
- infoslicer: [#23 Traceback, motion_notify](https://github.com/sugarlabs/infoslicer/issues/23)
100
- iq-activity: [#10 Port to Latest Sugargame](https://github.com/sugarlabs/iq-activity/issues/10)
101
- GTranslator: [#8 Unconnected forks to be merged](https://github.com/sugarlabs/GTranslator/issues/8)
102
- maze-activity: [#16 Add holes](https://github.com/sugarlabs/maze-activity/issues/16)
103
- flappy-birds-activity: [#16 Suggested changes](https://github.com/sugarlabs/flappy-birds-activity/issues/16)
104
- bichos-activity: [#9 Delete repository](https://github.com/sugarlabs/bichos-activity/issues/9)
March 21, 2019 12:52
106
Other issues will have been raised since.
107
January 7, 2019 02:29
108
Suggesting or adding features, fixing bugs, or releasing activities
109
will help you to gain experience
111
**Coding Mentors**<br>
February 21, 2019 09:23
112
[Rahul Bothra](https://github.com/pro-panda),
113
[James Cameron](https://github.com/quozl) and
114
[Ibiam Chihurumnaya](https://github.com/chimosky) (via mailing list).
116
**Assisting Mentors**<br>
117
None.
118
119
------------
120
January 23, 2019 10:11
121
## Create a new set of activities
122
**Selected**<br>
123
Nobody.
124
January 23, 2019 10:11
125
**Prerequisites**<br>
126
- Ability to write in Python programming language (for Sugar activities), or
127
- Ability to write in JavaScript programming language (for Sugarizer activities).
January 23, 2019 10:11
128
129
**Description**<br>
130
Sugar has a lot of activities (250+ on GitHub, and more
131
elsewhere). To understand how to locate and work on activities, see
132
our guide to [Modifying Activities](https://github.com/sugarlabs/sugar-docs/blob/master/src/contributing.md#modifying-activities).
133
134
Sugarizer has a few activities.
135
January 24, 2019 23:15
136
This project expects you to think of what new activities can be created.
January 29, 2019 14:17
137
The activity or set of activities should add a new learning experience
138
for the user, and must be large enough for the three months work for GSoC.
January 23, 2019 10:11
139
February 2, 2019 17:18
140
Some ideas (but not limited to) are [Machine Learning Teaching](https://github.com/sugarlabs/GSoC/issues/16),
141
[Pronounciation Checker](https://github.com/sugarlabs/GSoC/issues/12),
142
[Jupyter Notebook](https://github.com/sugarlabs/GSoC/issues/13),
143
[Scratch](https://github.com/sugarlabs/GSoC/issues/5), or Science themed activities.
February 2, 2019 17:18
144
January 23, 2019 10:11
145
See https://www.tandfonline.com/doi/pdf/10.1080/15391523.2017.1388200?needAccess=true
146
to understand some user experiences and expectations.
147
January 29, 2019 14:17
148
In the proposal, students must mention the features
149
in their proposed activities, and may include preliminary designs
January 23, 2019 10:11
150
as well.
151
152
**Project Task Checklist:**<br>
153
- [ ] Create the activity; ensure that the code is modular, commented,
January 29, 2019 14:17
154
and does not use any deprecated modules,
January 23, 2019 10:11
155
- [ ] Test the activity; put it out for the community to test and
January 29, 2019 14:17
156
implement feature requests or patches for bugs reported,
157
- [ ] Release activity for use by primary school children.
January 23, 2019 10:11
158
159
**Suggested Issues to work on:**<br>
160
- Fixing issues in activities
161
- Adding new features in activities
162
- Creating new activities
163
164
**Coding Mentors**<br>
166
- for Python activities, [Rahul Bothra](https://github.com/pro-panda), [James Cameron](https://github.com/quozl) and [Ibiam Chihurumnaya](https://github.com/chimosky) (via mailing list),
167
- for JavaScript activities, [Lionel Laské](https://github.com/llaske) (JavaScript) (via direct mail),
January 23, 2019 10:11
168
169
**Assisting Mentors**<br>
February 17, 2019 22:38
170
[Caryl Bigenho](https://github.com/GrannieB),
171
[Sumit Srivastava](https://github.com/sum2it),
February 17, 2019 22:38
172
[Utkarsh Dhawan](https://github.com/crusher95),
173
[Samson Goddy](https://github.com/samswag/),
February 20, 2019 16:24
174
[Iqra Muhammad](https://github.com/iqraceme),
175
[Peace Ojemeh](https://github.com/perriefidelis) and
February 20, 2019 16:24
176
[Pratul Kumar](https://github.com/Pratul1997).
January 23, 2019 10:11
177
178
------------
179
January 7, 2019 02:29
180
## Performance in Music Blocks
181
**Selected**<br>
182
Ankur Bambharoliya and Favour Kelvin, [Blog](https://medium.com/@favourkelvin17).
January 7, 2019 01:50
184
**Prerequisites**<br>
January 7, 2019 02:09
185
- Extensive experience with JavaScript
186
- Experience with Travis CI (and/or other test environments for JavaScript)
January 7, 2019 01:50
187
- Some experience of working on [Music
February 21, 2019 09:23
188
Blocks](https://github.com/sugarlabs/musicblocks) or [Turtle
189
Blocks](https://github.com/sugarlabs/turtleblocksjs)
January 7, 2019 01:50
190
January 7, 2019 02:29
191
**Description**<br>
January 7, 2019 01:50
192
193
Music Blocks is written in JavaScript and runs in a web browser. It
January 24, 2019 23:15
194
uses a number of libraries, notably, Tone.js and Easel.js. Since it
January 7, 2019 01:50
195
is intended to be used in settings such as schools, where old and
January 7, 2019 02:29
196
under-powered computers are common, tuning the performance (both the
January 7, 2019 01:50
197
memory footprint and the CPU consumption) is important. Further,
198
timing errors in audio are annoying and the Tone.js synths get crackly
199
when the CPU is maxed out.
200
January 7, 2019 02:29
201
This project involves several steps: (1) characterizing the problem,
January 7, 2019 01:50
202
e.g., what resources are currently being consumed? (2) identifying
203
potential places for improvement (including finding memory leaks,
204
etc.); (3) building a test environment so that we can measure the
205
impact of any changes to the code base; and (4) making changes to
January 24, 2019 23:15
206
enhance performance.
January 7, 2019 01:50
207
208
**Suggested issues to work on:**<br>
January 7, 2019 02:29
209
- Any issue tagged with a
210
[Performance](https://github.com/sugarlabs/musicblocks/labels/Performance)
211
Label
January 7, 2019 01:50
212
213
**Coding Mentors**<br>
February 21, 2019 09:23
214
[Walter Bender](https://github.com/walterbender)
January 7, 2019 01:50
215
216
**Assisting Mentors**<br>
February 21, 2019 09:23
217
[Sumit Srivastava](https://github.com/sum2it) and
218
[Devin Ulibarri](https://github.com/pikurasa)
January 7, 2019 01:50
219
220
------------
221
January 10, 2019 19:29
222
## Platforms for Music Blocks
223
**Selected**<br>
224
Nobody.
225
January 10, 2019 19:29
226
**Prerequisites**<br>
227
- Extensive experience with JavaScript
228
- Experience with Travis CI (and/or other test environments for JavaScript)
229
- Some experience of working on [Music
February 21, 2019 09:23
230
Blocks](https://github.com/sugarlabs/musicblocks) or [Turtle
231
Blocks](https://github.com/sugarlabs/turtleblocksjs)
January 10, 2019 19:29
232
233
**Description**<br>
234
235
Music Blocks is written in JavaScript and runs in a web browser. It
January 24, 2019 23:15
236
uses a number of libraries, notably, Tone.js and Easel.js. Since it
January 10, 2019 19:29
237
is intended to be used in settings such as schools, we don't have a
238
lot of control over what platforms it will be run on, either in terms
239
of hardware, OS, or browser.
240
January 29, 2019 14:17
241
This project involves several steps
242
243
* characterizing the performance of Music Blocks across a variety of
244
platforms: different versions of Windows (e.g., 7 and 10), Mac OS,
245
GNU/Linux (Fedora, Ubuntu, et al.), and Android; different browsers,
246
such as Chrome, Chromium, Firefox, Opera, Safari, and Edge; and
247
different hardware platforms: low-end PCs, tablets, iPad, Android
248
devices, Raspberry Pi, and OLPC XO. Presumably it will work in some
249
situations and not in others. (Tone.js will be the issue in some
250
situations -- we need to explore porting the latest version, which as
251
of the writing of this description has not yet been released.)
252
253
* identifying potential places for improvement (e.g., working around
254
the local storage issues associated with Edge); and
255
256
* documenting the results of the investigation as well we developing
257
unit tests so that we can track changes going forward.
January 10, 2019 19:29
258
259
**Suggested issues to work on:**<br> - Any issue tagged with a
260
[Performance](https://github.com/sugarlabs/musicblocks/labels/Performance),
261
[Android](https://github.com/sugarlabs/musicblocks/labels/Android),
262
[Edge](https://github.com/sugarlabs/musicblocks/labels/Edge),
263
[Chrome](https://github.com/sugarlabs/musicblocks/labels/Chrome),
264
[Chrome on
265
Mac](https://github.com/sugarlabs/musicblocks/labels/Chrome%20on%20Mac),
266
[Chrome on
267
W10](https://github.com/sugarlabs/musicblocks/labels/Chrome%20on%20W10),
268
or [Firefox](https://github.com/sugarlabs/musicblocks/labels/Firefox)
269
Label
270
271
**Coding Mentors**<br>
272
[Walter Bender](https://github.com/walterbender) and
February 21, 2019 09:23
273
[Sumit Srivastava](https://github.com/sum2it)
January 10, 2019 19:29
274
275
**Assisting Mentors**<br>
276
[Jaskirat Singh](https://github.com/jaskirat2000)
277
January 10, 2019 19:29
278
------------
279
January 7, 2019 02:29
280
## Reconciling rhythm with pitch in Music Blocks widgets
281
**Selected**<br>
282
Sparsh Agarwal. [Blog](https://medium.com/@sparshagarwal205).
January 7, 2019 02:09
284
**Prerequisites**<br>
285
- Experience with JavaScript
286
- Some UX experience
287
- Some experience of working on [Music
February 21, 2019 09:23
288
Blocks](https://github.com/sugarlabs/musicblocks) or [Turtle
289
Blocks](https://github.com/sugarlabs/turtleblocksjs)
January 7, 2019 02:09
290
January 7, 2019 02:29
291
**Description**<br>
January 7, 2019 02:09
292
293
Music Blocks is written in JavaScript and runs in a web browser. It
294
introduces the concept of a note, which is a temporal quantum which
295
contains actions such as playing a pitch or drum sound or drawing some
296
graphic.
297
298
Music Blocks uses some widgets to help users create code that plays
299
sequences of notes. Some of these widgets, notably the phrase maker
300
and the music keyboard, are used to create code that generates phrases
301
that vary in pitch. Others, notably the rhythm maker, are used to
302
create code that generates variations in temporal rhythm.
303
304
You import rhythms generated by the rhythm maker into the phrase maker
305
in order to define the rhythm of the phrase being made. But once a
306
rhythm is imported, the rhythm cannot be changed from within the
307
phrase maker. You cannot import a rhythm into the music keyboard
308
widget and you cannot vary the rhythm when playing the keyboard. All
309
of these interactions are confusing to our users.
310
311
The gist of this project to reexamine the assumptions underlying the
312
segregation of rhythm from pitch in these widgets and to design and
313
implement a more unified experience. This could mean adding some of
314
the features of the rhythm ruler to the phrase maker and music
315
keyboard. Or perhaps just making it more intuitive how to import
316
rhythms. Step One is to come up with a design proposal.
317
318
**Suggested issues to work on:**<br>
January 7, 2019 02:29
319
- Any issue tagged with
320
[Widget](https://github.com/sugarlabs/musicblocks/labels/widget)
321
Label
January 7, 2019 02:09
322
323
**Coding Mentors**<br>
February 21, 2019 09:23
324
[Walter Bender](https://github.com/walterbender) and
January 7, 2019 02:09
325
[Devin Ulibarri](https://github.com/pikurasa)
326
327
**Assisting Mentors**<br>
February 21, 2019 09:23
328
[Sumit Srivastava](https://github.com/sum2it)
January 7, 2019 02:52
329
January 7, 2019 02:52
331
------------
332
333
## Export Music Blocks code to JavaScript
334
**Selected**<br>
335
Nobody.
336
January 7, 2019 02:52
337
**Prerequisites**<br>
338
- Experience with JavaScript
339
- Some experience of working on [Music
February 21, 2019 09:23
340
Blocks](https://github.com/sugarlabs/musicblocks) or [Turtle
341
Blocks](https://github.com/sugarlabs/turtleblocksjs)
January 7, 2019 02:52
342
343
**Description**<br>
344
345
Music Blocks is written in JavaScript and runs in a web browser. User
346
create programs in a snap-together block language which is inspired by
347
Logo. Music Blocks is a fork of Turtle Blocks JS, which is turn is a
January 29, 2019 20:00
348
derivative of [Turtle
February 21, 2019 09:23
349
Blocks](https://github.com/sugarlabs/turtleblocks), which is
January 7, 2019 02:52
350
written in Python.
351
352
One feature of the Python code is the ability to export to Python. In
353
other words, the block code can be exported as Python and run directly
354
by a Python interpreter. The required libraries, e.g., GTK, are
355
imported and the code itself reads as if the Turtle Blocks project
January 7, 2019 02:57
356
were written in Python. (There are a few anomalies, such as the use of
357
a dictionary for all of the Turtle Block boxes, although they are in
358
fact implemented as a dictionary internally.) See [Python
359
Export](https://wiki.sugarlabs.org/images/1/1a/Final_Report_on_Turtle_Blocks_Python_export.pdf)
360
for more details.
January 7, 2019 02:52
361
362
The goal of this project is to provide similar functionality for Music
363
Blocks: an export of a project to a JavaScript program (and HTML file)
364
that can run in a browser. The code should look and feel as much like
365
JavaScript as possible.
366
367
**Suggested issues to work on:**<br>
368
- There are not any issues specific to this project, but working on
369
some open bugs would be a good place to start in understanding the
370
code base. [Bug](https://github.com/sugarlabs/musicblocks/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Abug+)
371
372
**Coding Mentors**<br>
February 21, 2019 09:17
373
[Vaibhav Aren](https://github.com/vaibhavdaren) and
February 21, 2019 09:23
374
[Walter Bender](https://github.com/walterbender)
375
376
**Assisting Mentors**<br>
February 15, 2019 08:48
377
[Jaskirat Singh](https://github.com/jaskirat2000),
February 21, 2019 09:23
378
[Sumit Srivastava](https://github.com/sum2it), and
February 15, 2019 08:48
379
[Devin Ulibarri](https://github.com/pikurasa).
January 7, 2019 02:52
380
January 7, 2019 02:09
381
------------
382
January 7, 2019 01:50
383
January 23, 2019 22:09
384
## Expand Sugarizer Exerciser activity
385
**Selected**<br>
386
Avinash Agarwal. [Blog](https://medium.com/@aniketmathur).
January 23, 2019 22:09
388
**Prerequisites**<br>
389
390
- Experience with JavaScript/HTML5 development
391
- Experience with ReactJS framework development
392
393
**Description**<br>
February 17, 2019 22:38
394
Exerciser is a new Sugarizer activity in version 1.1 that allow users to create exercise and let other users play to this exercise.
January 23, 2019 22:09
395
This activity propose different templates (multiple-choice question, reordering a list of items, cloze text) and an editor to customize questions.
396
397
![](assets/exerciser_1.png)
398
399
Once created, the exercise could be played locally or shared on the network using Sugarizer presence. At the end of the exercise a graph give results for each participants.
400
401
![](assets/exerciser_2.png)
402
403
The Exerciser was requested by teachers from Sugarizer deployment in Saint-Ouen and was developed during [GSoC 2018](https://wiki.sugarlabs.org/go/Summer_of_Code/2018). The Exerciser activity was inspired by the [Learning Apps web site](https://learningapps.org/).
404
405
![](assets/exerciser_3.png)
406
407
**Project Task**<br>
408
The objective of this project is to expand features of the Exerciser activity. More precisely, expected features are:
409
February 17, 2019 22:38
410
- Allow user to integrate multimedia element (images, sounds, videos) for questions and answers. All multimedia elements will come from the Journal.
January 23, 2019 22:09
411
- Add new templates (matching pair, group assignment, free text input)
412
- Improve result screen to view detail result on each answer for each user
413
- Support access to a remote library of exercises.
414
February 17, 2019 22:38
415
These improvements should keep the activity very simple so even a child should be able to create an exercise and share it. Like all Sugarizer activity, Exerciser activity should adopt the Sugar UI, be responsive (work on any screen size), work with the keyboard and with the mouse (to support touch screen), use journal and use localization.
January 23, 2019 22:09
416
417
Technically speaking the Exerciser activity is wrote in Javascript using Sugar-Web framework in ReactJS.
418
419
**Fist step to start:**<br>
420
421
- Play with the Exerciser activity
422
- Complete the [Sugarizer activity development tutorial](https://github.com/llaske/sugarizer/blob/dev/docs/tutorial.md)
423
- Study the [source code](https://github.com/llaske/ExerciserReact) of the Exerciser activity, try to fix bug or propose improvement
424
- Study integration of Journal in an activity by looking source code of ([Paint](https://github.com/llaske/sugarizer/tree/dev/activities/Paint.activity), [Memorize](https://github.com/llaske/sugarizer/tree/dev/activities/Memorize.activity) or [Fototoon](https://github.com/llaske/sugarizer/tree/dev/activities/Fototoon.activity) activity) and doing [Tutorial step 7](https://github.com/llaske/sugarizer/blob/dev/docs/tutorial_step7.md)
January 23, 2019 22:09
425
426
427
428
**Coding Mentors**<br>
February 21, 2019 09:23
429
[Lionel Laské](https://github.com/llaske) and
430
[Michaël Ohayon](https://github.com/mikklfr) (via direct mail)
January 23, 2019 22:09
431
432
**Assisting Mentors**<br>
433
None.
434
January 23, 2019 22:09
435
------------
436
437
438
## Write activity for Sugarizer
439
**Selected**<br>
440
Ashish Aggarwal. [Blog](https://medium.com/@ashish09101998).
January 23, 2019 22:09
442
**Prerequisites**<br>
443
444
- Experience with JavaScript/HTML5 development
445
446
**Description**<br>
447
Write is a major application provided by the Sugar Learning Platform. Write serves as a basic text editing application for Sugar. Write allow text formatting on characters (Font change, Bold, Italic, Underline) and paragraphs (Center, Justify left or right) plus some other extended features (Arrays, images, …), save it as ODF file and export to RTF, PDF, TXT or HTML.
448
January 29, 2019 14:17
449
More about Write features [here](https://help.sugarlabs.org/write.html).
January 23, 2019 22:09
450
451
![](assets/write_1.png)
452
January 29, 2019 14:17
453
The Write activity is a port of [AbiWord](https://www.abisource.com/) word processing tool. Write is developed in Python and GTK+.
January 23, 2019 22:09
454
455
**Project Task**<br>
456
The objective of this project is to rewrite an equivalent of Write activity in pure JavaScript to include it in Sugarizer.
457
458
This new Write activity should provide:
459
February 17, 2019 22:38
460
- Text formatting on characters (font change, bold, italic, underline, foreground/background color, …)
461
- Text formatting on paragraphs (center, justify left or right, list, blockquote, …)
January 23, 2019 22:09
462
- Embedded Images
463
- Arrays
464
- Export content to an easily editable/printable format (RTF/ODF, PDF)
465
- Multi-user editing the same document
466
January 29, 2019 14:17
467
This new Write activity may rely on an existing web editor ([Quill](https://quilljs.com/), [TinyMCE](https://www.tiny.cloud/), [CKEditor](https://ckeditor.com), [webODF](https://webodf.org/), ...).
January 23, 2019 22:09
468
469
![](assets/write_2.png)
470
January 29, 2019 14:17
471
This new Write activity should provide unique Sugarizer features:
January 23, 2019 22:09
472
473
- Sugarizer look & feel: use of Sugar toolbar and palette
474
- Sugarizer storage: load/save content into the Journal
475
- Export feature: an easy way to export content to a file format editable in other tools (Word, Open Office, RTF)
476
- Print feature: an easy way to export content to a printable format (PDF)
477
- Network integration: integrate Sugarizer presence to share the activity on the network so multiple users could edit the document at the same time
478
- Multi-device support: should work on any browser (Chrome, Firefox, Safari) and any platform (Android, iOS, Windows, Linux, MacOS) supported by Sugarizer.
479
January 29, 2019 14:17
480
As with other Sugarizer activities, the new Write activity should be written using JavaScript and Sugar-Web library. Any JavaScript framework could also be use: jQuery, Vue.js, ReactJS, …
January 23, 2019 22:09
481
January 30, 2019 01:29
482
**First step to start:**<br>
January 23, 2019 22:09
483
484
- Test the existing Write activity in Sugar
485
- Complete the [Sugarizer activity development tutorial](https://github.com/llaske/sugarizer/blob/dev/docs/tutorial.md)
486
- Make a study on existing web editors: identify features of each and identify ways to export content to an editable/printable format.
487
488
489
490
**Coding Mentors**<br>
491
[Michaël Ohayon](https://github.com/mikklfr) and [Lionel Laské](https://github.com/llaske) (via direct mail)
January 23, 2019 22:09
493
494
**Assisting Mentors**<br>
February 2, 2019 13:30
496
497
## Colored desktop and activity icons
498
**Selected**<br>
499
Nobody.
500
February 2, 2019 13:30
501
**Prerequisites**<br>
502
- Extensive experience with Python and GTK3
503
- Experience with Sugar activities/toolkit
504
- Experience with user interface and graphics design (and SVG)
505
506
**Description**<br>
507
Sugar’s use of color and icons (described in detail here [HIG
508
color](https://wiki.sugarlabs.org/go/Human_Interface_Guidelines/The_Sugar_Interface/Colors)
509
and [HIG
510
icons](https://wiki.sugarlabs.org/go/Human_Interface_Guidelines/The_Sugar_Interface/Icons))
511
is functional but a bit tired when compared to modern desktops and
512
mobile systems.
513
514
This project is about redesigning the use of color in Sugar in order
515
to enable full-color icons for both the desktop itself and activities.
516
517
The primary role of color in the current icon design is to;
518
- Indicate whether or not an activity has been used
519
- Indicate whether or not an activity is being shared with another
520
Sugar user (the colors of the person who launches the activity show
521
up on the desktops of the people who join the activity.)
522
523
Fortunately, Sugar also support a mechanism for putting badges on
524
icons. An example is in the neighborhood view, where badges are used
525
to indicate which access points are active (See
526
[networkviews.py](https://github.com/sugarlabs/sugar/blob/master/src/jarabe/desktop/networkviews.py)).
527
528
We could use badges (See
529
[icon.py](https://github.com/sugarlabs/sugar-toolkit-gtk3/blob/master/src/sugar3/graphics/icon.py#L49))
530
to replace the functionality of color described above: for example, an
531
XO badge to indicate an activity has been used. And the color of that
532
badge could indicate collaboration. This would free up the icon itself
533
to take on any colors deemed suitable by the activity designer.
534
535
**Project Task:**<br>
536
- [ ] Add color functionality to the badges;
537
- [ ] Add badges in every instance where we currently use color: the
538
desktop, the journal, the neighborhood view and the activity
539
toolbar;
540
- [ ] Work with the design team to come up with new color icons for
541
all of the core Sugar toolbars, activities and activity toolbars
542
543
**Suggested issues to work on:**<br>
544
- There are not any issues specific to this project, but working on
545
some open bugs would be a good place to start in understanding the
546
code base.
547
548
**Coding Mentors**<br>
February 21, 2019 09:23
549
[Walter Bender](https://github.com/walterbender) and
February 2, 2019 13:30
550
[Rahul Bothra](https://github.com/pro-panda)
January 23, 2019 22:09
551
552
**Assisting Mentors**<br>
February 17, 2019 22:26
553
[Peace Ojemeh](https://github.com/perriefidelis) and
February 8, 2019 09:22
554
[Jaskirat Singh](https://github.com/jaskirat2000)
February 2, 2019 22:48
556
------------
557
558
## Improve Sugarizer Server Dashboard
559
**Selected**<br>
560
Nikhil Mehra. [Blog](https://medium.com/@nikhilmehra998).
February 2, 2019 22:48
562
**Prerequisites**<br>
January 23, 2019 22:09
563
February 2, 2019 22:48
564
- Experience with JavaScript/HTML5 development
565
- Experience with MongoDB
566
- Experience with node.js and EJS framework
567
568
**Description**<br>
569
Sugarizer Server Dashboard is an admin tool for administrators and teachers of a Sugarizer deployment. The dashboard is used to control and manage the work of learners and manage and analyze all activities on a Sugarizer Server.
570
571
572
![](assets/dashboard.png)
573
574
Wrote two years ago during [GSoC 2017](https://wiki.sugarlabs.org/go/Summer_of_Code/2017), some improvement was requested this year by teachers for the incoming Sugarizer deployment in eight schools in Saint-Ouen.
575
576
577
**Project Task**<br>
578
The objective of this project is to expand features of the Sugarizer Dashboard. More precisely, expected features are:
579
580
- Extend dashboard UI
581
- Provide sort by column on all views in Users/Journal/Activities/Classrooms screen
582
- Add size column on Journal views and allow to sort on it
583
- Add classroom counter in home page
584
- Add export/import to CSV feature for Users/Classrooms screen
585
- Improve Classrooms UI: integrate user icon, sort by name, …
586
- Allow running on mobile (full responsive UI)
587
- Integrate a simple tutorial (inspired by the one in Sugarizer)
February 17, 2019 22:38
588
February 2, 2019 22:48
589
- Create a new teacher profile
590
- Update API to allow a new type of profile named "teacher" with view on its classrooms only
591
- Add screens to handle teacher profile
592
- Update global view to handle teacher profile
593
- Build improvement
594
- Use build tools such as gulp, etc to minify and manage public resources
595
- Upgrade outdated EJS version
596
- Add scripting
597
- Create an initialization script to generate settings file and automate first admin creation
598
- Provide import/export scripts for Users/Classrooms
599
600
Some other features could be added to this list depending of feedbacks on the field (new schools deployed in March).
601
602
Technically speaking the Sugarizer Server is wrote in JavaScript with node.js using [EJS](https://ejs.co/) framework.
603
604
**Fist step to start:**<br>
605
606
- Complete the [Sugarizer activity development tutorial](https://github.com/llaske/sugarizer/blob/dev/docs/tutorial.md) to understand how Sugarizer work
607
- Install [Sugarizer Server](https://github.com/llaske/sugarizer-server/tree/dev) and dashboard
608
- Create different Sugarizer users and see how the dashboard trace activities and usage
609
- Study the [source code](https://github.com/llaske/sugarizer-server/tree/dev/dashboard) of dashboard, try to fix bug, propose improvement or start to implement improvement suggested here.
610
611
**Coding Mentors**<br>
February 21, 2019 09:19
612
[Tarun K. Singhal](https://github.com/tarunsinghal92) and
613
[Lionel Laské](https://github.com/llaske) (via direct mail)
February 2, 2019 22:48
614
615
**Assisting Mentors**<br>
February 20, 2019 16:24
616
[Pratul Kumar](https://github.com/Pratul1997)
January 23, 2019 22:09
617
618
------------
619
620
## Port Sugarizer activities to Sugar
621
**Selected**<br>
622
Nobody.
623
January 31, 2019 20:43
624
**Prerequisites**<br>
February 17, 2019 22:38
625
- Ability to write in programming languages like Python, GTK, JavaScript
January 31, 2019 20:43
626
627
628
**Description**<br>
February 17, 2019 22:38
629
The main aim of this project is to port [sugarizer activities](https://github.com/llaske/sugarizer/tree/dev/activities) back to Sugar Desktop.. Among these sugarizer activities, we also intend to Port Scratch and music blocks to Sugar Desktop.
630
[Scratch](https://scratch.mit.edu/) is a block based visual programming language for kids. Scratch 3.0 was created with HTML 5 using [Google’s blocky](https://developers.google.com/blockly/). Scratch 3.0 is an activity in Sugarizer, and can work offline. Scratch 3.0 works in the Browse activity in Sugar, but is online.
January 31, 2019 20:43
631
February 17, 2019 22:38
632
-We expect the [Sugarizer Scratch activity](https://github.com/llaske/sugarizer/tree/dev/activities/Scratch.activity) to be used. This was ported by [Emily Ong](https://github.com/EmilyOng/Scratch.activity) and has been improved since by [Lionel Laské](https://github.com/llaske). Also needed may be the latest version of [Scratch 3.0](https://github.com/LLK/scratch-gui).
January 31, 2019 20:43
633
634
-We expect the [Sugar web activity library `sugar-web`](https://github.com/sugarlabs/sugar-web) will need fixes backported from Sugarizer.
January 31, 2019 20:43
635
636
-We expect the [Sugar Toolkit for GTK+ 3 `sugar-toolkit-gtk3`](https://github.com/sugarlabs/sugar-toolkit-gtk3) may need new fixes.
January 31, 2019 20:43
637
638
Suggested issues to work on:
639
640
- backport the changes from Sugarizer to `sugar-web`, such as in [`env.js`](https://github.com/sugarlabs/sugar-web/blob/master/env.js#L49),
641
- Suggesting or adding features, fixing bugs, or releasing activities will help you to gain experience Suggesting or adding features, fixing bugs, or releasing activities may help you to gain experience.
January 31, 2019 20:43
642
643
Steps to take:
644
1. [Setup a Development Environment](https://github.com/sugarlabs/sugar/blob/master/docs/development-environment.md)
February 17, 2019 22:38
645
2. Fix all [issues](https://github.com/sugarlabs/sugar-web/issues) listed on the sugar-web repository
January 31, 2019 20:43
646
3. Fix [sugar-web](https://github.com/sugarlabs/sugar-web) and make sure it works.
647
4. Test some [Sugarizer activities](https://github.com/llaske/sugarizer/tree/dev/activities) on Sugar to make sure sugar-web is working.
648
5. Investigate the current [Scratch 3.0 port](https://github.com/llaske/sugarizer/tree/dev/activities/Scratch.activity) on Sugarizer and play around it.
649
6. Fix the user media permission request handing in [Browse](https://github.com/sugarlabs/browse-activity/issues/85) activity
650
7. Get [Music Blocks](https://github.com/sugarlabs/musicblocks) working in Sugar Web
651
8. Get [Scratch](https://github.com/LLK/scratch-gui) working in Sugar Web
652
9. Make Scratch port as a native activity.
653
10. Make Music Blocks port as a native activity
January 31, 2019 20:43
654
655
656
February 21, 2019 09:18
657
**Coding Mentors**<br>
February 17, 2019 22:26
658
[James Cameron](https://github.com/quozl) and
659
[Iqra Mohammad](https://github.com/iqraceme) (via mailing list)
January 31, 2019 20:43
660
February 21, 2019 09:18
661
**Assistant Mentors**<br>
662
[Samson Goddy](https://github.com/samswag)
663
February 18, 2019 16:53
664
------------
665
February 21, 2019 09:18
666
## Create a Sugar Dashboard
667
**Selected**<br>
668
Hrishi Patel. [Blog](https://medium.com/@hrishipatel99).
February 18, 2019 16:53
670
**Prerequisites**<br>
February 18, 2019 18:59
671
- Extensive experience with Python and GTK
672
- Demonstrable skill in coding/bug fixing Sugar activities
February 21, 2019 09:18
673
- Demonstrable skill with user-interface design
February 18, 2019 18:59
674
- Demonstrable skill with data visualizarion
February 18, 2019 16:53
675
676
**Description**
677
February 19, 2019 15:39
678
Dashboard - This involves developing an app that provides at-a-glance
February 18, 2019 16:53
679
views of key performance indicators relevant to Sugar users, more like
680
a heatmap of the user’s progress (e.g last activity worked on, last
681
project opened etc.)
682
February 19, 2019 15:39
683
“Tamagotchi” - This involves designing a widget that can substitute for
February 18, 2019 16:53
684
the XO in the center of the screen that gives the user an overall
685
health condition of your computer e.g battery status, available disk
686
space, etc. It would provide an at-a-glance indication of machine
687
status without having to go to the control panels or the
688
Frame. Ideally it would still look like the XO, but have some
689
personality.
690
691
Journal - An app that does what the Journal does but is also able to
692
be extended by the end user (It is relatively easy for an end user to
693
modify an app compared to the Sugar desktop.) Features might include
694
integration of the Portfolio activity functionality and integration of
695
the dashboards described above.
696
697
The work involved in this project would be:
February 19, 2019 15:39
698
- Work with mentors to come up with flow design for the dashboard
February 21, 2019 09:18
699
- Identify potential places for improvement on Journal
February 18, 2019 19:22
700
- Identify useful features to highlight in a dashboard
February 18, 2019 16:53
701
- Identify useful system-status information for the “Tamagotchi” display
702
- Write the code (Python) to implement these designs
703
704
Suggested Issues to work on:
February 18, 2019 18:59
705
- Fixing issues in Python activities
706
- Adding new features in Python activities
707
- Creating new Python activities
February 18, 2019 16:53
708
February 18, 2019 19:22
709
**Coding Mentors:**
March 16, 2019 17:49
710
[Walter Bender](https://github.com/walterbender),
711
[Rahul Bothra](https://github.com/pro-panda) and
712
[Ibiam Chihurumnaya](https://github.com/chimosky)
February 18, 2019 16:53
713
February 18, 2019 19:22
714
**Assistant Mentors**<br>
715
[Peace Ojemeh](https://github.com/perriefidelis) and
716
[Jaskirat Singh](https://github.com/jaskirat2000)
January 31, 2019 20:43
717
March 6, 2019 15:32
718
------------
719
720
## Add Bluetooth support to Sugar
721
**Selected**<br>
722
Nobody.
March 6, 2019 15:32
723
724
**Prerequisites**<br>
725
- One or more spare systems with a Bluetooth host controller interface,
726
- Bluetooth devices including keyboard, mouse, speakers, and headset,
727
- Experience with Python, DBus, GNOME, and device access bindings provided by [PyGObject](https://lazka.github.io/pgi-docs/),
728
729
**Description**<br>
730
[Sugar](https://github.com/sugarlabs/sugar) requires a wired keyboard and mouse. Sugar is a desktop shell. Bluetooth is available in other desktop shells, the most notable are [GNOME](https://gnome.org/) and [KDE](https://kde.org/). Let's add Bluetooth support to Sugar.
731
732
There are two user experiences to consider;
733
734
- searching for, pairing, and unpairing, with the [_My Settings_](https://help.sugarlabs.org/en/my_settings.html) or control panel in Sugar,
735
736
- indicating status with the device icons in the [_Frame_](https://help.sugarlabs.org/en/frame.html).
737
738
You must have one or more notebook, laptop or desktop computers on which you will run Sugar _natively_, without using virtual machines. They will be needed for the duration of the project. This is critical, because that's how Sugar is intended to be run on systems with Bluetooth.
739
740
You should have a collection of Bluetooth devices you can use to test with. Sharing your devices with other people, or your main computer, will slow you down. You might buy second-hand devices and sell them after the project.
741
742
**Project Task Checklist**<br>
743
_(in chronological order)_
744
- Define requirements (secure pairing with keyboards and mice, pairing with speakers and headsets, unpairing),
745
- Define acceptance criteria (successful use of devices on Fedora 30 and Ubuntu 18.04),
746
- Reverse engineer GNOME or KDE Bluetooth user service applications or applets,
747
- Evaluate license compatibility,
748
- Add _My Settings_ control panel for Bluetooth, showing scanned devices, offering to pair, and unpair,
749
- Add _Frame_ icons for paired devices,
750
- Change _Help_ activity user documentation,
751
- Release changes for testing by other developers,
752
- Coordinate testing, receive reports, and fix bugs.
753
754
**Coding Mentors**<br>
755
[James Cameron](https://github.com/quozl) (via mailing list) (disclosure; James works for One Laptop per Child, a non-profit supplying laptops with Bluetooth)
March 6, 2019 15:32
756
757
**Assisting Mentors**<br>
758
None.
759
760
------------
761
762
# Administrative notes
763
764
Above are a list of ideas we've planned for GSoC 2019 projects.
765
If you have any ideas which can be useful to us, but are not in the
766
list, we'd love to hear from you. You need not be a potential
767
student or a mentor to suggest ideas.
768
769
* [Criteria for Ideas](#criteria-for-ideas)
770
* [Coding Mentors](#coding-mentors)
771
* [Assisting Mentors](#assisting-mentors)
772
* [Everyone Else](#everyone-else)
773
* [Suggested Issues](#suggested-issues)
March 29, 2019 15:08
774
775
## Criteria for Ideas
776
1. Does it fill an empty pedagogy niche in the activity set for Sugar
777
or Sugarizer,
778
2. Does it increase quality of our software products (Sugar, activities,
779
Music Blocks, or Sugarizer),
780
3. Does it _not_ involve any project infrastructure, e.g. not another
781
app store, web site, or developer landing page,
782
4. Do we have a developer _now_ who would be willing and able to do it
783
if a student was not available, and who can _promise_ to do it if a
784
student is not selected; these are shown as a _coding mentor_,
785
786
## Coding Mentors
787
For each idea, we must have offers from one or more _coding mentors_
788
willing and able to assist students with coding questions.
789
790
Requirements for a _coding mentor_ are a demonstrated coding ability
791
in the form of contributions of code to Sugar Labs.
792
793
Mentors for a project will be assigned after proposals are received.
794
795
## Assisting Mentors
796
For each idea, we may have offers from mentors _who do not code_
797
willing to assist students in various other ways, such as gathering
798
requirements, visual design, testing, and deployment; these are shown
799
as an _assisting mentor_.
800
801
The only requirement for an _assisting mentor_ is _knowledge of the
802
project_.
803
804
Mentors for a project will be assigned after proposals are received.
805
806
## Everyone Else
807
Everyone else in Sugar Labs may also be involved with these projects, through mailing lists, Wiki, and GitHub.
808
809
The difference between a _mentor_ and _everyone else_, is that a
810
_mentor_ is obliged to respond when a student has a question, even if
811
the answer is "I don't know."
812
813
When a _mentor_ receives a question for which the best forum is
814
_everyone else_, then they are to respectively redirect the student to
815
ask _everyone else_. See
816
[Be flexible](https://github.com/sugarlabs/sugar-docs/blob/master/src/CODE_OF_CONDUCT.md#be-flexible)
817
and
818
[When you are unsure, ask for help](https://github.com/sugarlabs/sugar-docs/blob/master/src/CODE_OF_CONDUCT.md#when-you-are-unsure-ask-for-help)
819
in our Code of Conduct.
820
821
## Suggested Issues
822
823
For some ideas, there is a list of 'Suggested issues to work on'.
824
These will help you to get familiar with the project. The more you
825
work on these issues, the more experienced you will be for the
826
project. However, this is not a strict list. You _should_ try and
827
explore other issues as well.