Google Summer of Code 2006/Projects
The program has been completed in 2006. The information here is purely informational
Here is the list of project ideas for Summer of Code 2006.
Integrate AbiWord with dashboard and beagle
Last year Martin wrote the AbiDash plugin which sends clues and notifications to the dashbaord program. Dashboard is a really interesting project which runs in the background in a spare piece of screen real-estate. As different programs gain focus they send "clue packets" which describe what the user is currently doing. Dashboard integrates with the Beagle search engine and uses the clues to perform searchs through the Beagle index. It attempts to find relevent files and relevent pieces of text that could help the user with their current document.
So for example, if a user is employing AbiWord to write an essay on Shakespear's Midsummer Night, the dashboard program would search through the users documents looking for both relevent documents and relevent parts of the documents to what is being typed. It should present the user with useful information without the user having to do any explicit searches. So imagine relevent parts of the "Midsummer's Night's dream" appearing in dashboard as I write my essay. Or if I'm writing a technical paper I get references to previous work in dashboard as I type in Abiword.
Both dashbaoad and beagle are written in mono. This project will be a joint project between the AbiWord, beagle and mono communities.
I personally think that this is a very exciting project that will take the desktop experience to a whole new level of productivity. Martin plus beagle/dashboard guy to Mentor.
Help with the AbiCollab project.
The AbiCollab project enables users to work collaboratively on the same document by immediately broadcasting changes from different Abiword sessions around a peer-to-peer network. The basic functionality and first order corrections for internet lag have been implemented and shown to work. Abiword sessions on different sides of the planet (Australia and Holland), (Australia and the USA) have been connected and typing, deleting and changes within the documents are transported to the remote documents. The first order corrections to internet lag allow the documents to remain in sync even if the users type and delete as rapidly as they can. In addition the usual word processing features like text fonts/style/tables/bullet points etc all get transmitted correctly to the remote document.
However there is tons of work left to do here. If someone is interested please us know and we'll find a piece of the project that would be suitable for a SoC project. Martin and Marc to mentor.
Complete the PangoGraphics class
The idea is to use the pango library to implement complex scripts and bi-directional languages. Currently Abiword cannot represent many of the Indic languages and scripts where a variety of glyphs are combined to make the correct character. Pango has a lot of this functionality however the AbiWord text positioning code needs a rather thorough overhall to make use of pango. Tomas Frydrych has made great progress but the is lots of work left to do here. Tomas has offered to mentor a student who wishes to tackle this.
Implement a Cairo graphics class.
Cario is a next generation, platform independent, 2-dimension graphics system. Cario offers sub-pixel text positioning and a variety of other tasty features. Implementing a cross platform solution to our graphics class would also reduce the effort of maintaining our 3 different targets. Tomas to mentor.
Come up with a UI suitable for the OLPC project
The OLPC project is aimed explicitly at children and the computer screen are either 640x480 or 800x600. Our current UI is not optimum for this evironment. This project would be to find a UI that works for OLPC.
Various enhancements to AbiWord
This would resuse/extend our current footnote/endnote code to embed text within a document. Martin could supervise/mentor this.
Implement Repeating Table rows on different pages
Martin could supervise/mentor this.
Implement "previews" of document
The idea is to display the first 1/2 or 1/3 of the first page of each document once the user selects a document in the file browser. There are a number of ideas on how to do this. Martin could supervise/mentor this.
Implement a C API for some of AbiWord's more interesting internals
Dom can mentor this
Use SWIG + that C API to generate language bindings (Python, Perl, etc.)
Dom to mentor.
Perhaps use the API (or a custom plugin) to integrate Abi with DBUS.
A first attempt might be to export all of Abi's EV_EditMethods over DBUS via a plugin. Dom to mentor.
Implement the PieceTable or Table Layout speed up
AbiWord becomes barely usable on documents of 400 pages or more. we've identified a number of areas where our performance can be improved. Martin, Hub(?) or Tomas (?) to mentor