Summer of Code 2008/proposals

From Apache OpenOffice Wiki
Jump to: navigation, search




Page preview for Writer

Similar to OOo Impress' slide sorter pane, provide similar functionality for Writer. Initially, it should be possible to see page thumbnails there, and navigate the document with it. From an architectural POV it makes a lot of sense to strip down the existing Impress slide sorter and reuse that for Writer. So while this is a Writer task it will start in the graphics team.

  • Reguired skills/knowledge: C++, familiarity with Writer and UNO a big plus

Style optimizer for Writer

Often, people format their text document in weird ways, using whitespace for formatting, putting in section numbers literally instead of using the numbering feature etc. This proposal is about detecting such suboptimal content and converting it into a properly formatted document (using styles wherever possible).

  • Reguired skills/knowledge: fluent in one of the languages OOo has an UNO bridge for, familiarity with Writer and Writer API a big plus
kendy at novell dot com, fstrba at novell dot com

Word macro compatibility

Recently Sun and Novell announced to pool resources to provide VBA macro compatability see [ here].

Currently work in the project is concentrated on providing Excel support by

  • providing the framework for the compatibiltiy api via a plugable component
  • modifying the basic engine to support more compatibility features
  • porting the Helperapi code (for excel) to c++ (see. VBA & Porting_notes)


  • extend the base framework by developing helper objects and implementations to be used by both the excel and writer compatibility object implementations
  • port the existing (word) helper api objects from Java to C++

Required skills/knowledge: C++, Java. Knowledge of UNO, OOo's writer API and some experience with VBA macros and Word VBA api a big plus

noel.power at novell dot com

RTF Tokenizer

The new OOXML import filter for Word documents (.dotx) will soon have a better import quality than the existing RTF import filter. The concept of this new filter allows to plug in doc and rtf tokenizers so that these formats can be handled by the same filter. A doc tokenizer is already in the works, an RTF tokenizer would be a very welcomed addition.


  • understand how the tokenizer is embedded into the filter
  • tokenize RTF

Required skills/knowledge: C++. Knowledge about Word's document model and/or the RTF format would be advantageous.

Henning.Brinkmann at sun dot com

Enhanced usability of working with page attributes and properties

Currently changing page attributes or adding page properties like headers and footers is hard to understand. Users that don't know about hard page breaks, page styles and follow styles will have a hard time to format pages to their likings. A nice UI that hides the technical details and uses terms of the user space would help a lot.


  • learn about Writer's page styles and their (UNO) API
  • design and code the new user interface based on this API

Required skills/knowledge: C++; UI design

Oliver.Specht at sun dot com

Improvements of the HTML filter

The current HTML filter generates (and imports) HTML 3.2 with a few extensions. Possible improvements are:

Support HTML4: It should be adapted to save clean HTML4. This includes

  • storing some features as CSS rather than HTML tags
  • removing Writer's HTML extension by turning them into CSS extensions or by entirely removing them
  • export of additional features that are supported by Writer and HTML4/CSS, but currently not by the HTML filter

To be able to re-load the files that Writer saved again, the HTML import needs to be adapted, too.

Turn formulas into MathML (not GIFs): Math already can write and read MathML (though somewhat limited) but when HTML is exported or imported, this capability is not used. It should be possible to utilize it for an improved filter.

Required skills/knowledge: C++. Knowledge HTML.

Michael.Brauer at sun dot com

HTML import/export: XForms

Writer supports XForms, so does ODF. But although HTML supports XForms, too, the HTML import and export so far does not.

Required skills/knowledge: C++. Knowledge about XForms and HTML.

Michael.Brauer at sun dot com

Grammar Checking Framework

We like to have a good sample implementation for our recently introduced and still rudimentary Grammar Checking Framework (API and UI). Since there is already a working tool named 'LanguageTool' that is available as extension to do this we like to use that one as basis for the sample implementation. Because

  • it already works with OOo and therefor should be very easy to make use of
  • it supports English and thus allows a lot of people to review the actual results


  • get a good working sample implementation
  • extend the API where needed
  • modify the UI to display and edit the results provided
  • implement missing parts in the framework

Required skills/knowledge: C++, UNO API knowledge would be a plus

Thomas.Lange at sun dot com


Templates for Charts

Into integrate the possibility to create and use templates for charts, see issue 33793. It will help users to speed up their workflow and ease the creation of stylish charts. There should be an easy way to create a template from an existing chart. When creating a chart the user should be able to choose between different templates. Some useful default templates should be offered, for example line charts with different dashes or bar charts with different hatchings.

  • Required skills/knowledge: C++, ability to understand and manipulate complex systems, general knowledge about charts
  • Useful skills: ability to build and debug, basic UNO API knowledge, ODF or general XML knowledge, knowledge about modules chart2 and xmloff
Ingrid.Halama at

Bubble Chart

Into integrate the possibility to create bubble charts, see issue 64689. The new chart type will be offered in the chart wizard and chart type dialog. An additional data range for the bubble sizes needs to be selectable. According bubble shapes must be created for the view.

  • Required skills/knowledge: C++, ability to understand and manipulate complex systems, general knowledge about charts
  • Useful skills: ability to build and debug, basic UNO API knowledge, knowledge about the UNO drawing API, knowledge about modules chart2
Ingrid.Halama at

Stacked label support for bar charts

This task is about adding support for stacked, or structured category label support in horizontal and vertical bar charts. The structure of category labels is inferred from the structure of the cell range that provides the category label values, especially from how the merged cells are layed out. See Issue 82971 for more details.

If you are interested in undertaking this task, please take a quick look at the existing chart rendering code to see whether or not you feel comfortable with the existing code. The existing code may be complex, so make sure you feel comfortable with it before you make your proposal.

  • Reguired skills/knowledge: C++, familiarity with UNO and a big plus
kyoshida at novell dot com

Improve Calc autofilter

In comparison to Calc, Excel 2007 has a much improved cell autofilter implementation. This proposal is about improving the existing filter inside Calc. This blog gives you the basic idea behind this task. At minimum, we are looking to add support for multiple entry selection to the existing autofilter, by adding check box to each filter item entry. If time permits, we might go even further.

  • Reguired skills/knowledge: C++, some familiarity with Calc a big plus
kyoshida at novell dot com

Improve numerical stability of spreadsheet functions

Some statistical and financial analysis spreadsheet functions need improvement in numerical stability, for example for very large and/or small values, see issue 18704 and dependencies.

  • Reguired skills/knowledge: C++, knowledge of numerical analysis and algorithms, mathematical background
Eike.Rathke at sun dot com

Add new spreadsheet functions and parameters according to ODFF

The OpenDocument Format Formula specification (ODFF aka OpenFormula) defines several new spreadsheet functions and new optional parameters to already existing functions that have to be implemented.

  • Reguired skills/knowledge: C++; for some statistical functions knowledge of numerical algorithms and mathematical background
Eike.Rathke at sun dot com

Component to check spreadsheet documents for potential errors

Write an extension that checks a spreadsheet document for potential errors in formulas, presents a list of the findings to the user, and allows to correct them.

Things to look for could include

  • Cells that contain numbers stored as text and are used in formulas,
  • Number cells that are not used in any formulas,
  • Empty cells that are used in single-cell formula references.

The list is not meant to be exhaustive.

  • Required skills/knowledge: Java or C++, spreadsheet usage
Niklas.Nebel at

Watch Window

A Watch Window is a separate, small window that remains "on top" and enables users to monitor a selected set of cells, see issue 28386.

This could be implemented as an add-on component with a modeless dialog containing the list of watched cells as well as the UI to add or remove cells.

  • Required skills/knowledge: Java or C++
Niklas.Nebel at


Implement additional 3D slideshow transitions

Building on top of a successful [1] from last year, the goal is to add more 3D transitions to the Impress application. A transition is an animation where one page is visible in the beginning and another in the end. It is used during presentation slideshow to switch pages.

The already existing OpenGL transition engine gets the previous and next page as a prerendered image, and then gets the stage (i.e. the screen) exclusively, for the duration of the transition.

  • Reguired skills/knowledge: C++, OpenGL. familiarity with UNO is welcomed
rodo at novell dot com, tbehrens at novell dot com

Port Impress 3D slideshow transition framework to Windows

Building on top of a successful [2] from last year, the goal is to port the underlying OpenGL framework to Windows.

The already existing OpenGL transition engine gets the previous and next page as a prerendered image, and then gets the stage (i.e. the screen) exclusively, for the duration of the transition.

  • Reguired skills/knowledge: C++, OpenGL, WGL. familiarity with UNO is welcomed
rodo at novell dot com, tbehrens at novell dot com

Standalone presentation viewer

In comparison to PowerPoint, OOo Impress does not have a standalone presentation viewer, although this greatly simplifies handling for inexperienced users. Furthermore, it offers a chance to pursue different routes in terms of UI and functionality, that might not (easily) fit in the main Impress application.

  • Reguired skills/knowledge: some familiarity with UNO a big plus, preferred implementation language is C#
rodo at novell dot com

OpenGL canvas backend

With a DirectX-based Canvas implementation already available for Windows, a natural move is to provide an OpenGL-based on for the unixoid platforms OOo runs on. This proposal is about providing an initial XCanvas-implementation that solely uses OpenGL for rendering.

  • Reguired skills/knowledge: C++, OpenGL, some familiarity with UNO a big plus
rodo at novell dot com

Create a native CoreGraphics canvas for Mac OSX

The current Aqua port for OOo uses vcl as the Canvas rendering backend. This proposal is about writing a native Core Graphics implementation, bringing anti-aliasing and lightning-fast alpha blending to the components that already use the canvas. Although a 100% feature-complete implementation seems to be unrealistic given the short timeframe, simple Impress documents should already render correctly.

  • Reguired skills/knowledge: C++, familiarity with OSX, and optimally Core Graphics, some UNO know-how a plus.
ericb at openoffice dot org, tbehrens at novell dot com

Use PDF import's layout recognition for other vector formats

OOo's newly implemented PDF import employs some sophisticated layout recognition techniques, to generate a layout-compatible document. Leveraging this framework for other vector formats will make OOo an editor not only for PDF, but also for PostScript, EMF, XPS - whatever the successful applicant for this task chooses to import.

  • Reguired skills/knowledge: C++, some knowledge about the vector format to be imported. familiarity with UNO is welcomed
tbehrens at novell dot com

Implement an AutoCAD vector import for OOo

To complete OOo's already impressive list of import filters, this proposal is about adding an AutoCAD import for Draw. There's a spec at [3] to start from.

  • Reguired skills/knowledge: C++, some familiarity with AutoCAD and UNO is a plus.
fstrba at novell dot com

Add animation support to Impress Flash export

Since OOo2.0, the Impress flash export lacks support for animation effects. This task is about adding at least initial support for a selected set of animations (5 common ones of the entry, emphasis, and exit groups, plus a set of slide transitions) to the Flash export filter.

  • Reguired skills/knowledge: C++, familiarity with Flash and swf file format and Actionscript, UNO know-how is a plus.
cl at openoffice dot org, tbehrens at novell dot com

Create a Visio import filter for Draw

OOo currently lacks support for a Visio import filter. This proposal is about writing one, using the ODF format as input format to be loaded by the OOo application. Although a full blown filter seems to be unrealistic to be written within the short timeframe, large parts of Visio documents should be able to be filtered correctly.

  • Reguired skills/knowledge: C++, familiarity with Visio, and a fearless attitude towards poking into binary files.
sj at openoffice dot org, fstrba at novell dot com

Create a diagramming sidebar extension for OOo Draw/Impress

OOo's gallery is currently a bit lacking when compared to e.g. Visio's way of easy diagramming selection. This proposal is about providing a diagramming extension for the Draw/Impress panes, presenting diagram topics, most-recently-used list, meta-grouping or topics (referring to one clipart item from more than one topic), smaller thumbnails etc. Or maybe extend the gallery towards these goals.

  • Reguired skills/knowledge: C++, some OOo core coding experience a big plus.
tbehrens at novell dot com, kami_ at openoffice dot org


Joins in dBase queries

Queries to dBase files can currently contain one table only. Scope of the project is to enhance Base' built-in simple query engine to be capable of executing statements line SELECT table1.field1, table2.field2 FROM table1, table2. The dBase driver, the text/csv driver, and the Spreadsheet driver would all benefit from this extension.

Be prepared to dig around here before starting the project, the project touches low-level core implementations, including some heavy-to-read STL stuff, so be prepared to invest some time before writing the first line of code.

  • required skills: C++, SQL knowledge
  • useful skills: Lexx and Yacc
  • Mentor: Ocke.Jansen at
  • Contact:
  • effort: 6 weeks for an experienced developer
  • more information on the project page

SDBC driver for LDAP directories already features accessing LDAP data, by shipping Mozilla components which enable access to LDAP servers. However, this solution has some disadvantages, the most prominent being that the broad variety of LDAP schemes (i.e. which LDAP classes and attributes are actually used to reflect the data being of interest) is not captured currently - we use a fixed mapping from LDAP to an OOo table, which seriously limits the use of this feature for some people/organizations. Also, including Mozilla binaries is a constant source of hassles for builds done for the various Linux distributions, to the grade that they effectively disabled the complete functionality.

To enable everybody to access the LDAP data of her choice in OOo, we would need to write a dedicated SDBC driver, which "flattens" an LDAP directory to a database table (i.e. provides the data of an LDAP directory as set of rows), but would be fully customizable. This means the user can herself decide which LDAP attribute should be mapped to which "table column" in the "databases table" provided by the SDBC driver.

  • required skills: C++, familarity with UNO
  • useful skills: familarity with LDAP, familarity with OOo's database access API
  • Mentor: Ocke.Jansen at
  • Contact:
  • effort: 4 weeks for the driver, 2 week for the customizability, 3 weeks for a possible user interface
  • more information on the project page

Dialogs with Form Functionality

When creating a form, the user always needs to bother with a Writer document. Very often, this is much too oversized. It would be sufficient to have a simple dialog which contains all the data access controls.

The project is to (in different steps) - extend the dialog runtime engine to (optionally) include data-aware form controls - create a form designer for dialog-based forms (similar to the existing Basic Dialog IDE) - implement persistence of dialog-based forms - embed dialog-based forms into database documents (.odb)

Depending on more fine-grained planning, it might become apparent that not all of this can be done in the scope of a Google Summer of Code project, and reasonable milestones need to be defined.

  • required skills C++, UNO
  • useful skills: familiarity with OOo's database access and form API, as well as OOo's toolkit API
  • Mentor: Frank.Schoenheit at
  • Contact:
  • estimated effort: 3 months

New+Enhanced Form Controls

Currently, we lack some more sophisticated controls for entering data into forms. This includes controls for

  • Hyperlinks: This could be specialized text fields, which interpret their content as URL, means they display it in a special way, their text should be clickable, and they allow to browse for an URL.
  • Multimedia Content: Currently, we only have image controls, which allow to interpret binary content found in a database as image. But additionally, we should have at least a “sound control” which allows to store sounds, and play them on request.
  • Unspecified Binary Content: In addition to controls dedicated to special kinds of binary data (such as images and sounds), we should have a generic binary field, which allows to store/load BLOBs (binary large objects) from any source. This would allow the user to store any files in a database, without OOo interfering with this.
  • References to Binary Content: Image as well as sound controls (if we have them) should be able to work with URLs, instead of direct binary content. At the moment, an image control can be bound to a binary field, and tries to interpret any data found in this field as image stream.
    We should allow for databases where only references (aka URLs) to images are stored, and adjust the existing image control (as well as the possibly upcoming sound control) in a way that it can be bound to a text field, interpreting the content as URL to the real data.

Except the Hyperlink control, probably all other types imply the extension of existing implementations, instead of creating new ones. This means that this project is not really self-contained, but requires some knowledge in the existing implementations, or at least the will to wade to them before doing any real work.

  • required skills: C++, good knowledge of UNO, OOo's component model
  • useful skills: knowledge in existing control implementation
  • Mentor: frank.schoenheit at
  • Contact:
  • estimated effort: 3 weeks for the hyperlink control, 4 weeks for the multimedia control, 2 week for the "unspecified binary content" control


Support of Universal Business Language (UBL)

The Universal Business Language (UBL), a royalty-free library of standard XML electronic business documents, is successfully being adapted by governments and companies (PDF - 3 MB) all over the world. A great chance for to become even more popular in this sector, when being used in the XML electronic business flow to view, edit and sent such UBL documents.

This functionality might be created as standalone UNO component, using existing XML technologies of such as XSLT and XForms in conjunction with Office templates containing macros.

  • Required skills/knowledge: XSLT, Java and a OOo Macro language as StarBasic, JavaScript or BeanShell (Java). Familiarity with UNO is welcomed
sus at, Svante.Schubert at

Enhanced SVG export filter

OOo has very limited SVG export functionality. This proposal is about improving the SVG export substantially, e.g. creating SVG that contains multiple slides and can be navigated trough with mouse or key events. It's also conceivable to add animation support for Impress documents, comparable to what the Flash export filter provided in OOo 1.x

  • Reguired skills/knowledge: C++, familiarity with SVG, some UNO know-how.
ka at openoffice dot org, kendy at novell dot com

GUI builder for OOo

Editing OOo's dialogs with a GUI is currently only possible with the OOo Basic dialog editor, which is lacking in several ways. This proposal is about providing support for OOo's new xml resource format in a GUI editor, by e.g. providing a plugin for Glade.

  • Reguired skills/knowledge: familiarity with the chosen dialog editor & its implementation language
jcn at openoffice dot org, pl at openoffice dot org

Crosscompile Win32 OOo on Linux using MSVC in Wine

Compiling OOo for Windows is a major pain and comparatively slow, but often required for the OOo hacker to have her CWS approved. Using the free Microsoft compiler editions combined with fully FLOSS tooling would permit virtually everybody to provide OOo Windows builds. This proposal is about researching this issue, provide the necessary changes to the build system (and maybe Wine) to make that possible. There's been a proof of concept that "wine cl.exe" actually works.

  • Reguired skills/knowledge: familiarity with Wine, the command line and the OOo build system are a big plus
tlillqvist at novell dot com, kendy at novell dot com

Template preview

Currently, OOo's template dialogs has provide hard-coded previews, that do not take the document at hand into consideration. This proposal is about providing true preview functionality in the template dialog, such that a user can judge appearance of individual templates before actually applying it.

  • Reguired skills/knowledge: C++, familiarity with UNO a big plus
kendy at novell dot com

Performance Improvement

There are several known performance in OpenOffice, and clearly more that can be found with improved profiling. The exciting part of this task is clearly, finding and understanding sillies in the code - mis-uses of otherwise sensible APIs, problematic code structures and so on; and then with the minimum of code tweaking them to make them fly. As part of this, a small improvement to KCachegrind's visualisation will also be required (basic C++). We will also look at reducing memory use as an extensions. Not really a single task, but a collection of incremental wins over some weeks.

  • Required skills/knowledge: C/C++, familiarity with Linux, profiling
Contact (please CC me)
michael meeks at novell dot com, kendy at novell dot com

ODT/PDF export from Wiki documentation is being moved to the Wiki. This makes it easier for people to contribute to the content of the documentation, but producing a PDF of ODT of the entire Wiki document or book is not yet possible. The Wiki needs a MediaWiki extension developed that will provide a way to convert an aggregation of wiki pages (a "book") to ODT and/or PDF.

  • Required skills/knowledge: PHP and XML, familiarity with ODF a plus
ccornell at, at

WebDAV Versioning (with the DeltaV protocol extension)

To support office collaboration scenarios (e.g. remote collaboration document authoring) OOo needs a tool to provide remote versioning. With the already implemented WebDAV feature we've got the basis for such a tool and the DeltaV protocol extension of WebDAV could add the versioning functionality.

The goal is to provide at least the basic feature "core-versioning" of the protocol.

  • Required skills/knowledge: C++
tobias.krause at

OXT Extension wizard for templates and XSLT based filter

OXT extensions provide a nice way to bundle a group of templates and share them with other users. Templates are normally created with the office and the idea is to provide a wizard that helps on a higher abstraction level to collect templates and all necessary oxt specific information and build an oxt extension package. The second part is to extend the XSLT filter dialog to export new created XSLT based filters as an oxt extension as well. Currently it is only possible to create a jar file. The new feature should collect some more oxt related info and should create a well formed oxt extension package. The goal is to simplify these tasks and make it as easy as possible to create oxt extension packages that can be easy deployed and can be uploaded in the extensions repository to share them with many other users.

  • Required skills/knowledge: Java or C++
Contact at

UNO Web Service Proxy - Add Support for Anonymous Complex Types

Web services are more and more emerging. Some examples are Google and Amazon which are providing a SOAP Web service interface for their traditional services, like searching the Web or querying the online bookstore. These interfaces can be reached using UNO and StarBasic using the UNO Web service proxy.

The current implementation of the UNO Web Service Proxy lacks support for a very important WSDL feature, that is widely used by existing Web Services - anonymous complex types.

The goal for this project is to add support for anonymous complex types to the existing UNO Web Service Proxy implementation.

  • Required skills/knowledge: Java, UNO, JAX-RPC, WSDL, SOAP, Netbeans
kai.sommerfeld at

Extended Basic/Dialog Library OXT Export

The OOo Basic Macro Organizer already allows to export a Basic/Dialog Library as extension, but without support for the description.xml file described in:

The goal of this project is to add support for this by creating a corresponding dialog allowing the user to edit all supported elements and by saving the description.xml file into the oxt file afterwards.

  • Required skills/knowledge: C++, Extensions
andreas.bregas at

Dialog Editor: Single dialog import

The Dialog Editor allows to export a single dialog as xdl file and - in case of localized dialogs - additional properties files containing the resource strings. This is very useful for adding dialogs / option pages to extensions. But there is no corresponding import functionality which makes it difficult to reimport and change dialogs exported before.

The goal of this project is to add this functionality. It has to be evaluated first how this can be done in a reasonable way as the dialogs are not handled like documents supporting Load/Save/Save as... but stored implicitely in the Library Container system. So there are several options how importing a dialog could work, e.g. replacing the current dialog after warning the user, adding it as new dialog after solving potential name conflicts. Also potential conflicts concerning the languages supported by the imported dialog respectively the target library have to be handled.

  • Required skills/knowledge: C++
andreas.bregas at

Netbeans OOo API Plugin: Matisse GUI builder for dialogs

Matisse is a powerful tool for creating graphical user interface elements. For the API plugin this can be used to create dialogs that can be used in OOo extensions created with NetBeans. API plugin for NetBeans

Creating dialogs with

The result of this project is a dialog editor in NetBeans for creating dialogs, similar to the Java dialog editor in NetBeans. To achieve this, new UI elements representing the available UNO controls have to be created in Matisse. The final result is a dialog (.xdl file) usable in extensions.

  • Required skills/knowledge: Java, API, ideally NetBeans API, XSLT
steffen.grund at

Netbeans OOo API Plugin: UNO IDL language support

Currently, the IDL language support consists only of syntax highlighting. With NetBeans 6 there is a project to support a generic language syntax. This can be used to create a full support including e.g. auto-completion and tool-tips in IDL files. API plugin for NetBeans

Generic Language Framework in NetBeans (Project Schliemann)

The work for this project consists of creating the description of the static elements of IDL files. But to provide a meaningful auto completion, the currently available keywords have to be taken dynamically from With this, not only the build-in UNO types of OOo, but also added types from registered extensions can be offered for auto-completion.

Since there may be performance issues regarding the usage of the Generic Language Framework, this project includes some evaluation work.

  • Required skills/knowledge: Java, API, ideally NetBeans API
steffen.grund at

Enhance/Create native loader to reduce startup time

Performance of an application is not just about total execution times of tasks that are executed but also user responsiveness. For startup that means that the time until the first UI response is visible for the user is as important as the total startup time.

To achieve this the binary loaders should communicate through a native API with already running instances and use native APIs to show the splash screen on startup instead of bootstrapping the URE first. There are already loaders with reduced functionality or prototypes for loaders that need be finalized.

  • Required skills/knowledge: C++, GTK, Windows API
hennes.rohling at

New Tasks

If you have a task that is challenging enough, and there is an Project Member willing to mentor the task, feel free to coordinate with the appropriate project lead. If the appropriate project has been found and it supports the task, add it below and make sure the mentor applies with the web app.

Each entry should contain the task description, required skills, project mailing list for discussion and personal contact. Links to the To-Dos are appreciated provided that the task is well described there ;-)

===Example entry===

This is just an example - the real entry must not start with a space at the beginning
of the line.
A full description of the task should be here; one that will help to see that this task
is important,  and interesting to hack on.  Alternatively it could be an exact link to
the description that is already in To-Dos.

* Required skills/knowledge: Language, technology1, technology2, ...

; Contact
: The.Mentor at organization com
Personal tools