Projects/Summer of Code/2007/Ideas: Difference between revisions
(list koffice just one time :)) |
(Just formatting changes.) |
||
Line 26: | Line 26: | ||
'''For mentors''': when adding an idea to this section, please include: | '''For mentors''': when adding an idea to this section, please include: | ||
* if the application is not widely known, a description of what it does and where its code lives | :* if the application is not widely known, a description of what it does and where its code lives | ||
* a brief explanation | :* a brief explanation | ||
* the expected results | :* the expected results | ||
* pre-requisites for working on your project | :* pre-requisites for working on your project | ||
* if applicable, links to more information or discussions | :* if applicable, links to more information or discussions | ||
* mailing list or IRC channel for your application/library/module | :* mailing list or IRC channel for your application/library/module | ||
* your name and email address for contact | :* your name and email address for contact | ||
<!-- the division below is just a suggestion! --> | <!-- the division below is just a suggestion! --> | ||
Line 47: | Line 47: | ||
'''Knowledge Pre-Requisite:''' A prequisite would be knowledge of Qt/KDE and the ability to setup a KDE build environment. Knowledge of SVG would obviously be a big help. | '''Knowledge Pre-Requisite:''' A prequisite would be knowledge of Qt/KDE and the ability to setup a KDE build environment. Knowledge of SVG would obviously be a big help. | ||
'''Mentor:''' Richard Moore <[email protected]>, Aaron Seigo <[email protected]>. | |||
==== Solid ==== | ==== Solid ==== | ||
Line 69: | Line 67: | ||
'''Knowledge Pre-Requisite:''' Some C++ programming knowledge is required. Knowledge about other scripting languages like Python and Perl would be advantageous. | '''Knowledge Pre-Requisite:''' Some C++ programming knowledge is required. Knowledge about other scripting languages like Python and Perl would be advantageous. | ||
'''Mentor:''' Harri Porten | '''Mentor:''' Harri Porten <[email protected]>. | ||
==== Sonnet ==== | ==== Sonnet ==== | ||
Line 93: | Line 91: | ||
'''Expected results:''' Strigi plugins that: | '''Expected results:''' Strigi plugins that: | ||
: | :# extract meta data for (bio)chemical files defined by the Chemical MIMEs, va the kfile-chemical kfile plugins, | ||
: | :# process files with a (subset of) (bio)chemical MIME with OpenBabel to generate an InChI for indexing, | ||
: | :# (optionally) use OSCAR3 to process plain text and create InChIs for molecules found in that text. Additionally, the student is invited to propose a useful ontology for marking up the extracted chemical and biological information. | ||
'''Knowledge Pre-Requisite:''' knowledge of C++ is a requirement, as is high school education in chemistry and biology. | '''Knowledge Pre-Requisite:''' knowledge of C++ is a requirement, as is high school education in chemistry and biology. | ||
Line 111: | Line 109: | ||
'''Brief explanation:''' To be properly integrated with other applications a 2D View for Marble will be needed in addition to the preferred 3D View (e.g. for merging functionality of KGeography and Marble). Three steps are suggested: | '''Brief explanation:''' To be properly integrated with other applications a 2D View for Marble will be needed in addition to the preferred 3D View (e.g. for merging functionality of KGeography and Marble). Three steps are suggested: | ||
# reuse the current rendering engine in 2D mode | :# reuse the current rendering engine in 2D mode | ||
# write an optimized approach for the 2D case and thereby refactor parts of Marble (especially the texture mapping) | :# write an optimized approach for the 2D case and thereby refactor parts of Marble (especially the texture mapping) | ||
# include adding proper access methods for applications and the user interface | :# include adding proper access methods for applications and the user interface | ||
Depending on the knowledge of the applicant the refactoring part can be extended. | Depending on the knowledge of the applicant the refactoring part can be extended. | ||
Line 134: | Line 132: | ||
'''Brief explanation:''' The vast majority of KPilot's conduits are record-based in nature. This means that the logical program flow for each of the conduits is very much the same in that they will each: | '''Brief explanation:''' The vast majority of KPilot's conduits are record-based in nature. This means that the logical program flow for each of the conduits is very much the same in that they will each: | ||
# Open a Palm database | :# Open a Palm database | ||
# Retrieve either all records or just the changed records | :# Retrieve either all records or just the changed records | ||
# Open a PC data store | :# Open a PC data store | ||
# Retrieve either all or changed records | :# Retrieve either all or changed records | ||
# Handle tri-directional syncing, conflict handling, and merging changed data | :# Handle tri-directional syncing, conflict handling, and merging changed data | ||
# Then write the resolved data sets back to the PC and Palm data stores | :# Then write the resolved data sets back to the PC and Palm data stores | ||
But the current conduit framework does not abstract this common functionality into a set of base classes as it should. This has resulted in a lot of duplicated code throughout KPilot's conduit base, and each conduit has its own way of handling this common functionality. Understandably, this has led to bugs in the syncing algorithms and has made maintainability of the conduits (and KPilot) a much more difficult thing than it should be. For every conduit, the maintainer has to learn how the actual syncing is done. To make matters worse, there are a couple of conduits which don't sync correctly because of a incomplete implementation of handling records. | But the current conduit framework does not abstract this common functionality into a set of base classes as it should. This has resulted in a lot of duplicated code throughout KPilot's conduit base, and each conduit has its own way of handling this common functionality. Understandably, this has led to bugs in the syncing algorithms and has made maintainability of the conduits (and KPilot) a much more difficult thing than it should be. For every conduit, the maintainer has to learn how the actual syncing is done. To make matters worse, there are a couple of conduits which don't sync correctly because of a incomplete implementation of handling records. | ||
Line 145: | Line 143: | ||
'''Expected results:''' The student will create an improved framework for KPilot's record-based conduits and (re)implement a (new) conduit as a proof of concept. | '''Expected results:''' The student will create an improved framework for KPilot's record-based conduits and (re)implement a (new) conduit as a proof of concept. | ||
# Documentation about the syncing process of a record based conduit. | :# Documentation about the syncing process of a record based conduit. | ||
## Sequence diagrams detailing sync logic for each of the major scenarios: | :## Sequence diagrams detailing sync logic for each of the major scenarios: HotSync, FullSync, Copy PC to Handheld, Copy Handheld to PC | ||
:## Class diagram detailing: | |||
:##* Inheritance hierarchy | |||
:##* Class relationships | |||
:# Implementation of the abstract record based conduit in the KPilot library. | |||
## Class diagram detailing: | :# (Re)implementation of a (new) Conduit as proof of concept. | ||
## | |||
## | |||
# Implementation of the abstract record based conduit in the KPilot library. | |||
# (Re)implementation of a (new) Conduit as proof of concept. | |||
'''Knowledge Pre-Requisite:''' basic knowledge of C++ is a pre-requirement. Other useful skills, but not mandatory are: | '''Knowledge Pre-Requisite:''' basic knowledge of C++ is a pre-requirement. Other useful skills, but not mandatory are: | ||
Line 161: | Line 155: | ||
* Pilot-link experience | * Pilot-link experience | ||
'''Mentor:''' Adriaan de Groot <[email protected]> | '''Mentor:''' Adriaan de Groot <[email protected]>, Jason 'vanRijn' Kasper <[email protected]>. | ||
'''Mailing list:''' The kde-pim mailing list: http://lists.kde.org/?l=kde-pim&r=1&w=2. | '''Mailing list:''' The kde-pim mailing list: http://lists.kde.org/?l=kde-pim&r=1&w=2. |
Revision as of 15:13, 4 March 2007
This page is an open list for ideas for the 2007 edition of Google Summer of Code. It will remain editable while the submission process is open.
This list is not exhaustive. It is just a collection of some ideas. To get further ideas, you can also look at our list of ideas for the year 2006
Before proceeding, please read the participation instructions. They are useful for students and developers alike.
Notes on editing this page
Please respect the distinction between sponsored ideas and non-sponsored ones: sponsored ideas are those for which a KDE mentor has stepped up. Do not change the ideas listed in that section of the page. If you have an idea but you don't want to be a mentor, add it to the non-sponsored idea list.
When making modifications to existing ideas, please consider whether you're changing it more fundamentally or just superficially. If your changes are substantial, you probably have an entirely new idea. Similarly, if your idea is modified and you feel it no longer reflects your original thought, please split the idea in two, restoring yours.
Please use the talk page if you want to discuss an idea.
Finally, do not delete ideas without a reason for doing so (like, for instance, being contrary to KDE ideals, being completely unrelated to KDE, being unfeasible, etc.) -- you may want to state in the talk page why you removed the idea.
Do not re-add ideas that were removed without discussing first with the developers of the target application.
Past ideas
You may want to take a look at the ideas page for 2006. Some of the ideas there are still valid today.
Project ideas with mentors (sponsored ideas)
These ideas were added by KDE developers willing to be mentors. You can contact the mentors listed for more information or clarification, if needed. You need not submit the exact proposal listed here — feel free to use it as inspiration. Even if you do change the proposal, you may contact the mentors to get their input.
For mentors: when adding an idea to this section, please include:
- 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
KDE Libs
KPassivePopup
Project Information: KPassivePopup is the class that displays information next to taskbar icons, system tray icons or windows without interrupting the user. It is used both directly and by KNotify and is part of libkdeui.
Brief explanation: Convert KPassivePopup to use QSvg for the frame etc. this would allow it to be much more flexible in its visual appearance and could allow us to eliminate the various custom implementations that are floating around. This would include examining these forks and ensuring the same functionality could be cleanly incorporated.
Expected results: The intended result would be a single implementation of KPassivePopup that could be reused without copying code by applications such as Kopete that currently maintain their own versions.
Knowledge Pre-Requisite: A prequisite would be knowledge of Qt/KDE and the ability to setup a KDE build environment. Knowledge of SVG would obviously be a big help.
Mentor: Richard Moore <[email protected]>, Aaron Seigo <[email protected]>.
Solid
Phonon
KHTML
KJS - Scripting Modules
Project Information: KJS is KDE's JavaScript engine that was originally developed for the Konqueror Web browser. It as a light-weight, standalone library that can easily be embedded into other applications to make them scriptable.
Besides being restricted to running in the sandbox of an application usage for text and file processing or other administrative or server side tasks in a command line interpreter are thinkable. Consider what made e.g. Perl successfull. What's lacking are modules providing the necessary functions.
Brief explanation: The project would start out with gathering an overview of typical functions found in other scripting languages like Perl, Python and Tcl. The most important ones would then be selected and implemented in (at first) C++ modules that are dynamically loaded by the KJS command line interpreter.
Expected results: A set of low-level modules like File, CGI, JSON or similar with a documented set of constructors, functions and properties. They should form the base for pure JavaScript modules to be build on top.
Knowledge Pre-Requisite: Some C++ programming knowledge is required. Knowledge about other scripting languages like Python and Perl would be advantageous.
Mentor: Harri Porten <[email protected]>.
Sonnet
Kross
KDE Base applications
Konqueror - web browser
Konqueror & Dolphin - file manager
Plasma
KWin
Strigi: chemistry and biology support
Project Information: Strigi is a promosing alternative to other desktop search tools, like Beagle/Kerry. It has an plugin architecture that allows writing indexing plugins for a specific area, or specific enhanced purposes. Available are both inline plugins (written in C++), as well as plugins that call programs written in other languages via the command line. Strigi is showing progress towards integration to semantic desktop ideas, as in the Nepomuk project. This allows chemical information to be semantically marked up, and easily retrieved.
Brief explanation: The idea of this project is to integrate chemistry and biology knowledge into the KDE desktop, by writing chemistry and biology aware plugins for Strigi. Exact molecule searching on the hard disk will be supported via the InChI. For the rest, normal free text searching will do fine for now. Generation of InChI's will be done via OpenBabel, for files supported by the Chemical MIME's (which has existing KDE support) and kfile-chemical (which is available for KDE3 and KDE4). Optionally, the student can incorporate the chemical text mining tool OSCAR3 developed in Cambridge, UK, to extract InChI's from text documents, like PDF, HTML, etc. Here Strigi's jstream technology come in handy, as it will provide a plain text version for all those formats. Extraction of biochemical information is much easier, as these files commonly plain text already.
Expected results: Strigi plugins that:
- extract meta data for (bio)chemical files defined by the Chemical MIMEs, va the kfile-chemical kfile plugins,
- process files with a (subset of) (bio)chemical MIME with OpenBabel to generate an InChI for indexing,
- (optionally) use OSCAR3 to process plain text and create InChIs for molecules found in that text. Additionally, the student is invited to propose a useful ontology for marking up the extracted chemical and biological information.
Knowledge Pre-Requisite: knowledge of C++ is a requirement, as is high school education in chemistry and biology.
Mentor(s): Carsten Niehaus <[email protected]>, Jerome Pansanel <[email protected]>, Egon Willighagen <[email protected]>, Jos van den Oever" <[email protected]>
Mailing list: [email protected]
KDE Edu
MARBLE - Adding a 2D View
Project Information: Marble is a Qt 4-based generic virtual globe widget which is meant to integrate well with the KDE desktop to provide basic input and visualisation facilities for geographical data. Marble currently lives in http://websvn.kde.org/trunk/playground/base/marble/ and the author would like to see Marble be included with KDE-Edu soon. More information: the Marble description.
Brief explanation: To be properly integrated with other applications a 2D View for Marble will be needed in addition to the preferred 3D View (e.g. for merging functionality of KGeography and Marble). Three steps are suggested:
- reuse the current rendering engine in 2D mode
- write an optimized approach for the 2D case and thereby refactor parts of Marble (especially the texture mapping)
- include adding proper access methods for applications and the user interface
Depending on the knowledge of the applicant the refactoring part can be extended.
Expected results: adding the 2D View Mode to Marble. Optionally, if enough time is available, integrate that view mode in another application like KGeography.
Knowledge Pre-Requisite: basic knowledge of C++ is a pre-requirement. Basic highschool trigonometry knowledge would be helpful. Other useful skills, but not mandatory are:
- Qt experience
Mentor: Torsten Rahn <[email protected]>.
Mailing list: The kde-edu mailing list: http://lists.kde.org/?l=kde-edu&r=1&b=200702&w=2 .
KDE PIM libraries and applications
KPilot - Enhance Record based syncing
Project Information: KPilot is the KDE application which synchronizes Palm OS PDAs with various KDE applications, including KMail, KAddressbook and Calendar. KPilot makes use of the pilot-link library to handle the interaction between the device and the conduits. These conduits are plugins which handle the actual synchronization of the items. For more information see [1]
Brief explanation: The vast majority of KPilot's conduits are record-based in nature. This means that the logical program flow for each of the conduits is very much the same in that they will each:
- Open a Palm database
- Retrieve either all records or just the changed records
- Open a PC data store
- Retrieve either all or changed records
- Handle tri-directional syncing, conflict handling, and merging changed data
- Then write the resolved data sets back to the PC and Palm data stores
But the current conduit framework does not abstract this common functionality into a set of base classes as it should. This has resulted in a lot of duplicated code throughout KPilot's conduit base, and each conduit has its own way of handling this common functionality. Understandably, this has led to bugs in the syncing algorithms and has made maintainability of the conduits (and KPilot) a much more difficult thing than it should be. For every conduit, the maintainer has to learn how the actual syncing is done. To make matters worse, there are a couple of conduits which don't sync correctly because of a incomplete implementation of handling records.
Expected results: The student will create an improved framework for KPilot's record-based conduits and (re)implement a (new) conduit as a proof of concept.
- Documentation about the syncing process of a record based conduit.
- Sequence diagrams detailing sync logic for each of the major scenarios: HotSync, FullSync, Copy PC to Handheld, Copy Handheld to PC
- Class diagram detailing:
- Inheritance hierarchy
- Class relationships
- Implementation of the abstract record based conduit in the KPilot library.
- (Re)implementation of a (new) Conduit as proof of concept.
- Documentation about the syncing process of a record based conduit.
Knowledge Pre-Requisite: basic knowledge of C++ is a pre-requirement. Other useful skills, but not mandatory are:
- Qt experience
- Pilot-link experience
Mentor: Adriaan de Groot <[email protected]>, Jason 'vanRijn' Kasper <[email protected]>.
Mailing list: The kde-pim mailing list: http://lists.kde.org/?l=kde-pim&r=1&w=2.
KDevelop & Quanta
Kopete
Amarok
Oxygen
Usability
Project ideas currently without mentors (non-sponsored ideas)
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.
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.
These ideas don't have a "default" mentor yet. But, if chosen, we will assign one to you.
Feel free to contribute more ideas as well.
Infrastructure
- A way to make bugzilla help in finding duplicated bugs. could be some kind of 'suggested related bugs'
KOffice
A list of KOffice ideas without mentors can be found at the KOffice wiki.
A new design for contextual help (Whatsthis)
Implement Ellen Reitmair's, Olaf Schmidt's, Philip Rodrigues' plan for a new infrastructure for contextual help. ideas_whatsthis_january06_v1.3.pdf