mirror of https://github.com/kivy/kivy.git
185 lines
7.1 KiB
ReStructuredText
185 lines
7.1 KiB
ReStructuredText
Google Summer of Code - 2014
|
|
============================
|
|
|
|
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
|
|
skills as highlighted here:
|
|
|
|
* Intermediate level familiarity with python
|
|
* Student should be fairly comfortable with git and github
|
|
(Kivy and its sister projects are all managed on github)
|
|
* 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
|
|
to an iOS device, mac with xcode and a developer license,
|
|
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.
|
|
|
|
|
|
Projects ideas
|
|
--------------
|
|
|
|
|
|
The mentors list is only of potential mentors for a particular project and not final.
|
|
|
|
Kivy
|
|
~~~~
|
|
|
|
* Embedded Support:
|
|
- Mentors: Gabriel Pettier, Mathieu Virbel
|
|
- Requirements: Access to specific embedded hardware.
|
|
- Task level: Intermediate/Advanced
|
|
- Desired Skills: Familiarity with programming on the specific embedded hardware.
|
|
|
|
Add full support for major embedded platforms like Beagle
|
|
Board and Raspberry Pi. Kivy already has partial support for RPi. It would be
|
|
great to get full support for other major embedded platforms.
|
|
|
|
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.
|
|
|
|
* Inspector:
|
|
- Mentors: Akshay Arora, Gabriel Pettier
|
|
- Task level: Intermediate
|
|
|
|
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.
|
|
|
|
* Graphics Pipeline Enhancements:
|
|
- Mentors: Jacob Kovac, Mathieu Virbel
|
|
- Task level: Intermediate/Advanced
|
|
- Desired Skills: Familiarity with OpenGL, desire to learn/solve difficult
|
|
concepts/puzzles.
|
|
|
|
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.
|
|
- add Bounding-Box calculation / selection on the tree only if requested
|
|
|
|
|
|
Mobile
|
|
~~~~~~
|
|
|
|
* Plyer:
|
|
- Mentors: Gabriel Pettier, Akshay Arora, Alexander Taylor, Ben Rousch.
|
|
- Requirements: Access to Linux, Windows, OS X, iOS device, Android device.
|
|
- Task level: Intermediate/Advanced.
|
|
- Desired Skills: Familiarity with Pyjnius, PyObjus.
|
|
|
|
The idea is to provide a stable API to the user for accessing features
|
|
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.
|
|
|
|
* SL4A Facades:
|
|
- Mentors: Gabriel Pettier, Akshay Arora, Mathieu Virbel
|
|
|
|
Porting facades from Scripting Language for Android to Plyer
|
|
for easy integration and compatability.
|
|
|
|
|
|
Toolchain
|
|
~~~~~~~~~
|
|
|
|
* Toolchain for iOS:
|
|
- Mentors: Thomas Hansen, Mathieu Virbel
|
|
- Reuirements: Access to iOS, Android device along with a developer licence.
|
|
- Task level: Intermediate/Advanced
|
|
- Desired Skills: Familiarity with xcode, objc.
|
|
|
|
An iOS interface based on the idea of Python for Android,
|
|
in order to replace kivy-ios. Cross-platform compilation skills are heavily
|
|
required.
|
|
|
|
* Buildozer:
|
|
- Mentors: Gabriel Pettier, Akshay Arora, Alexander Taylor, Ben Rousch
|
|
- Requirements: Access to linux, Windows, OS X, iOS, Android.
|
|
- Task level: Intermediate
|
|
|
|
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.
|
|
|
|
* SDL2 Backends:
|
|
- Mentors: Akshay Arora, Jacob Kovac, Mathieu Virbel
|
|
- Requirements: Access to Linux, Windows, OS X, iOS, Android.
|
|
- Task level: Intermediate/Advanced
|
|
|
|
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.
|
|
|
|
|
|
|
|
Anything Else ?
|
|
~~~~~~~~~~~~~~~
|
|
|
|
* Let your imagination run wild, and show what Kivy is capable of!
|
|
|
|
|
|
How to be a good student
|
|
------------------------
|
|
|
|
If you want to participate as a student and want to maximize your chances of
|
|
being accepted, start talking to us today and try fixing some smaller problems
|
|
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.
|
|
* Pick an idea that you think is interesting from the ideas list or come up
|
|
with your own idea.
|
|
* 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,
|
|
obviously, yourself. Many students pop up and ask what they should do. Well,
|
|
we don't know because we know neither your interests nor your skills. Show us
|
|
you're serious about it and take the initiative.
|
|
* Write a draft proposal about what you want to do. Include what you understand
|
|
the current state is (very roughly), what you would like to improve, how,
|
|
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.
|
|
|
|
[1]:http://en.wikipedia.org/wiki/Event-driven_programming
|