Summer of Code 2007
Similarly to the last year, OpenOffice.org would like to participate in the Google Summer of Code(tm) initiative sponsored by Google.
This page is here to collect the suitable suggestions. So - if you have a task that is challenging enough, and are willing to mentor the task, feel free to add it below. Each entry should contain the task description, required skills, proejct mailing list for discussion and personal contact. Links to the To-Dos are appreciated provided that the task is well described there ;-)
We would be glad to support a few projects. Mentoring capacities are limited, so we depend on your dedication during the preparation of the detailed specification and description of the outcome.
For further general questions about the initiative Google prepared a FAQ.
The Task Proposals
===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 : dev@project.openoffice.org : The.Mentor at organization com
API
UNO specifications changes in Eclipse Integration
This project aims at improving the way to develop OpenOffice.org 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
- Contact
- dev@api.openoffice.org
- CedricBosdo at openoffice.org
Base
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: mailto:dev@dba.openoffice.org
- 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: mailto:dev@dba.openoffice.org
- Mentor: Frank Schönheit - Frank.Schoenheit at Sun.Com
Embed Derby into OpenOffice.org Databases
OpenOffice.org 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: mailto:dev@dba.openoffice.org
- Mentor: Ocke Janssen - Ocke.Janssen at Sun.Com
Calc
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
- Contact
- dev@sc.openoffice.org
- Niklas.Nebel at sun.com
- Leonard Mada
- (on statistics and R syntax)
- discoleo at openoffice.org
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++
- Contact
- dev@sc.openoffice.org
- Niklas.Nebel at sun.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++
- Contact
- dev@sc.openoffice.org
- 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.
- Contact
- mailto:dev@sc.openoffice.org
- 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.
- Contact
- mailto:dev@sc.openoffice.org
- jody at novell dot com
Extensions
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.
- Requirements
- Required skills/knowledge: java, python, UNO
- Usefull skills: Eclipse API, OOo API, IDE general knowledge
- Contact
- dev@extensions.openoffice.org
- LaurentGodard@openoffice.org
Framework
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
- dev@framework.openoffice.org, Andreas.Schluens at sun.com
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
- dev@framework.openoffice.org, Carsten.Driesner at sun.com
- dev@sw.openoffice.org, Thomas.Lange at sun.com
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
- Contact
- michael.meeks at novell.com
- hfiguiere at novell.com
Graphics
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
- Contact
- 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
- Contact
- Thorsten Behrens - thb at openoffice org
- Radek Doulik - radekdoulik 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
- Contact
- dev@odftoolkit.openoffice.org,
- Dieter Loeschky at sun.com
Porting: Mac OS X native port
Complete User Interface respecting Aqua Human Interface Guidelines (Aqua Only)
- Concerns: OpenOffice.org 2.x for Mac OS X Aqua only
- Skills: Knowledge of languages C/C++ Mac OS X APIs and Application frameworks like Carbon
Original OpenOffice.org 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
- Contact
- mac@porting.openoffice.org
- ericb at openoffice dot org
Mac OS X native printing (Aqua only)
Concerns: OpenOffice.org 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
Tasks:
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 OpenOffice.org:
- Contact
- mac@porting.openoffice.org
- fheckl at openoffice dot org
- Proposed by
- Florian Heckl
- Mentor
- 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: OpenOffice.org 2.x for Mac OS X (both Aqua and X11 versions)
- Skills
- 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
- Tasks
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
- Contact
mac@porting.openoffice.org
- Mentor
- Florian Heckl
VBA
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)
Tasks
- 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
Mentor/Contact
- noel.power at novell dot com
Writer
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++
- Contact
- dev@sw.openoffice.org
- Mathias.Bauer at sun.com
- Resources
hopefully helpful illustrative patch
MS Works Import Filter
Unlike its proprietary derivatives, OpenOffice.org 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.
- Contact
- fridrich_strba at openoffice.org
- freuter at novell.com
RTF Generator
The current RTF export of OpenOffice.org 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
- Contact
- dev@sw.openoffice.org
- Henning.Brinkmann at sun.com
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++
- Contact
- Florian Reuter (freuter at novell.com)
- 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 http://odf-to-uof.sourceforge.net/index.html.
The goal of this project is to provide interoperability with UOF documents.
- Tasks
- Make a prototype of UOF import filter for OOo.
- Required skills/knowledge
- C++
- knowledge of ODF, UOF
- knowledge of OOo's xml filter
- Contact
- Fong Lin (pflin@novell.com)
- Jian Hua (jjiao@novell.com)