Summer of Code 2007/proposals

From Apache OpenOffice Wiki
Jump to: navigation, search




UNO specifications changes in Eclipse Integration

This project aims at improving the way to develop extensions and UNO components using Eclipse. This project should help the developer to changes its specifications easily. This project could be parted into several smaller parts.

See the Todo task description for further informations.

  • Required skills/knowledge: Java, Grammar & Compilers
  • Usefull skills: Eclipse API, JavaCC, UNO & UNO IDL
CedricBosdo at


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
  • Contact:
  • Mentor: Ocke Janssen - Ocke.Janssen at Sun.Com

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 advantage would be to not slay the user with things she does not bother – a writer document offers a lot of possibilities which are not relevant for a form. In some cases, a full writer document does even contradict to what users expect from a form – one thing to mention here is that documents are always freely sizable, which is nothing you expect from a carefully designed form, where controls are placed at concrete positions and have a fixed size.

The project is to - 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
  • Contact:
  • Mentor: Frank Schönheit - Frank.Schoenheit at Sun.Com

Embed Derby into Databases Base features an abstract mechanism to embed database backend files into OOo databases (.odb). Currently, this is implemented for HSQLDB, which is used as OOo's default database engine.

To allow this feature for other engines, one must:

  • virtualize the engine's file access, so that it re-routes all its file operations through an abstract API.
  • implement this API on the OOo Base side

The project is to do those implementations for Apache Derby database.

  • required skills Java, C++
  • useful skills: OOo's database access API, OOo's component technology (UNO)
  • Contact:
  • Mentor: Ocke Janssen - Ocke.Janssen at Sun.Com


Integration of R into Calc

Create an add-on component that allows a Calc user to let the R environment do calculations on data from Calc cells and put the results into the spreadsheet again.

This should include a dialog to select input parameters and options, and allow results to be values or graph images. Note that the incompatible licenses (R is under GPL) have to be taken care of, possibly by starting R as a separate process.

Some more thoughts on the subject have been collected at Statistical Data Analysis Tool#Third Party Library Integration.

  • Required skills/knowledge: Some familiarity with statistical methods
Niklas.Nebel at
Leonard Mada
(on statistics and R syntax)
discoleo 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

Non-Linear Optimizer Development for Optimization Solver

This task involves developing a new optimizer to solve general constrait non-linear model for the Optimization Solver component. There is now an independent optimizer testing & development framework for non-linear optimizer, so the applicant would not need to understand the entire OO.o code base.

Note that the code for Optimization Solver is still in the process of upstreaming, so the applicant would be working on a specific branch that contains the scsolver module.

  • Required skills/knowledge: C++, some familiarity with operations research
kyoshida at novell dot com
jody at novell dot com

Unit Testing Framework for Optimization Solver

The Optimization Solver component needs a unit-testing framework for its linear optimizer. This task would involve collecting a load of test cases (small and large) with known solutions, and write an automated unit-testing program for the linear portion of the optimizer code.

  • Required skills/knowledge: C++
kyoshida at novell dot com
jody at novell dot com

Additional AutoFilter Functionality

Add core and user interface support for additional forms of filtering

  • Date based filters (eg current year/quarter)
  • Multiple items without falling back on logical OR.
  • Statistical filters (eg within N stddev of mean)
  • Required skills/knowledge: C++, Familiarity with OOo frameworks.
jody at novell dot com

Move Older Spreadsheet formats into an UNO Component

Support for several formats still lives in the core calc module, and bloat it with little used functionality. Moving the antiquated filters into a distinct component would be good introduction to UNO and the spreadsheet code. If time permits the new component could have support for other simple spreadsheet formats, such as Applix.

  • Required skills/knowledge: C++, Familiarity with OOo frameworks.
jody at novell dot com


OOo connector for External IDE for OOo scripting languages

This project will solve the problem of lack of IDE for scripting languages in OOo. Scripts can be seen as macros in various languages and are complementary to Extensions. Actually, only OOoBasic has its IDE embedded in OOo. Javascript and Beanshell have limited ones and python nothing. To avoid implementing different IDE for various languages into OOo, the proposed choice is to provide a connector to any external IDE

The project is dived into 2 complementary parts :

  • defining and implementing common tools at OOo side to put the scipts at the correct place and manage OOo scripts menus
  • implement an Eclipse extension as an IDE that could handle scripts in python language, using the previously defined OOo tools.
  • Required skills/knowledge: java, python, UNO
  • Usefull skills: Eclipse API, OOo API, IDE general knowledge

OOo connector that allows users to interact with the main applications of the Suite in their cellphones

Development of a Open Office plugin that makes possible inquiring for bluetooth devices in the area and then send, via OBEX protocol, a MIDP 2.0 java mobile application to a choosed device between the ones that have been found previously. In addition the plugin can start a bluetooth server that will listen for received messages, where this server will have an unique identifier, which is the same that was inserted in the sent mobile application.

This mobile JME application will allow user to navigate thought the system directories and the files available in a directory will be filtered by OO files. If the user selects one of the available OO files in the folder, the associated OO application will be opened at the target computer and the mobile application will show an device adapted interface, making this user able to interact with the Open Office applications at that computer: In Impress will be possible to control slide presentation in a slideshow, while a preview of the page is being shown at the device screen; In Calc will be possible to edit rows and columns and so create new spreadsheets; For Writer will be possible to read documents, edit and create new ones.

  • Required skills/knowledge: XML, JSE, JME, UNO Api
  • Usefull skills: Bluetooth Stack Protocol, BlueZ
brunogh at
lucastorri at

Easy Language/Linguistics Switcher

In countries like India where each person know about 2/3 Indian languages and uses 2/3 scripts when s/he creates documents, easy access to language settings become very necessary. This project aims to provide an intuitive interface to control the install linguitic components for a particular language. Secondly input method control from inside the OpenOffice could also be incorporated.

  • Required skills/knowledge: C++/Java
  • Useful skills: Basic UNO API knowledge
RKVS Raman ( )


Shell Extensions for Desktop file search and showing meta data in windows explorer needs to be rewritten for Vista

Vista changed his mechanism to integrate those shell extensions incompatible. Extensions valid for Win98/2000/XP doesnt work any more. A set of new interfaces was designed. But they are available on Vista only. So OOo has to support two sets of shell extensions: one set for Win98/2000/XP and a new set for Vista and might following windows versions. For this project the new Vista extensions has to be implemented only. See 71112 and 70944 for further informations.

  • Required skills/knowledge: C++
  • Useful skills: Windows API knowledge
  • Requirements: Windows Vista 32 Bit
Contact, Andreas.Schluens at

Status bar control to display/change the language

Currently the Writer lacks means to display the language in use. There's also no easy way to change the language as the user has to use the menu. A status bar control would help to solve these problems. It should help to determine about the language used at the cursor position or the document. The control should be implemented using existing UNO APIs.

  • Required skills/knowledge: C++
  • Useful skills: Basic UNO API knowledge
Contact, Carsten.Driesner at, Thomas.Lange at

Improving UI editing / coupling

Currently all dialogs (along with most translated strings) are stored in a rather unusual binary resource file format, that has not had much love in the last decade. We need to write some new code that separates the process of designing & laying out the UI from the code - to allow UE to make our UI more beautiful, and allow future re-factoring. The existing Basic GUI dialog editor and it's XML format should be re-used, a simple C++ compatibility API created, and a number of dialogs converted to the new format.

  • Required skills/knowledge: C++
  • Useful skills: courage, stickability, X-rated code reading
michael.meeks at
hfiguiere at Based Workflow Framework

The one feature that is now begging for attention from is the colloboration and workflow. The workflow system should leverage on the Xforms support in and combine it with other Open Source Products like Shark ( ) and JaWe ( ) to create an integrated Xforms based workflow system. The product should have a centralized server component and a client component. The server component interfaces with Process repositories and Process Instance repositories and has Java based Administration and Definition tools. The client component could be a toolbar which sits as an addon into the office suite. The goal of this project is to provide document workflow from within

  • Make a prototype of docment workflow.
Required skills/knowledge
  • Java/J2EE
  • C/C++
  • knowledge of XForms Document Model
RKVS Raman (


Draw/Impress: SVG Import Filter

SVG (Scalable Vector Graphics) is a vector graphics format that describes 2D graphics in XML.

There's no native SVG import filter for OOo. There exists an external one, but unfortunately it has very strong dependencies - Java 5.0, and Batik. The goal of this task is to create a new implementation that does not require any too big libraries.

A proof of concept implementation written in C++ using the UNO Drawing API and a lighweight libsvg library exists here, but it needs a lot of work to be really usable. Another problem is that libsvg does not seem to be too actively maintained; so the real implementation should use OOo's internal XML parser.

More information is available in Kendy's blog.

  • Required skills/knowledge: C++, XML knowledge is a plus
Jan Holesovsky - kendy at openoffice org
Fridrich Strba - fridrich_strba at openoffice org

Impress: OpenGL rendered transitions

The goal is to add 3D transitions to the Impress application. 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.

In the process of implementing OpenGL transitions an UNO API should be added to slideshow code, so that OpenGL transitions engine might be created as standalone UNO component. Current transitions should be refactored to another UNO component.

The engine will get the previous and next pages and should render the transition at given speed.

The participant should also implement at least 5 OpenGL transitions, rendered by the UNO component.

  • Reguired skills/knowledge: C++, OpenGL. familiarity with UNO is welcomed
Thorsten Behrens - thb at openoffice org
Radek Doulik - radekdoulik at openoffice org

Impress: Import Apple Keynote presentations

Write an importer to import XML based Apple Keynote presentation files.

An incomplete format documentation is available on ADC, therefore reverse engineering will be needed. Since the file format change accross the various versions, version 1.0 can also be opted.

  • Required skills: C++. Familiarity with UNO is welcome.
Hubert Figuiere - hub AT openoffice org

ODF Toolkit

Tools and best practice samples for ODF creation and manipulation

We already have some code snippets in Java and C# and looking for help to extend these tool sets or to provide tool sets in other languages. These tool sets are designed to offer basic ODF functionality even outside of OO.o.

  • Required skills/knowledge: Java or C# or Perl or C++ ...
  • Useful skills: ODF, XML
Dieter Loeschky at

Porting: Mac OS X native port

Complete User Interface respecting Aqua Human Interface Guidelines (Aqua Only)

  • Concerns: 2.x for Mac OS X Aqua only
  • Skills: Knowledge of languages C/C++ Mac OS X APIs and Application frameworks like Carbon

Original vcl widgets are not Aqua HIG compliant, and we need to implement all controls, respecting Aqua Human Interface Guidelines, some will use HIView, or HITheme or even other part of Carbon API.

  • Tasks: some controls are already implemented, but some are still missing.

The job consists in write the code and implement:

- tabs (implement and bind the TabitemValue class, using Carbon API)

- spinbuttons (implement and bind SpinbuttonValue class, using Carbon API)

- comboboxes (implement and use HICombobox)

- listboxes (work already started)

- texts in comboboxes / listboxes (better task definition to be completed)

- other types of controls: highlight, respect dimensions/spacing ..etc

- Windows background (using Aqua theme)

Proposed by
Eric Bachard
Eric Bachard ( ericb at openoffice dot org )

Mac OS X native printing (Aqua only)

Concerns: 2.x for Mac OS X Aqua only

Objective: currently, the native printing implementation is missing on Aqua port and needs to be implemented.

The objective is to use the same box users have in any Mac application.

Skills: Knowledge of languages C/C++ Mac OS X APIs and Application frameworks like Carbon and /or Cocoa


Familiarize with the Mac OS X printing APIs

Familiarize with the current OOo printing API

Expected: Write code to Implement native printing with Aqua version of

fheckl at openoffice dot org
Proposed by
Florian Heckl
Florian Heckl

Mac OS X Address book integration (Aqua / X11)

Synopsis: OOo currently is integrated with the Mozilla address book but not with the native Mac OS X address book. This is annoying for Mac OS X user. For better system integration it would be desirable to integrate with the Mac OS X address book.

Concerns: 2.x for Mac OS X (both Aqua and X11 versions)

Knowledge of languages C/C++, Mac OS X APIs and Application frameworks like Carbon or Cocoa for instance, knowledge of the Mac OS X address book APIs

Familiarize with the Mac OS X address book APIs

Familiarize with the current OOo Mozilla address book integration

Make a prototype for OOo Mac OS X address book integration

Document all produced code and aspects, Extend the principles to support docuemnt (text/media) Drag'n Drop.


Sebastien Plisson


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. here & here)


  • 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

useful skills:

  • knowledge of OOo's writer access API
  • knowledge of OOo's component technology (UNO)
  • experience with VBA macros and Word VBA api


  • noel.power at novell dot com


Writer: Better "Notes" functionality

The "Notes" functionality in Writer could be better in terms of usability and does not look very appealing.

  • Required skills/knowledge: C++
Mathias.Bauer at

hopefully helpful illustrative patch

MS Works Import Filter

Unlike its proprietary derivatives, lacks MS Works import filter. The creation of MS Works import filter is one of functionalities requested by our users. There is a basic import filter work started and the result is to be found in CWS wpsimport01. This filter, based on recently started libwps[1] library is offering only limited number of features converted. It is desirable to build on this work and improve this library/filter so that the quality meets industry standards.

  • Required skills/knowledge: C++, solid knowledge of MS Works wordprocessing document file-format and of libwps library.
fridrich_strba at
freuter at

RTF Generator

The current RTF export of is not as good as the export to the Word (.doc) format. Parsing the generated Word format stream with a Word tokenizer and handing over the generated events to an RTF generator would lead to an RTF export filter with the same quality as the binary Word export filter. Remark: the tokenizer itself isn't complete today but in its current state covers enough parts of the Word format to make this a valuable project for the planned time span.

  • Required skills/knowledge: C++, some knowledge about the Word file format would be a plus
Henning.Brinkmann at

Logging framework

During the import/export process from alien file formats there might be some features which can not be mapped entirely. The goal of this project is to provide a loggin framework for the new domainmapper of the writer filter project, which allow the domainmapper to notify the user of such mapping problems.

  • Required skills/knowledge: C++
Florian Reuter (freuter at
Fridrich Strba (fridrich_strba at openoffice org)

UOF import filter

Specification for the Chinese office file format based on XML (UOF for short) is a National Standard of the People’s Republic of China. The open source project " ODF‑UOF Converter" hosted by Peking University have been finished in October, 2006. More information is available in

The goal of this project is to provide interoperability with UOF documents.

  • Make a prototype of UOF import filter for OOo.
Required skills/knowledge
  • C++
  • knowledge of ODF, UOF
  • knowledge of OOo's xml filter
Fong Lin (
Jian Hua (

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

Advise for Student Applications

The application period is over.

Mentoring capacities are limited, so we depend on your dedication during the preparation of the detailed specification and description of the outcome.

Please review the FAQ and the guide to the web app. Be sure to take the advice for students seriously. Don't hesitate to raise questions about tasks on the project mailing list mentioned in the task description before you send your application. We are glad to receive many qualified submissions touching on the information mentioned in the knowledge base.

And then - apply for an task.

Thanks and Good luck!

Personal tools