kivy/doc/sources/gsoc.rst

184 lines
7.1 KiB
ReStructuredText
Raw Normal View History

2014-02-09 03:56:00 +00:00
Google Summer of Code - 2014
2013-03-20 05:29:26 +00:00
============================
2014-02-13 04:32:56 +00:00
Kivy is hoping to participate in Google Summer of Code 2014.
This page showcases some ideas for gsoc projects and corresponding
guidelines to get students familiar with contributing towards the
kivy framework.
Requirements
------------
It is assumed that the incoming student be familiar with some basic
2014-02-13 09:47:57 +00:00
skills as highlighted here:
2014-02-13 04:32:56 +00:00
* Intermediate level familiarity with python
* Student should be fairly comfortable with git and github
2014-02-13 09:47:57 +00:00
(Kivy and its sister projects are all managed on github)
2014-02-13 04:32:56 +00:00
* Comfortable with Event Driven programming.
* Preset development environment for kivy or the appropriate
sister project you are going to work on. For example to be
able to work on pyobjus/pyjnius/plyer you would need access
2014-02-13 09:47:57 +00:00
to an iOS device, mac with xcode and a developer license,
2014-02-13 04:32:56 +00:00
android device respectively.
Additional desired skills may be listed with specific projects.
Familiarize yourself with the contributing guide http://kivy.org/docs/contribute.html
We can help you get up to speed, however students demonstrating ability
in advance would be given preference.
2013-03-20 05:29:26 +00:00
Projects ideas
--------------
2014-02-13 14:39:22 +00:00
The mentors list is only of potential mentors for a particular project and not final.
2014-02-13 04:32:56 +00:00
2013-03-20 05:29:26 +00:00
Kivy
~~~~
2014-02-13 04:32:56 +00:00
* Embedded Support:
2014-02-13 04:55:17 +00:00
- Mentors: Gabriel Pettier, Mathieu Virbel
- Requirements: Access to specific embedded hardware.
2014-02-13 09:47:57 +00:00
- Task level: Intermediate/Advanced
2014-02-13 04:55:17 +00:00
- Desired Skills: Familiarity with programming on the specific embedded hardware.
2014-02-13 04:32:56 +00:00
Add full support for major embedded platforms like Beagle
2014-02-11 21:56:52 +00:00
Board and Raspberry Pi. Kivy already has partial support for RPi. It would be
great to get full support for other major embedded platforms.
2014-02-13 14:39:22 +00:00
This would involve:
- Native Keyboard Provider.
- Window prvider for Beagle board using hooks to the driver for hardware
acceleration inspiration can be taken from the rpi window provier
https://github.com/kivy/kivy/blob/master/kivy/core/window/window_egl_rpi.py.
- Making sure atleast one of the backend for each of the core providers work on
the embedded hardware with acceptable performnce. Namely Text, Window, Audio,
Video, Keyboard, Clipboard, Image.
2014-02-13 04:32:56 +00:00
* Inspector:
2014-02-13 14:39:22 +00:00
- Mentors: Akshay Arora, Gabriel Pettier
2014-02-13 04:55:17 +00:00
- Task level: Intermediate
2014-02-13 04:32:56 +00:00
2014-02-13 14:39:22 +00:00
Redo or improve the inspector module.
- Use Python introspection to enhance current state of inpector.
- Allow the user to debug anything from their application.
- Introduce automatic creash reporting.
- Possibly launch debugger automaticlaly when kivy app crashes.
2014-02-13 04:32:56 +00:00
* Graphics Pipeline Enhancements:
2014-02-13 04:55:17 +00:00
- Mentors: Jacob Kovac, Mathieu Virbel
2014-02-13 09:47:57 +00:00
- Task level: Intermediate/Advanced
- Desired Skills: Familiarity with OpenGL, desire to learn/solve difficult
2014-02-13 04:55:17 +00:00
concepts/puzzles.
2014-02-13 04:32:56 +00:00
2014-02-13 14:39:22 +00:00
We have a lot of ideas around the graphics pipeline.
- Merging instructions
- VBOs to reduce GL calls
- helpers to create shaders dynamically according to the current vertex format
- improving 3D support.
2014-02-13 14:49:23 +00:00
- add Bounding-Box calculation / selection on the tree only if requested
2014-02-11 13:26:43 +00:00
2013-03-20 05:29:26 +00:00
Mobile
~~~~~~
2014-02-13 04:32:56 +00:00
* Plyer:
- Mentors: Gabriel Pettier, Akshay Arora, Alexander Taylor, Ben Rousch.
2014-02-13 09:47:57 +00:00
- Requirements: Access to Linux, Windows, OS X, iOS device, Android device.
- Task level: Intermediate/Advanced.
2014-02-13 04:55:17 +00:00
- Desired Skills: Familiarity with Pyjnius, PyObjus.
2014-02-13 04:32:56 +00:00
The idea is to provide a stable API to the user for accessing features
2014-02-13 09:47:57 +00:00
of their desktop or mobile device, such as Accelerometer, GPS, SMS, Contact,
and more. Under the hood you'll use PyJNIus, PyOBJus and Cython. This probably
would also include improving PyObjus and PyJnius to handle interfaces that
they can't right now.
2014-02-13 04:32:56 +00:00
* SL4A Facades:
- Mentors: Gabriel Pettier, Akshay Arora, Mathieu Virbel
2014-02-13 04:32:56 +00:00
Porting facades from Scripting Language for Android to Plyer
2014-02-11 21:56:52 +00:00
for easy integration and compatability.
2014-02-11 13:26:43 +00:00
2013-03-20 05:29:26 +00:00
Toolchain
~~~~~~~~~
2014-02-13 04:32:56 +00:00
* Toolchain for iOS:
2014-02-13 04:55:17 +00:00
- Mentors: Thomas Hansen, Mathieu Virbel
2014-02-13 09:47:57 +00:00
- Reuirements: Access to iOS, Android device along with a developer licence.
- Task level: Intermediate/Advanced
2014-02-13 04:55:17 +00:00
- Desired Skills: Familiarity with xcode, objc.
2014-02-13 04:32:56 +00:00
An iOS interface based on the idea of Python for Android,
2014-02-11 21:56:52 +00:00
in order to replace kivy-ios. Cross-platform compilation skills are heavily
2013-03-20 05:29:26 +00:00
required.
2014-02-13 04:32:56 +00:00
* Buildozer:
- Mentors: Gabriel Pettier, Akshay Arora, Alexander Taylor, Ben Rousch
2014-02-13 09:47:57 +00:00
- Requirements: Access to linux, Windows, OS X, iOS, Android.
2014-02-13 04:55:17 +00:00
- Task level: Intermediate
2014-02-13 04:32:56 +00:00
2014-02-13 09:47:57 +00:00
Needs support for generating RPM, DEB, DMG, and EXE files. This might not be
enough in itself for a GSoC project. It would have to be joined together with
some other work.
2013-03-20 05:29:26 +00:00
2014-02-13 04:32:56 +00:00
* SDL2 Backends:
2014-02-13 09:47:57 +00:00
- Mentors: Akshay Arora, Jacob Kovac, Mathieu Virbel
- Requirements: Access to Linux, Windows, OS X, iOS, Android.
- Task level: Intermediate/Advanced
2013-03-20 05:29:26 +00:00
2014-02-13 14:39:22 +00:00
SDL2 backend providers for Kivy, including porting the mobile
toolchains to SDL2. Part of the work is already done. What left is mostly
- Hashing out distribution mechanisms for the lib.
- Porting mobile backends to ios and android sdl2. Partial work on this has
already been going on.
- Unit tests for the new sdl2 bckends making sure apps work the same
on sdl2 as on other backends.
- Performace testing. Looking at the difference between sdl2 and other providers
to ascertain wether sdl2 could be used as the default provider giving it priority
over other backends.
2013-03-20 05:29:26 +00:00
2014-02-11 21:56:52 +00:00
Anything Else ?
2013-03-20 05:29:26 +00:00
~~~~~~~~~~~~~~~
2014-02-11 21:56:52 +00:00
* Let your imagination run wild, and show what Kivy is capable of!
2013-03-20 05:29:26 +00:00
How to be a good student
------------------------
If you want to participate as a student and want to maximize your chances of
2014-02-11 21:56:52 +00:00
being accepted, start talking to us today and try fixing some smaller problems
2013-03-20 05:29:26 +00:00
to get used to our workflow. If we know you can work well with us, that'd be a
big plus.
Here's a checklist:
* Make sure to read through the website and at least skim the documentation.
* Look at the source code.
* Read our contribution guidelines.
2014-02-11 21:56:52 +00:00
* Pick an idea that you think is interesting from the ideas list or come up
with your own idea.
2013-03-20 05:29:26 +00:00
* Do some research **yourself**. GSoC is not about us teaching you something
and you getting paid for that. It is about you trying to achieve agreed upon
goals by yourself with our support. The main driving force in this should be,
2014-02-11 21:56:52 +00:00
obviously, yourself. Many students pop up and ask what they should do. Well,
2013-03-20 05:29:26 +00:00
we don't know because we know neither your interests nor your skills. Show us
2014-02-11 21:56:52 +00:00
you're serious about it and take the initiative.
2013-03-20 05:29:26 +00:00
* Write a draft proposal about what you want to do. Include what you understand
2014-02-11 21:56:52 +00:00
the current state is (very roughly), what you would like to improve, how,
2013-03-20 05:29:26 +00:00
etc.
* Discuss that proposal with us in a timely manner. Get feedback.
* Be patient! Especially on IRC. We will try to get to you if we're available.
If not, send an email and just wait. Most questions are already answered in
the docs or somewhere else and can be found with some research. If your
questions don't reflect that you've actually thought through what you're
asking, it might not be well received.
2014-02-13 04:32:56 +00:00
[1]:http://en.wikipedia.org/wiki/Event-driven_programming