diff --git a/doc/sources/gsoc.rst b/doc/sources/gsoc.rst index 39e4ac213..2bbebd99c 100644 --- a/doc/sources/gsoc.rst +++ b/doc/sources/gsoc.rst @@ -81,44 +81,85 @@ eg.. for PyJNIus:: Project Ideas -------------- +Here are some prospective ideas sourced from the Kivy development team, if +none of these projects interest you come talk to us in #kivy-dev about a +project idea of your own. -The mentors list is only of potential mentors for a particular project and not -final. +Beginner Projects +~~~~~~~~~~~~~~~~~ +These projects should be suitable for anyone with a college level familiarity +with Python and require little knowedge of platform specifics. -Enhancements to Kivy -~~~~~~~~~~~~~~~~~~~~ - -**Font Reshaping and Font Fallback Support** +**Kivy Designer** Description: - Currently Kivy does not support reshaping for alphabets such as Arabic, - Persian, Thai, or Devanagari. The solution is to integrate a text shaping - engine- Harfbuzz. You would need to ensure that we can compile Harfbuzz - on every platform and properly integrate it as a core text provider. - - The second part of the same project would involve font fallback support. - If a particular character/glyph is missing; currently we show a [] box. - The solution for this would involve either using an OS API if available - or maintaining a hashtable for the default fonts on each OS which can be - used for glyph fallback. + Kivy Designer is a GUI tool for creating Kivy GUI layouts written in Kivy. + You can compose, customize, and test widgets using the tool. This project + has been the subject of 2 previous GSoC and is experimental, alpha level + software at the moment. However, it is a very popular request for more + updates among our users; if you are interested in GUI tool development + this could be a great fit for you! + + The Student will: + + - Integrate Buildozer, which is our build tool for deploying to different + target OS, within the kivy-designer. + - Interface for using hanga.io (Remote Buildozer server) as a deployment + target. + - Better File management for project files. Browser Pane. + - Interface to test using different screen modules, for emulating interface + on different screen sizes. + - Interface to Select different targets, simulator or actual device if + connected to deploy to. + - Add mobile specific UI fixes(mostly making sure UI looks and feels the + same on tablets as on desktops) + - Work on stability fixes. References: - - http://www.freedesktop.org/wiki/Software/HarfBuzz/ - - https://github.com/kivy/kivy/tree/master/kivy/core/text + - https://github.com/kivy/kivy-designer + - http://github.com/kivy/buildozer + - http://hanga.io Expected outcome: - Font fallback and text reshaping support Kivy and correct compilation - recipes for the libs used (harfbuzz) for platforms(Android and iOS) that - need it, such as Python-For-Android. + It is expected that the student completes all the features mentioned above, + except stability fixes which is dependent on however much time is left + after completing the rest of the features. - - **Mentors**: Akshay Arora, Jacob Kovac + - **Mentors**: Akshay Arora, Ryan Pessa + - **Requirements:** Access to Linux, Windows, OS X + - **Task level**: Easy + - **Desired Skills**: Experience with other GUI creation tools. Familiar + with Kivy approach to EventLoop and UIX Widgets. + +**Matplotlib Integration** + + Description: + More advanced graphing and plotting tools are a frequently requested + addition to Kivy, and it would be ideal to provide them via integration + with matplotlib's extensive feature set. The primary goal of the project + would be to write a Kivy backend to matplotlib that displays plots using + Kivy's own graphics API, but it would also involve ensuring that + matplotlib is deployable on every platform Kivy supports. + + References: + - http://matplotlib.org/ + - https://github.com/kivy/kivy + + Expected outcome: + The matplotlib widgets will be included in the Kivy garden and ready to + use on all of Kivy's supported OS. + + - **Mentors**: Alexander Taylor, Matthew Einhorn, Jacob Kovac - **Requirements:** Access to Linux, Windows, OS X, Android, iOS - - **Task level**: Intermediate - - **Desired Skills**: Familiarity with text rendering, HarfBuzz, and Kivy's - provider abstraction. + - **Task level**: Easy + - **Desired Skills**: Familiarity with Kivy widget construction and + matplotlib. -Enhancements to Plyer +Intermediate Projects ~~~~~~~~~~~~~~~~~~~~~ +These projects will involve more than just pure Python coding. You may find +yourself either dealing with the details of cross platform compilation or +working with communicating between Python and an API in a different language. **Plyer:** @@ -155,12 +196,46 @@ Enhancements to Plyer - **Mentors**: Ben Rousch, Sebastian Popute - **Requirements**: Access to Linux, Windows, OS X, iOS device, Android device. - - **Task level**: Intermediate/Advanced. + - **Task level**: Intermediate - **Desired Skills**: Familiarity with Pyjnius, PyOBJus. +**Font Reshaping and Font Fallback Support** -Enhancements to Toolchain -~~~~~~~~~~~~~~~~~~~~~~~~~ + Description: + Currently Kivy does not support reshaping for alphabets such as Arabic, + Persian, Thai, or Devanagari. The solution is to integrate a text shaping + engine- Harfbuzz. You would need to ensure that we can compile Harfbuzz + on every platform and properly integrate it as a core text provider. + + The second part of the same project would involve font fallback support. + If a particular character/glyph is missing; currently we show a [] box. + The solution for this would involve either using an OS API if available + or maintaining a hashtable for the default fonts on each OS which can be + used for glyph fallback. + + References: + - http://www.freedesktop.org/wiki/Software/HarfBuzz/ + - https://github.com/kivy/kivy/tree/master/kivy/core/text + + Expected outcome: + Font fallback and text reshaping support Kivy and correct compilation + recipes for the libs used (harfbuzz) for platforms(Android and iOS) that + need it, such as Python-For-Android. + + - **Mentors**: Akshay Arora, Jacob Kovac + - **Requirements:** Access to Linux, Windows, OS X, Android, iOS + - **Task level**: Intermediate + - **Desired Skills**: Familiarity with text rendering, HarfBuzz, and Kivy's + provider abstraction. + + +Hard Projects +~~~~~~~~~~~~~ +These projects may involve very in-depth knowledge of Kivy's existing +internals, the hairy details of cross-platform compilation, or other fairly +advanced topics. If you are comfortable with the internals of Python, working +with C code, and using Cython to build your own C extensions these projects +may appeal to you. **Python-For-Android Revamp:** @@ -203,70 +278,6 @@ Enhancements to Toolchain - **Desired Skills**: Understanding of cross-compilation for Android, familiarity with PyJNIus -**Kivy Designer** - - Description: - Kivy Designer is a GUI tool for creating Kivy GUI layouts written in Kivy. - You can compose, customize, and test widgets using the tool. This project - has been the subject of 2 previous GSoC and is experimental, alpha level - software at the moment. However, it is a very popular request for more - updates among our users; if you are interested in GUI tool development - this could be a great fit for you! - - The Student will: - - - Integrate Buildozer, which is our build tool for deploying to different - target OS, within the kivy-designer. - - Interface for using hanga.io (Remote Buildozer server) as a deployment - target. - - Better File management for project files. Browser Pane. - - Interface to test using different screen modules, for emulating interface - on different screen sizes. - - Interface to Select different targets, simulator or actual device if - connected to deploy to. - - Add mobile specific UI fixes(mostly making sure UI looks and feels the - same on tablets as on desktops) - - Work on stability fixes. - - References: - - https://github.com/kivy/kivy-designer - - http://github.com/kivy/buildozer - - http://hanga.io - Expected outcome: - - - **Mentors**: Akshay Arora, Ryan Pessa - - **Requirements:** Access to Linux, Windows, OS X - - **Task level**: Easy - - **Desired Skills**: Experience with other GUI creation tools. Familiar - with Kivy approach to EventLoop and UIX Widgets. - - -Applications -~~~~~~~~~~~~ - -**Matplotlib Integration** - - Description: - More advanced graphing and plotting tools are a frequently requested - addition to Kivy, and it would be ideal to provide them via integration - with matplotlib's extensive feature set. The primary goal of the project - would be to write a Kivy backend to matplotlib that displays plots using - Kivy's own graphics API, but it would also involve ensuring that - matplotlib is deployable on every platform Kivy supports. - - References: - - http://matplotlib.org/ - - https://github.com/kivy/kivy - - Expected outcome: - The matplotlib widgets will be included in the Kivy garden and ready to - use on all of Kivy's supported OS. - - - **Mentors**: Alexander Taylor, Matthew Einhorn, Jacob Kovac - - **Requirements:** Access to Linux, Windows, OS X, Android, iOS - - **Task level**: Easy - - **Desired Skills**: Familiarity with Kivy widget construction and - matplotlib. How to Contact devs ------------------- @@ -301,6 +312,12 @@ 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. +* Make a contribution! Kivy would like to see how you engage with the + development process. Take a look at the issue tracker for a Kivy project + that interest you and submit a Pull Request. It can be a simple bug or a + documentation change. We are looking to get a feel for how you work, not + evaluating your capabilities. Don't worry about trying to pick something + to impress us. * 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 about give and take, not just one