< GSoC | 2012Revision as of 09:48, 10 February 2012 by Cauliergilles (talk | contribs) (→Project: Native MacOSX support)(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff) See also: GSoc Instructions Contents 1 Guidelines 1.1 Information for Students 1.2 Adding a Proposal 1.2.1 Project: 2 Ideas 2.1 Amarok 2.1.1 Project: 2.1.2 Project: QMLify Amarok's context view 2.1.3 Project: Semantic desktop collection in Amarok 2.1.4 Project: Tomahawk features in Amarok 2.2 digiKam 2.2.1 Project: Camera User Interface Revamp 2.2.2 Project: Native MacOSX support 2.2.3 Project: Video metadata support 2.2.4 Project: Clone Tool for Image Editor 2.2.5 Project: Video Slideshow Generator 2.2.6 Project: Face Recognition 2.2.7 Project: 2.3 KDE Edu 2.3.1 Project: 2.4 KDevelop 2.4.1 Project: 2.5 KDE PIM 2.5.1 Project: 2.6 Calligra Karbon 2.6.1 Project: 2.7 Calligra Words 2.7.1 Project: 2.8 Calligra Krita 2.8.1 Project: 2.9 Calligra Stage 2.9.1 Project: 2.10 Calligra Plugins 2.10.1 Project: 2.11 Calligra Active 2.11.1 Project: 2.12 KWin 2.12.1 Project: 2.13 Nepomuk 2.13.1 Project: 2.14 Plasma 2.14.1 Project: Lazy/Asynchronous Plasmoid Inititalization 2.14.2 Project: 2.15 Phonon 2.15.1 Project: 2.16 Solid 2.16.1 Project: Easy partitioning in Solid/Dolphin 2.17 Kate 2.17.1 Project: 2.18 Rekonq 2.18.1 Project: 2.19 ownCloud 2.19.1 Project: 2.20 KDE Usability 2.20.1 Project: 2.21 KDE SDK 2.21.1 Project: 2.22 Okular 2.22.1 Project: 2.23 Gluon 2.23.1 Project: 2.24 Telepathy 2.24.1 Project: 2.25 simon 2.25.1 Project: 2.26 KDE on Windows 2.26.1 Project: 2.27 KDE Accessibility 2.27.1 Project: Focus tracking in KWin and KMagnifier 2.27.2 Project: Screen reader friendly KDE applications 2.27.3 Project: Plasma Accessibility Guidelines Information for Students These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at. Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out. When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big! If there is no specific contact given you can ask questions on the general KDE development list [email protected] See the KDE mailing lists page for information on available mailing lists and how to subscribe. Adding a Proposal Note Follow the template of other proposals! Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: When adding an idea to this section, please try to include the following data: if the application is not widely known, a description of what it does and where its code lives a brief explanation the expected results pre-requisites for working on your project if applicable, links to more information or discussions mailing list or IRC channel for your application/library/module your name and email address for contact (if you're willing to be a mentor) If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first. Ideas How to find ideas? To see previous Project ideas, see: 2011 ideas. Obvious sources of projects are the bugs database, the forum, and your list and IRC channel ideas. Amarok Amarok is a powerful KDE based music player for Linux and Unix, MacOS X and Windows with an intuitive interface. It makes playing the music you love and discovering new music easier than ever before - and it looks good doing it! Website - Mailing list - IRC channel: #amarok on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Project: QMLify Amarok's context view Brief explanation: Amarok's context view has been rewritten using Plasma for the beginning of the 2.x series. While this technical choice presented and still presents many advantages, the implementation has been lacking on some fronts for various reasons also unrelated to Plasma. The goal of this project is to rewrite and otherwise conceptually revamp the context view, basing it on QML. Specifically, we require a redesigned interface, and a way to distribute 3rd party context view applets would also be nice. Some interesting reading: SPARQL by example SPARQL queries in QML DBPedia Expected results: Amarok's context view, rewritten in QML. Knowledge Prerequisite: C++ and Qt, QML knowledge a big plus. Mentor: TBD, certainly an Amarok core team member Project: Semantic desktop collection in Amarok Brief explanation: Several years ago a Summer of Code student had developed a Nepomuk collection backend for Amarok. At that time however Nepomuk was a very different beast, and mostly for performance and reliability reasons the work was never used. The goal of this project is to pick either Tracker or Nepomuk (or both!) and develop one or more collection backends for those data stores. Expected results: At least one fully working collection backend based on Nepomuk or Tracker. Knowledge Prerequisite: C++ knowledge, Qt recommended, Nepomuk/Tracker/SPARQL knowledge a plus Mentor: Teo Mrnjavac, maybe also someone from Nepomuk? Project: Tomahawk features in Amarok Brief explanation: Tomahawk is a cross platform, open source social media player that allows users to share music seamlessly and listen to it anytime, anywhere. The goal of this project is to implement the same features in Amarok and maintain compatibility with Tomahawk Expected results: Implement a service in Amarok that allows users to share their music files with online friends and allows them to listen to the tracks via stream Knowledge Prerequisite: Qt/KDE development(includes C++ and git), streaming Mentor: Bart Cerneels digiKam digiKam is an advanced digital photo management application for Linux, Windows, and Mac-OSX. digiKam project web site - Mailinglist - Google+ page - IRC channel: #digikam on Freenode Project: Camera User Interface Revamp Brief explanation: digiKam features a graphical interface to access and download pictures from digital cameras. Code is rather old, using Qt3Support classes for the icon view, the UI code intermangled deeply with backend code, and has not seen very much care and love for some years. This project would involve taking the old code apart, rewriting a clean code base backend and front-end, but also adding user interface elements to make the most important everyday task as easy as possible. In more detail: Write a model listing images on a camera (There are two backends, USB mass storage cameras, which are basically files on disk, and GPhoto2 cameras, which require access through a library). Take the existing digikam icon view and delegate classes, which are prepared for code re-use, and put together an icon view for the model. Cleanly separate the code that does the actual work (downloading, converting, renaming) from the UI. Wrap that in the main window. User Interface design: the current one is powerful, exposing many options. We want to preserve that. But at the same time, there are three very common actions: a) Download all new files to the last used album b) Download all new files to a new album c) Download all new files to an existing album. It should be possible to carry out task (a) with one click, task (b) and (c) with two or three clicks, without opening a dialog. Friendly to the new user, preserving access to all options for the poweruser. There also the technical TODO list relevant of this project Expected results: A camera user interface based on a pure Qt4 model/view and a cleaned code which provides the currently available features, offering a quick path to download new pictures. Knowledge Prerequisite: Qt, C++. Interest in Qt model/view and User Interface code. Mentor: Gilles Caulier Project: Native MacOSX support Brief explanation: digiKam needs to be available under MacOSX in native. Currently, - Macports project is the only way to get last digiKam under Apple computers. Macports require to compile all depencies and digiKam as well. It's a long and hazardous solution to see digiKam running under Mac. Also, current digiKam implementation is not optimized for Mac desktop. A lots of point need to be improved to support better this operating system. Graphical interface need to polished. See relevant entries in KDE bugzilla about MacOSX support : 257679 257773 Expected results: Provide scripts and configurations to build automatically a DMG archive of digiKam for MacOSX. Improve digiKam GUI everywhere to be more elegant and more optimized for MacOSX. Knowledge Prerequisite: C++, Qt, MacOSX, scripting, DMG, packaging Mentor: Gilles Caulier Project: Video metadata support Brief explanation: All recent digital-still camera devices provide video capture. digiKam must be able to manage these files as it do with images. digiKam can already play-back video and register files to the database, but it lack important metadata used to catalog and sort items (as date, camera name, and all record conditions). To improve video files support, video metadata management done in background need to be improved, to patch Exiv2 shared library, already used by digiKam for photo metadata handling. See relevant entries in KDE bugzilla about video support : 164442 229543 Expected results: Add video files support to Exiv2. Patch digiKam metadata interface to handle video information. Knowledge Prerequisite: C++, Qt, video format, metadata Mentor: Gilles Caulier and Andreas Huggel Project: Clone Tool for Image Editor Brief explanation: In digiKam image editor we need a simple clone tool to be able to remove quickly dusts, spots, and other unwanted artefact from an image. See relevant entry in KDE bugzilla about it : 132483 Expected results: add a new tool (as new image editor plugin) with the clone feature. Knowledge Prerequisite: C++, Qt Mentor: Gilles Caulier or Marcel Wiesweg Project: Video Slideshow Generator Brief explanation: In digiKam image editor we need a new tool to export images as video slideshow. See relevant entry in KDE bugzilla about it : 153061 The tool must be able to export to video files, as MPEG, AVI, DIVX, or to video media, as CD and DVD video. Expected results: Add a new tool (as new kipi plugin) to export image collections on video. The tool must be able to do authoring with image contents, for example to change order of images, slide time pause, add transition effects, and add main menu for video media. The tool must be portable under Linux, MacOSX and Windows. Knowledge Prerequisite: C++, Qt Mentor: Gilles Caulier and Angelo Naselli Project: Face Recognition Brief explanation: digiKam is already able to detect faces in photos, through libface, OpenCV, and libkface shared libraries, but Face Recognition is not yet properly implemented to identify the person depicted and automatically tag the region on the photo with the person's name. See relevant entry in KDE bugzilla about it : 271679 Expected results: Face Recognition: Improve existing Eigenfaces implementation. Implement Fisherfaces recognition, work with GNU science library to implement the needed QZ algorithm. Round up this underlying technology in a libface and libkface library with some test cases. optionally, define the format to store tags on regions of images (currently it's only possible to tag an image as a whole) in metadata and database. You will get support here from the digikam core developers. Design some user interface solutions for the training tasks involved (telling the classifier what's right and what's wrong) Knowledge Prerequisite: C++ and Qt. Knowledge of matrices and working with them. Some idea of clustering algorithms and previous OpenCV experience would be useful. Mentor: Alex Jironkin for face recognition part through libface, Marcel Wiesweg and Gilles Caulier for the digikam integration through libkface interface Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE Edu Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDevelop KDE-based Integrated Development Environment, specializing in c++ support, but including a powerful generic framework (definition use chain) which makes it possible to relatively easily support multiple different languages. Website - Mailing list - IRC channel: #kdevelop on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE PIM KDE PIM is the interest group working on applications related to personal information management, e.g. contacts, calendar, mails, etc. There are interesting projects on all levels of the software stack: libraries, application porting, new applications, access to online resources, etc. Have a look at last year's ideas as well. Website - Project Wiki - Mailing list - IRC channel: #kontact and #akonadi on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Karbon Karbon is a vector drawing application with an user interface that is easy to use, highly customizable and extensible. Web - Mailinglist - IRC channel: #calligra on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Words Web - Mailinglist - IRC channel: #calligra on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Krita Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital painting files from scratch by masters. Mailing-list: https://mail.kde.org/mailman/listinfo/kimageshop/ Project Page: http://www.krita.org/ Irc channel: #krita on irc.freenode.net Forums: http://forum.kde.org/viewforum.php?f=136. Wiki: http://community.kde.org/Krita Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Stage Stage is an easy to use yet still flexible KDE-based presentation application. Mailing-list: https://mail.kde.org/mailman/listinfo/calligra-devel Project Page: http://www.calligra-suite.org/stage/ Irc channel: #calligra on irc.freenode.net Forums: http://forum.kde.org/viewforum.php?f=203 Wiki: http://community.kde.org/Calligra/Stage Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Plugins As Calligra is quite powerful it is easy to add plugins to it that then can be used by all Calligra applications. Mailing-list: https://mail.kde.org/mailman/listinfo/calligra-devel Project Page: http://www.calligra-suite.org Irc channel: #calligra on irc.freenode.net Forums: http://forum.kde.org/viewforum.php?f=203 Wiki: http://community.kde.org/Calligra Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Calligra Active Calligra Active is a Calligra interface tailored specifically for use with Plasma/Active on tablet devices. Mailing-list: https://mail.kde.org/mailman/listinfo/calligra-devel Irc channel: #calligra on irc.freenode.net Wiki: http://community.kde.org/Calligra/Active Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KWin KDE's window manager Techbase page - Mailinglist - IRC channel: #kwin on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Nepomuk Website- Documentation/Howtos - Ontologies - Mailing list - IRC channel: #nepomuk-kde on Freenode. (Also see the Nepomuk techbase page for a long list of Nepomuk-related ToDos and ideas.) Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Plasma Website - Mailing list - IRC channel: #plasma on Freenode. Project: Lazy/Asynchronous Plasmoid Inititalization Brief explanation: Plasmoids are currently initialized in a synchronous fashion, meaning the construction of a plasmoid is blocking plasma shells (such as Plasma Desktop) at large. This leads to longer startup times than necessary. Instead plasmoids should be lazy initialized, meaning that their creation has little to no impact at all on the instanciating function(s). Expected results: Plasma Widgets should be initialized in an asynchronous fashion to reduce overall Plasma startup time. Knowledge Prerequisite: C++/Qt/KDE development Mentor: Aaron Seigo / Harald Sitter? Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Phonon Abstraction library for sound and video support. Used by KDE notifications, Amarok, Dragon Player and Qt Software. Website - Mailing list - IRC channel: #phonon on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Solid Abstraction library for hardware support. Used pretty much anywhere in KDE where there needs to be hardware interaction. Website - Mailing list - IRC channel: #solid on Freenode. Project: Easy partitioning in Solid/Dolphin Brief explanation: Extend the Solid library to support basic partition management, using udisks as a backend for low-level operations; develop a partition manager that uses this new interface, taking ispiration from the work already done for the Chakra Linux installer Tribe; integrate it in a Dolphin plugin. Expected results: From a user's point of view, Dolphin will provide a quick and easy-to-use graphical interface for operating on drives. From a developer's point of view, Solid will provide a higher level API that will enable programmers to create new disk managers abstracting from the physical details of the hardware they're going to manipulate. Knowledge Prerequisite: C++/Qt/KDE development, some knowledge about disks and partitions. Mentor: Dario Freddi <[email protected]> Kate Kate is a powerful programmer's editor. Website - Mailing list - IRC channel: #kate on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Rekonq Rekonq is a web browser for KDE based on WebKit. It first focuses on being a light, fast & clean way to access to net. Its development is doubly based on using the new amazing features offered by the WebKit rendering engine and on the rock solid network KDE technologies. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: ownCloud An open personal cloud which runs on your personal server. It enables accessing your data from all of your devices. Sharing with other people is also possible. It support automatic backups, versioning and encryption. Website - Mailing list - IRC channel: #owncloud on Freenode. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE Usability Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE SDK Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Okular Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Gluon Gluon is a Free and Open Source framework for creating and distributing games - supporting the flow of the idea all the way from the author to the player of the finished game, and back. Gluon Website Contacting the Gluon team (irc, email etc) Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: Telepathy Telepathy is a cross-desktop framework for real-time communication and collaboration - think IM, Voice/Video Conferencing and Collaborative document editing/gaming/etc. More information: Telepathy Framework KDE Telepathy We can be found on IRC in #kde-telepathy Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: simon simon is an open source speech recognition system using many parts of the KDE infrastructure. You can find out more about us on our homepage, blog or the development site. There is also a demonstration video on youtube. Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE on Windows The KDE on Windows subproject makes KDE applications available on Microsoft Windows, both desktop (XP, Vista, 7) and Windows CE Project: Brief explanation: Expected results: Knowledge Prerequisite: Mentor: KDE Accessibility The KDE Accessibility subproject aims to make KDE applications accessible for all. See also Getinvolved/accessibility Project: Focus tracking in KWin and KMagnifier Brief explanation: Currently the KWin zoom plugin and KMagnifier implement focus tracking using KAccessible. KAccessible uses QAccessible direct to implement focus-tracking. The problem with that is that it only works for Qt/KDE applications. The plan is to change the existing code in the KWin zoom-plugin and KMagnifier to not use KAccessible any longer to fetch the information what application/widget/etc has the focus but to use dbus to connect with AT-SPI2 and fetch all needed informations (means the x/y-coordinates where the focus is atm) from there. Once done and if we do not lose to much time with unexpected problems there should be enough time left to look at common applications like KWrite, Kate, Konsole, Dolphin, etc. to identify and fix cases where the applications are not sending the proper QAccessible::Focus events so that focus-tracking doesn't work there. See for example the fix I did back then to enable focus-tracking in KWrite/Kate - note that all Qt-widgets and most KDE-widgets are already fine and accessible but that a custom canvas like KWrite/Kate are using them to draw the text are basically not accessible at all what is why the patch introduces new classes to make the canvas accessible including making focus-tracking working. http://blogs.kde.org/node/4287 describes our current solution for focus-tracking http://community.kde.org/Accessibility/qt-atspi describes how to setup your environment to get ATSPI2 and Qt working together using the Qt-ATSPI bridge. See the linked source-code above and grep there for "focusChanged" Expected results: The KWin zoom-plugin and KMagnifier are using ATSPI2 rather then KAccessible to implement focus-tracking. Focus-tracking within KDE works for Qt/KDE applications like it does today with KAccessible (or even better :-) ) and applications using other Toolkits (e.g. GEdit, Firefox and LibreOffice.org) will work too. Knowledge Prerequisite: C++/Qt Mentor: Sebastian Sauer <[email protected]> Project: Screen reader friendly KDE applications Brief explanation: With Qt at-spi we now have a solution to make KDE applications work with the Orca screen reader from Gnome. This project is about reaching out to screen reader users in order to find out how to make KDE applications work better with the screen reader. Along with the research is always the writing of patches to implement the findings. This requires good communication skills and some C++ knowledge. See also: http://userbase.kde.org/Accessibility http://techbase.kde.org/Development/Tutorials/Accessibility/Screen_Reader_Setup Expected results: Improved experience for users that use a screen reader Many small patches in order to emit the right signals to the accessibility framework Implementation of QAccessibleInterfaces for custom widgets used in KDE Knowledge Prerequisite: C++/Qt Python is a bonus as it will make understanding Orca easier Reading code - you will look at code from many different applications and try to fix small issues there Build applications, kdelibs and Qt Mentor: Frederik Gladhorn <[email protected]kde.org> Project: Plasma Accessibility Brief explanation: Making it possible to use Plasma with a screen reader is the goal of this project. You will have to dive into Plasma in both KDE libs and the desktop shell. It will be necessary to make sure keyboard navigation works and feedback from individual parts of the desktop is good so that the screen reader can make sense of it. This might include working on the screen reader to improve the experience. See also: http://userbase.kde.org/Accessibility http://techbase.kde.org/Development/Tutorials/Accessibility/Screen_Reader_Setup Expected results: A Plasma desktop that is usable for people that rely on a screen reader Implementation of QAccessibleInterface where it makes sense Accessible plasma widgets (krunner, application launcher, systray, panel etc) Knowledge Prerequisite: C++/Qt Python is a bonus as it will make understanding Orca easier Build Plasma and run it with custom built kdelibs and Qt Mentor: Frederik Gladhorn <[email protected]> Retrieved from "https://community.kde.org/index.php?title=GSoC/2012/Ideas&oldid=17813" Content is available under Creative Commons License SA 4.0 unless otherwise noted.