forked from Catrobat/catrobat.github.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gsoc_2021_ideas_page.html
280 lines (232 loc) · 19.9 KB
/
gsoc_2021_ideas_page.html
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
<!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://www.catrobat.org/">Home</a>
</p>
<p class="view">
<a href="http://developer.catrobat.org/">Developers' Home</a>
</p>
<p class="view">
<a href="http://developer.catrobat.org/first_steps">First steps into Catrobat</a>
</p>
<p class="view">
<a href="http://catrob.at/pc">Find Pocket Code on Google Play</a>
</p>
<p class="view">
<a href="http://catrob.at/PCios">Find Pocket Code on the App Store</a>
</p>
<p class="view">
<a href="http://catrob.at/plus"><img src="googleplus.png" height="20px"/></a> <a href="http://catrob.at/fb"><img src="facebook.png" height="20px"/></a> <a href="http://catrob.at/pctwitter"><img src="twitter.png" height="20px"/></a> <a href="http://catrob.at/youtube"><img src="youtube.png" height="20px"/></a> <a href="http://catrob.at/mailinglist"><img src="google-group.png" height="20px"/></a> <a href="http://catrob.at/github"><img src="github.png" height="20px"/></a> <a href="mailto:[email protected]"><img src="mail.jpg" height="20px"/></a>
</p>
</header>
<section>
<h2>Ideas Page for Google Summer of Code 2021</h2>
<br />
<strong>Welcome,
<br />
we officially present our project ideas for this year's Google Summer of Code.</strong>
<br />
Last Updated: 17 Feb 2021</p>
<p>
<strong><u>General information about the ideas</u>
<br />
<i>These ideas are just some topics we came up with, where currently nobody is working on. However, Catrobat is a project with a wide range of possibilities and we're aware of our blindspots: So let's live the spirit of Open Source and come up with improvements (e.g., new features, extensions, ...) that are related to the project and in which you're interested in. We do have many senior contributors who would be happy to mentor such a project. Don't be shy and check out the last point on the list: <a href="#youridea">Your idea</a>!</i></strong>
</p>
<p>
<strong><u>General knowledge prerequisites for all projects</u></strong>
<ul>
<li>Knowledge in the usage of Git and GitHub</li>
<li>Basic knowledge in the concepts of software testing (e.g., test doubles) and test-driven development</li>
<li>Basic knowledge in app development (for Android and iOS projects)</li>
<li>Java, JUnit, Mockito, Robotium and Espresso for Android development</li>
<li>Swift and Objective C for iOS development</li>
<li>Also please check that you have the proper hardware for the development (e.g., a Android/iOS smartphone for testing, Mac for iOS development)</i>
</ul>
</p>
<p>
<strong><u>Your application</u></strong>
<br />
Please find the mandatory template for the application and additional information on <a href="https://catrob.at/gsoc21application">this shared Google Doc</a>.
</p>
<hr />
<p>
<h3>Overview:</h3>
<ul>
<li>
<a href="#idea_1">Awesome Demo Game Project</a>
</li>
<li>
<a href="#idea_2">Pocket Code for Android: Support for Particle Physics in Catrobat</a>
</li>
<li>
<a href="#idea_3">Pocket Code for Android: Search functionality for bricks in Pocket Code</a>
</li>
<li>
<a href="#idea_4">Pocket Code for Android: HMS API Machine Learning and AI support</a>
</li>
<li>
<a href="#idea_5">Pocket Code for Android: Room integration</a>
</li>
<li>
<a href="#idea_14">Pocket Code for Android: Merge Feature</a>
</li>
<li>
<a href="#idea_15">Pocket Code for Android: Refactoring and rewriting production code and tests to Kotlin</a>
</li>
<li>
<a href="#idea_6">Pocket Paint for Android: Hide the top and bottom bars, and make the drawing surface full screen by default</a>
</li>
<li>
<a href="#idea_7">Pocket Paint for Android: Refactoring tests and functionality to Kotlin</a>
</li>
<li>
<a href="#idea_8">Pocket Paint for Android: Erase background tool (make it transparent more easily)</a>
</li>
<li>
<a href="#idea_9">Pocket Paint for Android: Add a feature that allows a user to see a zoomed in view of the area beneath his finger while drawing</a>
</li>
<li>
<a href="#idea_10">Pocket Paint for Android: Additional brush options</a>
</li>
<li>
<a href="#idea_11">Pocket Code for iOS: Support for Catrobat Language version 0.994 - 0.99992</a>
</li>
<li>
<a href="#idea_12">Unified Catrobat Language Brick Syntax</a>
</li>
<li>
<a href="#idea_13">Embroidery Robot Programming</a>
</li>
<li>
<a href="#youridea">Your idea</a>
</li>
</ul>
</p>
<p>
<h3>Projects</h3>
<hr />
<h3><a id="idea_1">Awesome Demo Game Project</a></h3>
<p>Spend the whole GSoC time developing and designing one tutorial game for coding using the Luna&Cat IDE app, i.e., programming in the Catrobat visual programming language. The game must be playable both on a phone as well as when cast from the phone to a smart TV.</p>
<p>The game should be strongly inspired by a hugely popular recent 2D game, your own suggestions of popular games are highly welcome. You may also get inspiration by search for lists of the <a href="https://www.google.com/search?q=best+OR+popular+2d+games">best OR popular 2d games.</a> </p>
<p>If you have your own original idea about a game, please feel free to suggest it. Note, however, that the focus in GSoC should be on coding, not story design. Also, reusing existing already successful ideas will tremendously increase the probability that the game will be popular, and allow you to get much further in its implementation. Also note that the game will be published under Catrobat’s licenses as described in detail on <a href="https://catrob.at/licenses">https://catrob.at/licenses</a> and that the game will thus become part of the Catrobat FLOSS project’s source code. Thus, all artwork, sounds, character names etc must be compatible with our licenses, i.e., freely publishable under our licenses, the AGPL version 3 and CC BY-SA 4.0, or under a compatible, possibly even freer license such as CC0. </p>
<p>The artwork, sound effects, and background music must also be of high quality and high resolution, but do not have to be necessarily have been created originally by yourself, as long as the rights are compatible with our licenses. </p>
<p>The development of the game may possibly also be a community effort, but that’s up to you. This means that if you want, you may involve a team of people who want to work together with you on the game, either coding extensions or additional levels, contributing media assets, testing, creating promotion videos of it, etc. How you put together your team is entirely up to you, and you alone are responsible for the recruitment of and coordination within your team. Some Catrobat games have been created by large crowds. You and your team working together on the game would be perfectly fine and welcome, as long as you by yourself spend the full GSoC period working 100% on it too, and you do the main part of the coding, since Google wants GSoC projects to basically be single developer coding subprojects. However, most FLOSS projects are community efforts, and collaboration has always been one of the tenets of such projects. Also note that there will be no T-Shirts etc from Google for the other members of your team, so all contributions by other team members must be motivated intrinsically, or by additional means left to your discretion. </p>
<p>In summary, this GSoC project’s game should become an incredibly awesome & amazing demo game that showcases what kind of mind boggling games can be created with Pocket Code. </p>
<p>In your GSoC application, please add a link to a proof of concept for such a game in landscape mode (because it should be playable when cast to a TV screen) that you have created on your phone using Pocket Code. Also describe shortly your ideas for the story of the game you want to develop in your GSoC project. </p>
<p>Boyakasha!</p>
<p />
<hr />
<h3><a id="idea_2">Pocket Code for Android: Support for Particle Physics in Catrobat</a></h3>
<p>The current version of Pocket Code doesn't have support for particle physics. This project proposes to implement a particles system (using libGDX particles library) which would allow the addition of smoke, fire, and other such particle effects in the games! The visibility, position, type, and other such properties of the particles could be controlled using the new "particles" bricks that will be added as part of the project!</p>
<hr />
<h3><a id="idea_3">Pocket Code for Android: Search functionality for bricks in Pocket Code</a></h3>
<p>In the current version of Pocket Code, users have to manually click and scroll through all brick categories and bricks to find and add the desired brick to their project. Therefore a brick search functionality will be implemented which enables the user to search through all available bricks in all brick categories. The matching bricks will be shown to the user and can be added to the project. This will provide a more improved programming flow for users of all skill groups. If there's time, a similar search & complete feature can also be added for reporter functions and sensors, and even variable or look names in the formula editor.</p>
<hr />
<h3><a id="idea_4">Pocket Code for Android: HMS API Machine Learning and AI support</a></h3>
<p>We need to support the HMS APIs where other APIs are not available. This concerns all computer vision (pose, face, hand, image, OCR etc), speech, and general machine learning APIs. Additionally, it might also be of interest for other services such as geolocation and/or augmented reality APIs.</p>
<hr />
<h3><a id="idea_5">Pocket Code for Android: Room integration</a></h3>
<p>Since the migration to Android Architecture Components has already started, the goal of this project is to integrate Room instead of SQLiteDatabase as a better approach for data persistence. This idea involves the following challenges:</p>
<ul>
<li>Initially, all the API responses need to be cached in order to reduce the number of connections to the server (especially Featured Projects and the Categories displayed on the main screen)</li>
<li>To continue, the structure of the projects (JSON instead of XML) needs to be improved</li>
<li>Showing and caching the user projects (local/on-server-stored projects) in the Projects screen which will give the user the control to modify/delete his projects from one place</li>
<li>Kotlin will be the only used language -- no more Java!</li>
</ul>
<hr />
<h3><a id="idea_14">Pocket Code for Android: Merge Feature</a></h3>
<p>Design and develop a feature for the Android version of Pocket Code that allows to merge two user projects into one, without duplicating scripts, objects, sounds etc that already exist in both projects. Similar to git merge, but for Catrobat user projects. Repeatedly merging the same project into itself should not increase the project's size. Think about how to handle different screen resolutions, orientations, etc, or how to treat conflicting variable names, correctly update remix graph data, etc.</p>
<hr />
<h3><a id="idea_15">Pocket Code for Android: Refactoring and rewriting production code and tests to Kotlin</a></h3>
<p>The current code base of Pocket Code is 8.8% in Kotlin and rest in Java. This project proposes to refactor and rewrite most of production code and tests to Kotlin, implementing all the modern features designed specifically to streamline mobile development resulting in safer and more maintainable code for future development.</p>
<hr />
<h3><a id="idea_6">Pocket Paint for Android: Hide the top and bottom bars, and make the drawing surface full screen by default</a></h3>
<p>Currently Menus and Options are shown by default in top and bottom bars, and the default zoom is smaller than the screen's drawing surface, resulting in lost space on the sides of the image. The goal is to have the already existing full screen functionality active by default and find an intuitive way to show menus only by fading in and out depending on whether the finger leaves or touches the screen.</p>
<hr />
<h3><a id="idea_7">Pocket Paint for Android: Refactoring tests and functionality to Kotlin</a></h3>
<p>Several parts of the project have already been refactored to use Kotlin, but there are still large parts that should be refactored, and reworked to use Kotlin instead of Java.</p>
<hr />
<h3><a id="idea_8">Pocket Paint for Android: Erase background tool (make it transparent more easily)</a></h3>
<p>The goal of this idea is to create a new tool that allows the user to select an area and erase the parts of the drawing surface outside the area, see similar tools in many picture manipulation programs.</p>
<hr />
<h3><a id="idea_9">Pocket Paint for Android: Add a feature that allows a user to see a zoomed in view of the area beneath his finger while drawing</a></h3>
<p>Currently Pocket Paint only has the basic brush and the spray can. The goal is to add additional brush options such as a watercolor brush, rubbing around existing color. Also, when drawing a little bit faster, the drawing line should be slightly smoothed. When drawing slowly, it should however be possible to draw without smoothing of the lines. Also, add an option in the brush settings that allows to turn off (and on again) antialiasing, independently of the width of the brush. Currently, antialiasing is only turned off if the width is set to 1.</p>
<hr />
<h3><a id="idea_10">Pocket Paint for Android: Additional brush options</a></h3>
<p>Currently Paintroid only has the basic brush and the spray can. The goal is to add additional brush options such as a watercolor brush, rubbing around existing color. Also, when drawing a little bit faster, the drawing line should be slightly smoothed. When drawing slowly, it should however be possible to draw without smoothing of the lines. Also, add an option in the brush settings that allows to turn off (and on again) antialiasing, independently of the width of the brush. Currently, antialiasing is only turned off if the width is set to 1.</p>
<hr />
<h3><a id="idea_11">Pocket Code for iOS: Support for Catrobat Language version 0.994 - 0.99992</a></h3>
<p>The iOS version of Pocket Code is currently supporting projects with a Catrobat Language up to version 0.993. Compared to Pocket Code for Android, this is a very old language version, released a few years ago. Hence, projects created with newer versions of Pocket Code for Android can not be opened and used on iOS. To take one step further into supporting the newest Catrobat Language versions, this project proposal is intended to implement the language versions 0.994 to 0.99992. This would allow Pocket Code for iOS to interpret tens of thousands more projects. In order to accomplish this, at least the following tasks have to be considered:</p>
<ul>
<li>The Android version of Pocket Code needs to be compiled for all different language versions in order to create sample XMLs for regression testing.</li>
<li>The XML parser needs to be adapted so that Pocket Code for iOS can interpret those XML versions.</li>
<li>The XML serializer needs to be adapted so that Pocket Code for iOS complies to Catrobat language version 0.99992.</li>
<li>Starting from language version 0.99992 all nested Bricks (e.g., Bricks of an "If Brick") will be stored as a tree structure. This involves major refactoring in the data model and the parser/serializer.</li>
<li>This task requires a lot of reverse engineering work since there is no XML schema available for those language versions</li>
<li>The focus of this project proposal should be on building up regression tests.</li>
</ul>
<hr />
<h3><a id="idea_12">Unified Catrobat Language Brick Syntax</a></h3>
<p>The goal is to develop a standalone Brick Library (own library/repository; mutually understandable by all major projects in the organization, which utilize the Catrobat Language and its bricks) as need for functionality in Catblocks and Catroweb.</p>
<p>Other objectives of this project are the streamlining of brick construction via Construction Patterns, which in turn will massively improve testability, maintainability of code and usability (on the programmers side, it will be easier to implement new bricks, and harder to make mistakes while doing so) and synchronizing Cross-Team Brick changes/updates and new bricks can easily be propagated throughout the whole organizational structure (with just 1x git pull) as well.</p>
<p>This includes the creation of a new Brick Definition Format, the transcription of all existing Bricks into the new Format, "teaching" the new format to Catblocks and Designing an Example Brick Creation Pattern for Pocket Code for Android for a first set of bricks as an extendable Proof of Concept.</p>
<hr />
<h3><a id="idea_13">Embroidery Robot Programming</a></h3>
<p>Spend the whole GSoC time developing huge Embroidery Designs using the Pocket Code IDE app, i.e., programming in the Catrobat visual coding language:</p>
<ul>
<li>If you have your own original idea about an embroidery design, please feel free to suggest it.</li>
<li>Note, however, that the focus in GSoC should be on coding.</li>
<li>This GSoC project’s Embroidery Design should become an incredibly awesome & amazing demo design that showcases what kind of mind-boggling embroidery designs can be created with Pocket Code.</li>
</ul>
<hr />
<p>
<a id="youridea"><strong>Your own project ideas ... </strong></a>
<br />
<p>In the last year we made the experience that you have many great ideas and knowledge! Catrobat is currently still focusing on refactoring and we're aware that there are many ways how to improve performance, reduce memory usage, make our services more stable and of course the code easier to maintain. We're sure you do have ideas how to achieve this, although we may have never heard of this approach before -> that's the great thing about Open Source! And well, that's also the experience we made at last year's GSoC - and we liked it!</p>
<p>Also new features or extensions for iOS and Android are welcome to be introduced to us. Help us to spread coding and Open Source!</p>
<p>Please do not hesitate to bring forward your own ideas and discuss them with our community on our mailing-list: <a href="http://catrob.at/mailinglist"><img src="google-group.png" height="20px"/> [email protected]</a>!</p>
</p>
</section>
</div>
<script src="javascripts/scale.fix.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o), m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-42270417-2', 'catrobat.org');
ga('send', 'pageview');
</script>
</body>
</html>