forked from Catrobat/catrobat.github.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathideas_page.html
More file actions
335 lines (291 loc) · 17.8 KB
/
ideas_page.html
File metadata and controls
335 lines (291 loc) · 17.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Ideas Page</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1>Catrobat</h1>
<p>A visual programming language<br/> and set of creativity tools<br/> for smartphones, tablets,<br/> and mobile browsers</p>
<p class="view"><a href="http://developer.catrobat.org/">Home</a></p>
</header>
<section>
<h2>Ideas Page for Google Summer of Code 2013</h2><br />
<strong>Welcome, <br />we officially present our project ideas for this years GSoC.</strong>
<br />17 March 2013</p>
<p>
<strong><u>General knowledge prerequisites for all projects</u><br />
<i>JUnit and Robotium for test-driven development on Android devices (Catroid and Paintroid), Phpunit and Selenium for test-driven development of Web-related projects, Git (revision control) for all projects
</i></strong>
</p>
<p>
<h3> Projects </h3>
<strong>Title:</strong> Catrobat textual language representation <br />
<strong>Brief explanation:</strong>
<p>
The serialized version of a Catrobat program currently is a somewhat unwieldy but easily serializable and efficiently parsable XML text. Reasons are mostly historic due to the Android roots of our project and the employed serialization engine, but we now also have Catrobat interpreters for the iOS, Windows Phone 8, and HTML5 platforms and there are no real reasons to stick with the current XML format.
</p>
<strong>Expected results:</strong>
<p>A clean programming language syntax design for Catrobat.
Inspiration sources: something like Python or YAML syntax adapted to Catrobat. Necessary: Specification by example using Cucumber/Gherkin. A serializer and deserializer reference implementation for Android, iOS, Windows Phone 8, or our HTML5 implementation (can be partial). A syntax validator (also partial). Every piece of code written in an agile, in particular test-driven development style.
</p>
<strong>Mentor:</strong> <i>Wolfgang Slany, Annemarie Harzl</i><br />
<hr>
<strong>Title:</strong> Layers in Paintroid<br />
<strong>Brief explanation:</strong>
<p>
Introduce Layers to Paintroid. Paintroid should be able to handle images with several layers and provide a easy to use interface.
</p>
<strong>Expected results:</strong>
<p>
Add/Remove/Import/Export Layers in Paintroid. E.g. Export layers into
catroid where each layer represents a look. Or import the different objects of a stage as a
multilayer image in paintroid.
</p>
<strong>Mentor:</strong> <i> Stefan Galler (irc: galstc05) </i><br />
<hr>
<strong>Title:</strong> Improved History in Paintroid<br />
<strong>Brief explanation:</strong>
<p>
In the current Paintroid version the history of an image project
is simply stored in a list of commands. These commands are executed every time
a operation is made. Because this is very time consuming an algorithm which is using
only the actual difference between to steps of the image manipulation would be far
more performant.
</p>
<strong>Expected results:</strong>
<p>
An algorithm is designed and implemented which creates a history
that allows to undo/redo changes more efficient. This history can also be used for creating
autosave and/or project files.
</p>
<strong>Mentor:</strong> <i> Stefan Galler (irc: galstc05)</i><br />
<hr>
<strong>Title:</strong> Add a (time capsule like) history to Catroid<br />
<strong>Brief explanation:</strong>
<p>
At first we want you to add simple undo / redo functionality into Catroid.
This basically means that user mistakes in the scripts, sounds, costumes shall be un- or re-doable.
Imagine it like a typical Undo/Redo Button you find in nearly all of your IDEs.
</p>
<strong>Expected results:</strong>
<p>
This task is split up by the mentor so that you will always have to implement
one small task after the other. At the end of GSoC undo and redo should be fully implemented,
tested and integrated into the Catroid master branch. Also there should be a history log where
the user can see his or her changes with exact timestamps.
</p>
<strong>Mentor:</strong> <i> Sercan Akpolat(twitter/irc: sercanakpolat)</i><br />
<hr>
<strong>Title:</strong> Catroid as a Wireless Human Interface Device (gamepad, mouse, keyboard)
for PCs develop own gamepad for pcs<br />
<strong>Brief explanation:</strong>
<p>
The idea behind it is that your should be able to program your individual
gamepads for your average PCs. Communication of the Android device and the PC shall be done
via Bluetooth and/or WiFi. Imagine a game you like. Now imagine you could write a gamepad,
which lets you create a key which clicks on a special key-combination, e.g. ctrl+alt+entf.
So you press one key on your self-created gamepad and it sends three key-commands to the PC.
</p>
<strong>Expected results:</strong>
<p>
This task is split up by the mentor so that you will always have to implement
one small task after the other. At the end of GSoC a the project has to be fully implemented,
tested and integrated into the Catroid master branch. The solution should be simple to use and
adequate for children. KISS is very important here.
</p>
<strong>Mentor:</strong> <i> Sercan Akpolat(twitter/irc: sercanakpolat)</i><br />
<hr>
<strong>Title:</strong> Brick cut, copy and paste functionality across projects + smart multiselection move<br />
<strong>Brief explanation:</strong>
<p>
The main goal is to implement copy, cut and paste functionality for sounds,
looks and bricks. These functionality should be provided across projects in a so-called "rucksack".
This rucksack should be able to handle all these different kinds of objects (sounds, looks..) and be
easily maintainable. If there is enough time also a smart multiselection move functionality for bricks is planned.
</p>
<strong>Expected results:</strong>
<p>
At least the copy/cut/paste functionality should be fully implemented, tested and integrated
into the Catroid master branch. The smart brick multiselection move would be a nice feature if there is enough time.
</p>
<strong>Mentor:</strong> <i> Stefan Jaindl(irc: jaindl.stefan)</i><br />
<hr>
<strong>Title:</strong> Scratch to Catroid converter<br />
<strong>Brief explanation:</strong>
<p>
Write a converter
for [http://scratch.mit.edu/ Scratch] Programs to Catroid programs. This involves, but is not limited to, decoding
the projects from Scratch, converting them to Catroid programs, adding Bricks where necessary (we currently lack
some very often used Bricks) and automating the process.
</p>
<strong>Expected results:</strong>
<p>
You get a Scratch Program from [http://scratch.mit.edu/ here] and convert it
into a Catroid Program so that it can be played and edited in Catroid. Of course there will be limitations as, e.g.,
Android devices typically do not have hardware keys which are often used in Scratch projects.
</p>
<strong>Mentor:</strong> <i> Anton Rieder (IRC: aried3r)</i><br />
<hr>
<strong>Title:</strong> Cut down test run time to 30 minutes or less<br />
<strong>Brief explanation:</strong>
<p>
Our testruns, including UI Tests, are nearing two hours of runtime. As for everyone, time is a
valuable resource so we want to cut down the runtime to at least half an hour, preferably less.
The way we think this could be achieved would be by using Robolectric 2
(http://pivotal.github.com/robolectric/, https://plus.google.com/108284392618554783657/posts/hRgHxsdR7xc)
maybe in addition with FEST Android (http://square.github.com/fest-android/).
(Automatic) Parallelization is another possibility.
For example, not all UI Tests need to be run on a hardware device and could be run in parallel on multiple Emulators.
Splitting the tests into Test-Sets would be one task here.
</p>
<strong>Expected results:</strong>
<p>
1) The complete runtime of all test projects takes half an hour or less.
2) Emma code coverage is still the same.
</p>
<strong>Mentor:</strong> <i> David R., Anton Rieder (IRC: aried3r)</i><br />
<hr>
<strong>Title:</strong> Catroid as a typeless programming language<br />
<strong>Brief explanation:</strong>
<p>
Basically all variables and constants should be able to hold any kind of data type, like in BYOB
or, e.g., the programming Lisp
</p>
<strong>Expected results:</strong>
<p>
Variables as well as parameter fields of bricks should be able to held, e.g., numbers, texts, lists,
and later also scripts, images, sounds, etc. Lists should be nestable and individual cells of lists should be able to be
composed of different data types. E.g., a brick like Say < + <123> <-1> > should be equally usable as Say
<<concatenate <177> < liters>>, without the need to somehow specify whether the parameter is a number or a
string or a list etc. Casting should be done automatically as much as possible, e.g., in the example, the number 177
should be automatically convert into a string when used in the concatenate example, and as a number when used in,
e.g., <+ <1> <<concatenate <2> <4>>> which should be equal to 25. No special indicators such as quotes for
strings should be needed.
</p>
<strong>Mentor:</strong> <i> Stefan Jaindl, Wolfgang Slany</i><br />
<hr>
<strong>Title:</strong> Recommender system functionality (CATROID-WEB)<br />
<strong>Brief explanation:</strong>
<p>
Users should be able to get suggestions what other projects they might be interested in.
</p>
<strong>Expected results:</strong>
<p>
Users should have more support in discovering projects they might be interested in.
</p>
<strong>Mentor:</strong> <i> Alexander Gütler</i><br />
<hr>
<strong>Title:</strong> Add a Tag System (CATROID-WEB)<br />
<strong>Brief explanation:</strong>
<p>
In order to find projects more easily, a tag system should be integrated into the website.
For that we need to integrate three things. Firstly, on the details page corresponding tags of a project should be displayed.
Additionally logged in users should be able to add new tags. Secondly, we need to handle tags for newly uploaded projects.
And finally we need to integrate tag support into our search function. Displaying a tag cloud would also be great.
</p>
<strong>Expected results:</strong>
<p>
Users should be able to add tags to their project and search for specific tags.
</p>
<strong>Mentor:</strong> <i> Alexander Gütler</i><br />
<hr>
<strong>Title:</strong> Separation IDE/Interpreter<br />
<strong>Brief explanation:</strong>
<p>
At the moment, the Catroid IDE (think: GUI) and the Catroid Interpreter
(think: Programm Logic) are very entangled. Our goal is to clearly separate those two components
and have them communicate via an extensible, well defined, well designed API. One of the first
steps will be to determine what belongs to the IDE and what to the Interpreter. Ultimately,
by having the API as a contract we hope that writing different UIs against our Interpreter will
be made possible, but also rewriting the Interpreter for other platforms will be made easier,
as long as it strictly implements the API.
</p>
<strong>Expected results:</strong>
<p>
The Catroid IDE and Catroid Interpreter are separate from each other,
a well designed and documented API for communication of the Interpreter with the IDE and
vice versa is defined.
</p>
<strong>Mentor:</strong> <i> Anton Rieder (IRC: aried3r)</i><br />
<hr>
<strong>Title:</strong> HTML5 IDE<br />
<strong>Brief explanation:</strong>
<p>
The HTML5 player for Catroid projects is already fairly advanced.
The next step is to add an IDE similar to the Catroid IDE for Android.
</p>
<strong>Expected results:</strong>
<p>
A programming environment for Catroid projects that entirely runs in a browser.
</p>
<strong>Mentor:</strong> <i> Thomas Rosmarin</i><br />
<hr>
<strong>Title:</strong> Simple object recognizer<br />
<strong>Brief explanation:</strong>
<p>
We have already managed to use [OpenCV http://opencv.org] on the phone to
do things like face localization from a video source (in our case the quadcopter video camera).
Now we want more, and something that should be easy for kids, as follows:
There should be a way for kids to teach Catroid to recognize a certain object, e.g., a standard coke bottle,
whenever a certain brick is executed.
</p>
<strong>Expected results:</strong>
<p>
A kid should be able to add a new brick, e.g., 'recognize' and when is pressed,
a new name can be entered, e.g., "coke bottle". Then Catroid should go into a training mode
(with appropriate instructions on the screen, e.g., "move the camera randomly around the object under good lighting
conditions while always focusing on the object that should be recognized until Catroid makes a beep sound.
Try to remove all other objects and to use a neutral background."). Finally, whenever the brick is used in the
Catroid project, the coordinates and the width and height of all coke bottles that are recognized by Catroid on
the current video stream should be given back in a specific list.
</p>
<strong>Mentor:</strong> <i> Thomas Rosmarin</i><br />
<hr>
<strong>Title:</strong> Catroid Tablet version<br />
<strong>Brief explanation:</strong>
<p>
Tablets are getting more and more popular we want to use that trend. You'll have to work
intensively on an appropriate UI, which should be easy to use. You'll need to create an Tablet User Interface and
you'll have to work extensively with our Usability and Design team.
</p>
<strong>Expected results:</strong>
<p>
Catroid version for tablets, new UI and and optimized for screens bigger than 7"
(target is e.g. Nexus 10, Galaxy Tab 10N, and so on)
</p>
<strong>Mentor:</strong> <i> Gerald Wagner</i><br />
<hr>
<strong>Title:</strong> Enable to create simple multiplayer games (or other apps that need to communicate)<br />
<strong>Brief explanation:</strong>
<p>
Interact between the stage-part of two or more smartphones over bluetooth, wifi,
or internet connection, Shared user variables (broadcast brick or blackbord type message system with dedicated server)
</p>
<strong>Expected results:</strong>
<p>
Broadcast-messages between two or more smartphones in Catroid
</p>
<strong>Mentor:</strong> <i> Gerald Wagner</i><br />
<hr>
</p>
<p>
<strong>Your own project ideas ... </strong><br />
<p>
Please do not hesitate to bring forward your own ideas and discuss them with the Catroid team members at #catroid on Freenode or by contacting us via catrobat@googlegroups.com!
</p>
</p>
</section>
</div>
<script src="javascripts/scale.fix.js"></script>
</body>
</html>