Google Summer of Code 2009
From AbiWiki
Google Summer of Code 2009 is now being planned. As in previous years, Google has generously sponsored students to work on Free Software projects. AbiWord plans to participate in the program, as it did in 2006, 2007 and 2008.
Organizations may apply to the GSoC program between March 9th and March 13th, 2009. Students may apply to approved mentoring organizations between March 23, 2009, to April 3, 2009 - please see the Google program page for specifics on the timeline!
Project Ideas
This is a list of project ideas with the name of a potential mentor. You can use these ideas as a basis for your proposal, but if you have an idea that is not in this list, feel free to propose it.
Speed up Table Performance
Proposed by: Martin Sevior
AbiWord's current Table layout algorithm was borrowed from GTK+. This has proven to be very robust and comfortably handles merged cells and nested tables, but it gets slow for very large tables (noticeable with over 100 rows). This project would be to improve AbiWord's table performance so that it at least matches that of Firefox.
Start a Latex Importer
Proposed by: Martin Sevior
AbiWord has an export to Latex plugin that supports most of AbiWord's features. This project would be to develop a latext importer that is sufficiently rich so that documents from AbiWord can be exported to Latex then imported back to AbiWord without data loss.
Improve OOXML support
Proposed by: Dominic Lachowicz
(Also willing to mentor: Hubert Figuiere)
AbiWord now has good compliance with Microsoft's OOXML format but it can be improved. AbiWord has an importer and exporter. This project would be to improve this so that a wide range of documents can be exported from AbiWord, imported to Office 2007 then exported back into AbiWord with no data loss.
You can include the "OOXML DrawingML" project in your proposal, but be aware that this will likely be a lot of work. You'd probably want to combine DrawingML support with tying up loose ends in the OOXML importer. You could ignore the OOXML export project entirely.
OOXML DrawingML import
Proposed by: Hubert Figuiere
(Also willing to mentor: Dominic Lachowicz)
Microsoft Office OpenXML includes DrawingML - a markup for drawings and diagrams. It is used extensively inside the Office 2007 application suite.
This project would consist of writing an AbiWord independent library to import DrawingML and render to Cairo (and SVG). As a practical example, importing using this library, should be implemented in AbiWord for use by the 'ooxml' importer.
The separate library must be licensed under (L)GPLv2+.
Revamp the style dialog
Proposed by: Hubert Figuiere
(also willing to mentor Martin Sevior )
The style dialog is currently awkward to use. It needs to be reworked. This project would involve the following tasks:
- redesign the UI
- reimplement the UI in a cross-platform way with at least a working front end. This might involve scratching a bit the UI abstraction layer to minimize the front end work.
Some possible ideas proposed by Robert Staudinger:
http://www.abisource.org/~robsta/mockups/abiword-styles-simple.png
http://www.abisource.org/~robsta/mockups/abiword-styles-full.png
A fair bit of progress was made on this by Ryan Pavlik in 2008 GSoC but it requires more work to finish.
Redesign the templates
Proposed by: Hubert Figuiere
Using and editing AbiWord's templates is very awkward. The idea is to redesign it to be more user-friendly.
Port Abiword for Windows to Unicode
Proposed by: Jordi Mas
As many of you already know Abiword in Win32 is an ANSI application. The idea is to port it to the Unicode API, which has the following benefits:
- Support on Windows for the many new "Unicode only" languages such as Hindi, Georgian, Nepali,Armenian, Gujarati, Hindi, Kannada, Konkani. We already have Abiword translated to Napali that is only a Unicode language and that currently does not work. And more will come.
- Improving international and multilingual support:
- Better integration with the features of the NT platform
- Better support of the Multilingual UI (MUI) features of Windows 2000/XP/Vista
Internally, AbiWord handles Unicode text quite well. Where it has problems (on Windows) is at the boundaries. The UI uses Microsoft's "ANSI" controls, rather than the "Wide Character" controls to display and enter text. These will need to be ported. AbiWord uses Microsoft's Uniscribe technology to display text in its editing area. There are some bugs in this code. Part of your proposal could be to improve that to support more scripts. You a good test might be to run Indic and East-Asian texts through it and fix the bugs you see. Other problems include handling "international" file names, drag & drop of documents with international names.
Jordi has done some preliminary work that he never had the time to complete. The project should resume from there.
Jordi's email mentions a lot of the work that's been done and is left to do. In it, he mentions 3 routes that this project could take. Your proposal should pick one and defend the decision.
Search bar
Proposed by: Jordi Mas
The idea is to have a search bar, like the Firefox one, at the bottom of Abiword that replaces the current search and replace dialog boxes. You could access to more advanced functionality using an Advance button that brings you to the advance functionality.
There was some discussion of this a few years back and most of the people seemed excited about the idea.
In your proposal, please document which platform/toolkit(s) you will be implementing this for (GTK+, Win32, Mac OSX).
This proposal is probably not long enough or interesting enough to be its own GSoC project. Students should combine it with another proposal, or think of other ways to improve AbiWord's search+replace experience. Some ideas there include:
- Find/replace text with a particular format (eg. bold, italic, red, etc.)
- Apparently, WordPerfect used to have this feature. You may want to use this as a starting point
- Find/replace with regular expressions. This would be a power-user feature. You can use GRegex in this project if you'd like.
- Pick some find/replace bugs from bugzilla
- Add a "live search", such as implemented in the OLPC port of AbiWord (called Write). The search bar in Write finds the results while you type in your search query.
- Show a list with possible search terms while the user is inputting his search query. You can probably re-use the the 'live search' code for this to search through the document to find all the words the user might be interested in.
Implement Borders and Shading
Proposed by Martin Sevior
This is the only feature of mainstream wordprocessors which AbiWord does not implement. The project would be add this feature to the Abiword codebase. It will reuse a lot of the infrastructure we have in place but will require careful work and the cairo graphics class to avoid creating screen dirt.
Port AbiWord to use gettext
Proposed by Robert Staudinger
Currently AbiWord is using a custom strings file format for translatable text exposed in the user interface, even though translations done in the standardised "po" format. We would like to
- Change the build-system to create and install "mo" files.
- Adapt the string lookup classes to use gettext.
- Make glade files translatable.
- Provide i18n infrastructure for the plugins.
Bug reports:
- Bonus points: If the whole thing could be abstracted to allow use MacOS X internationalization infrastructure on MacOS X, it would be awesome. Note that it is not a request to implement the backend. -- Hub 20:18, 1 March 2008 (CET)
Design of an api for embeding abiword as a widget in third party applications
Proposed by Martin Sevior
This idea was proposed by Fabian Sturm but Martin Sevior or Tomeu Vizoso would mentor a student who undertook this project.
The project would involve a fair amount of research and design as well as code.
* Search for existing rich text widgets (in Gtk, Qt, MFC...) * Compare the existing widgets apis and try to find out what works good and what not * Compare different applications embedding a rich text widget and find out what was easy for the developer to achive and what was hard (e.g. look at tomboy, sugar write, gedit...) * Make a proposal for an easy to use widget api based on the libabiwidget api * Adapt libabiwidget api to this new/improved design * Code small sample programs showing the different functions to use the widget (load/save documents, change text style from code, embed links etc.)
Application process
AbiWord is primarily written in the C++ programming language (and to a lesser extent, C). Ideal applicants would have some experience in one or both of these languages and would be able to demonstrate this.
The closing date for applications is March 31, 2008. Students wishing to work on AbiWord over the 2008 summer for USD $4500.00 should follow the steps outlined here.
Google Guide to SoC applicants
The Application
*Name:* *Email:* *Project Title:* *Synopsis:* A short description of your project. *Benefits to the AbiWord (and/or other) project(s):* *Deliverables:* Quantifiable results. E.g. "At the end of my project, AbiWord's piece table will be 50 times faster." *Project Details:* A more detailed description of your project. *Project Schedule:* How long will the project take? When can you begin work? Do you know of any planned absences or other major conflicts (summer classes, vacations, etc.) *Bio:* Who are you? What makes you the best person to work on this project? *Amount Requested:* (Put in $4500.00)
Additional Requirements
In addition, we require you to make a screenshot as described below:
- Checkout abiword from our svn repository.
- Make a debug build of the application. (Pass --enable-debug to configure, or when compiling on Windows, use "ABI_OPT_DEBUG=1 make" in place of "make")
- The file abi/src/wp/ap/xp/ap_EditMethods.cpp is the file that describes the functions that are called from the Graphical User interface.
- The function "fileInsertGraphic" is called when the user chooses to insert a picture. Just before returning, add a debug statement:
UT_DEBUGMSG(("Image has been inserted!!\n"))
- Take a screenshot of the debug output from abiword showing this statement has executed.
- Attach a png image of this screenshot to your application email or post the screenshot on the web somewhere and include a link to it in your application.
Mentoring Organization Application
Describe your organization
The AbiSource community consists of a highly skilled group of people interested in, as our tagline states, bringing Word Processing to Everyone. We do this for example by making our software, AbiWord being our flagship product, available on as many (operating) systems as possible, and adapting it for use on the One Laptop Per Child system.
Why is your organization applying to participate in GSoC 2009? What do you hope to gain by participating?
AbiWord has had a very rewarding experience with GSoC during the past 3 years. We hope to improve on our successes by attracting new talented developers to our organization.
Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
We've had a fantastic run so far and are really grateful for Google's support. We've had 14 successful projects and only one missing student over three years. Some of biggest improvements and new features have been implemented through the GSoC program. Our biggest complaint has been that not all students have been truthful and forthcoming with their availability.
See Google Summer of Code 2006, Google Summer of Code 2007 and Google Summer of Code 2008 for information related to our involvement in GSoC.
Who will your organization administrator be? Please include Google Account information.
Hubert Figuiere
What license(s) does your project use?
What is the URL for your ideas page?
http://www.abisource.com/wiki/Google_Summer_of_Code_2009
What is the main development mailing list or forum for your organization?
abiword-dev AT abisource.com (Archives)
What is the main IRC channel for your organization?
Who will be your backup organization administrator? Please include Google Account information.
Marc Maurer; uwog AT uwog.net
Who will your mentors be? Please include Google Account information.
- Marc Maurer; uwog AT uwog.net
- Dominic Lachowicz; domlachowicz AT gmail.com
- Martin Sevior; msevior AT gmail.com
- Hubert Figuiere; hfiguiere AT gmail.com
- Robert Staudinger (backup mentor) robert.staudinger AT gmail.com
What criteria did you use to select these individuals as mentors? Please be as specific as possible.
All of these individuals are highly-motivated, long-standing contributors to the AbiWord project. All of them have a deep first hand knowledge of the AbiWord codebase and are community members "in good standing". All have been involved in previous GSoC projects through proposing ideas, reviewing applications, and mentoring students.
What is your plan for dealing with disappearing students?
We've had a student disappear before. It's thoroughly unpleasant. We hope to minimize the damage done by a missing student by requiring routine code updates.
What is your plan for dealing with disappearing mentors?
This has not been a problem in previous GSoC programs. But we plan for each project to have at least one "backup" mentor who remains involved in each student's particular GSoC project, who shall assist in cases where the primary mentor cannot fulfill his/her obligations.
What steps will you take to encourage students to interact with your project's community before, during and after the program?
All of our mentors strongly encourage would-be students to get involved on both the mailing list and the IRC channel, where most of the developers hang out.
This year, our project list has generated a lot of interest before we'd even submitted it to Google. All of the mentors with their contact info listed on the proposal page have gotten at least 1 email from an interested student.
What will you do to ensure that your accepted students stick with the project after GSoC concludes?
AbiWord's main strength is its community. We strive to provide a fun, cooperative atmosphere with interesting and rewarding projects.