This page is to collect ideas for Google Summer of Code 2009.

Proposals

Feel free to add your own ideas and proposals; in case there's currently no mentor assigned to an idea, just mail the poor gsoc admin (thb at openoffice dot org) and he'll get you one.

Applications (Calc, Impress, Writer)

Improve Writer's compare function

When comparing different versions of a text document, or enabling Writer's change tracking feature, the displayed change set is rather suboptimal. Brendan had a few ideas about that.
Required skills/knowledge
c++
Difficulty
hard
Contact
freuter at novell.com, TBD

Hyperlink/Reference navigation buttons

Currently, when clicking on internal references or hyperlinks in OOo documents, there's no easy way back to the place you've started. This task is about adding browser-like navigation buttons to at least one application (preferrably Writer), that do The Right Thing when clicking them.
Required skills/knowledge
c++
Difficulty
easy
Contact
cmc at openoffice.org, TBD

Make Impress master pages copyable

Currently, when in master page edit mode, the slide sorter has cut/copy/paste disabled. The task would be to add this missing functionality, and correctly handle masterpage-attached styles.
Required skills/knowledge
c++
Difficulty
easy
Contact
thb at openoffice.org

Attach Impress animations to styles

Currently, Impress styles control most of the visual shape appearance, but not the slideshow animation effect. Which is a pity, as the styles concept is pretty powerful inside OOo, and provides a nice way to change animation settings and type for a great number of objects simultaneously.
Required skills/knowledge
c++
Difficulty
hard
Contact
thb at openoffice.org

Impress slide layout extendibility

Make Impress layout templates easily extendible. Currently, the slide layouts in Impress (e.g. "Title page", "Outline page") are a hard-coded set; it would be really cool to have them extendible or even user-editable.
Required skills/knowledge
c++
Difficulty
medium to hard, depends on scope
Contact
cmc at openoffice.org, TBD

Implement additional 3D slideshow transitions

Building on top of a successful GSoC project from two years ago, 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.
Required skills/knowledge
c++
Difficulty
easy
Contact
rodo at novell.com

Page preview for Writer

Modify existing Writer page preview, such that it works as a live preview side-by-side the actual edit area.
Required skills/knowledge
c++
Difficulty
medium
Contact
freuter at novell.com

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).
Required skills/knowledge
c++
Difficulty
medium
Contact
freuter at novell.com

Natural sorting in listboxes

A lot of places in OOo list stuff like styles, references etc. sorted like a computer does, i.e. "1, 10, 2, ...". Which is ok though not nice for 5 items, but a PITA for a hundred. This is either some amount of work to find and fix all the places, or a task for a smart cookie to find the silver bullet that fixes this with a central 100 lines patch.
Required skills/knowledge
c++
Difficulty
easy
Contact
cmc at openoffice.org, TBD

Word macro compatibility

Recently Sun and Novell announced to pool resources to provide VBA macro compatability see [http://blogs.sun.com/GullFOSS/entry/sun_and_novell_work_together 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 and porting the Helperapi code (for excel) to c++ (see. VBA & Porting_notes).

The task at hand would be to extend the base framework by developing helper objects and implementations to be used by both the excel and writer compatibility object implementations, and to port the existing (word) helper api objects from Java to C++
Required skills/knowledge
c++
Difficulty
hard
Contact
npower at novell.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.
Required skills/knowledge
c++
Difficulty
medium
Contact
kyoshida at novell.com

Pimp the Start Center

OOo sports a start center since 3.0; taking this idea quite a bit further led to this concept of a dashboard. This task is about laying the foundations and at least implement a few basic items of such an OOo dashboard.
Required skills/knowledge
c++
Difficulty
medium
Contact
jza at openoffice.org, TBD

Filters

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 the transport 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.
Required skills/knowledge
c++, familiarity with Visio, and a fearless attitude towards poking into binary files.
Difficulty
medium
Contact
fstrba at novell.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.
Required skills/knowledge
c++, familiarity with AutoCAD, and a fearless attitude towards poking into binary files.
Difficulty
medium
Contact
fstrba at novell.com

Use PDF import's layout recognition for other vector formats (e.g. postscript, wmf/emf)

OOo's newly implemented PDF import employs some amount of 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.
Required skills/knowledge
c++
Difficulty
medium
Contact
tbehrens at novell.com

Improve RTF Import (RTF Tokenizer)

For the ooxml Word import filter, a new filter framework is developed that has better import quality as the old separate filters, and also shares quite some code. Having the RTF import use that framework would be hugely useful; both binary doc and rtf are very similar in structure, and could have tokenizers plugged into the filter framework (and thus being handled by the same high-level filter code). The doc tokenizer is already worked on, so a RTF tokenizer would be a an awesome feature.
Required skills/knowledge
c++
Difficulty
medium
Contact
cbosdonnat at novell.com

Improve RTF Export

The current rework of the binary MS Word .doc (WW8) export filter made it easy to extend for other MS Word formats, like DOCX. The aim of this task is to use the advantages of the shared code to implement a new RTF export filter based on this rework.
Required skills/knowledge
C++
Difficulty
medium
Contact
kendy at suse cz

Improve Writer HTML export

Improve the currently lossy Writer xhtml export, to use recent features of the language.
Required skills/knowledge
c++
Difficulty
medium
Contact
cbosdonnat at novell.com

Support XForms on HTML import and export

While both ODF and HTML have XForms support, the current Writer HTML import and export just plain ignores it. Would be awesome to have it support and round-trippable.
Required skills/knowledge
c++, knowledge about XForms
Difficulty
medium
Contact
cbosdonnat at novell.com

Enhanced svg export filter

OOo's svg export is rather limited, it would be nice to create svgs containing multiple slides, can be navigated etc.; also, having at least minimal animation support for Impress documents would be desirable, comparable to what the Flash export filter provided for the 1.x versions.
Required skills/knowledge
c++
Difficulty
medium
Contact
fstrba at novell.com

Integration/porting

Integrate SCIM into OO

Smart Common Input Method integration for OOo
Required skills/knowledge
c++
Difficulty
tbd
Contact
tbd

Maxima Integration

Integrate the Maxima symbolic computer algebra system into OOo, to solve calc problems.
Required skills/knowledge
lisp, c++
Difficulty
tbd
Contact
tbd

(Finish) porting Impress 3D slideshow transition framework to Windows

With running implementations on Linux and Mac, the Windows platform is still missing for having nice 3D animated slideshow transitions in OOo. Some initial effort has been done, also in separating out operating system idiosyncrasies, but nothing is really working yet. This task is about finishing the implementation and tuning it to the Windows platform.
Required skills/knowledge
c++, some knowledge of WGL
Difficulty
medium
Contact
rodo at novell.com

Crosscompile Win32 OOo on Linux

Setting up a build environment for OOo on Windows is a pain, requires expensive tools (at least when needing all features), and the IO performance of the used cygwin/msvs mix is rather disappointing. This task includes setting up, (if necessary) provide missing headers and tools, and actually performing a full cross build of OOo under Linux.
Required skills/knowledge
c++
Difficulty
medium
Contact
fstrba at novell.com

Support document versioning via WebDAV

OOo has good support for WebDAV and is thusly well suited to work on documents directly stored on a (web)server. Additionally cool would be to have support for document versioning as well, as provided by the DeltaV WebDAV protocol extension. This task is about adding support for DeltaV to the already existing WebDAV implementation, at least basic "core-versioning".
Required skills/knowledge
c++
Difficulty
medium
Contact
tlillqvist at novell.com

Implement XCanvas using CoreGraphics

With a DirectX-based Canvas implementation already available for Windows, and a cairo-based one for Linux, it's a natural move to provide a ?CoreGraphics-based on for the native Mac OS X platform OOo has recently been ported to. This proposal is about providing an initial XCanvas-implementation that solely uses ?CoreGraphics for rendering.
Required skills/knowledge
c++, objective c, Mac OS X knowledge
Difficulty
medium
Contact
thb at openoffice.org, ericb at openoffice.org

Port OOo to Haiku

Add missing pieces to the ongoing OOo port for the Haiku operating system. Missing pieces e.g. are a working java port, and UNO bridges.
Required skills/knowledge
c++, Haiku knowledge
Difficulty
can be hard, depending on area
Contact
tbd

KDE4 integration for OOo

OOo can use the KDE3 and Gtk+ themes, but not KDE4. There exist a preliminary port of the KDE3 theming plugin to KDE4, but it is incomplete, and crashes. Also the implementation of the KDE4 file dialog for OOo is missing. This task covers improving at least the 2 mentioned, but improvements in other KDE4-integration areas, like KDE address book, icons, etc. is welcome as well.
Required skills/knowledge
C++, KDE 4.x, Qt 4.x
Difficulty
medium to hard
Contact
kendy at suse cz

Samba locking for GIO

OOo has a UCB (universal content provider) that can reach data over GIO (gvfs). Unfortunately, the implementation of the samba protocol there lacks the locking functionality. This task covers the implementation of samba locking for GIO on all levels where appropriate - changes in OOo, in glib and gvfs, and even in fuse if necessary.
Required skills/knowledge
C, C++, glib
Difficulty
hard
Contact
tlillqvist at novell com, kendy at suse cz

Patch Open Office to use native GTK for menus and implement a Global Menu client inside it.

It has been long known that Open Office doesn't use native GTK, and therefore can not benefit from the Global Menu's GTK Plugin. However no fully usable office suite that utilizes native GTK is available. The result is direct: on a desktop with Global Menu enabled, the default office suite, which is accessed by the user almost everyday becomes an exception that behaves differently from all other applications. Too bad. This proposed SOC project aims to provide a patch for the Open Office & Global Menu users. With the work planned in KDE to implement a ?GlobalMenu and XFCE already working, this will provide one of the last parts in an integration on the main Linux desktop environnments.

References:

     * Global Menu Specification - <a href="http://code.google.com/p/gnome2-globalmenu/wiki/GlobalMenuSpecification">http://code.google.com/p/gnome2-globalmenu/wiki/GlobalMenuSpecification</a>  

Goals

Patch Openoffice to implement a Global Menu client inside it.

     * Interpolate the menu into Global Menu XML 
     * Bind the XML to the toplevel window 
  <dl>

* Receive and understands the Global Menu events Required skills/knowledge
* Experience with Openoffice programming model * C++ experience * Knowledge in X11 or GDK

Difficulty

Contact
kendy at suse dot cz, the ?GlobalMenu developpers will provide mentoring for the GTK and ?GlobalMenu part

Other

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.
Required skills/knowledge
c++
Difficulty
hard
Contact
tbehrens at novell.com, rodo at novell com

GUI builder for OOo

There's currently work under way to give OOo auto-layoutable dialogs based on an xml description language, which is based on a GSoC 2007 project. The task at hand targets the generation of those xml UI description files in a UI-designer-friendly way - in short, to provide a GUI builder for OOo. Conceivable ways of reaching that goal also include programming a Glade plugin
Required skills/knowledge
c++
Difficulty
medium
Contact
mmeeks at novell.com

Template preview

Currently, OOo's template dialogs 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.
Required skills/knowledge
c++
Difficulty
medium
Contact
kendy at suse.cz

Performance Improvement

There are several known performance bottlenecks inside ?OpenOffice, and clearly more 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 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++
Difficulty
medium
Contact
mmeeks at novell.com

uno-skeletonmaker: generate code based on templates

Modify or rewrite the uno-skeletonmaker to make it templatable. The current implementation is completely hard-coded. Every developer has its own development style guide and has to change the generated code every time, which is a PITA.
Required skills/knowledge
c++
Difficulty
easy to medium
Contact
cbosdonnat at novell.com

Use svg for OOo icons

OOo uses png for its icons sets currently; with the trend towards higher display resolution and scalable UI, using an expressive vector format would be useful. This task is about adding proper svg rendering capabilities to the lower layers of OOo, and using that for standard OOo icon sets.
Required skills/knowledge
C++
Difficulty
medium
Contact
thb at openoffice.org

Enable external Basic IDE

OOo proposes an old IDE for the edition of Basic macros. To provide the comfort a modern IDEs to the users, a connection has to be established with OOo basic engine. This task is about implementing a way to communicate with the basic engine using UNO interfaces. A basic integration in Eclipse will have to be done in order to have a working sample IDE.
Required skills/knowledge
C++, Java, Eclipse knowledge...
Difficulty
medium to hard
Contact
cbosdonnat at novell.com

Photo album extension

Add an extension to the Impress which will enable users to easily create photo album presentations from supplied photos. It should layout the photos on pages - possibly using smart shapes, set transitions and animation effects. Various options should be available in the UI to customize the presentation parameters before it is created.
Required skills/knowledge
c++
Difficulty
hard
Contact
rodo at novell.com

Extension: Integrate Ocropus OCR capabilities to OpenOffice.org

Add an extension to Writer or Draw which will enable users to easily open/scan images and perform optical character recognition(OCR) in order to output editable text with layout. The most promising free OCR programme is Ocropus (www.ocropus.org), which lacks a GUI, though. This Openoffice extension should provide a bridge between Ocropus and ?OpenOffice.org. The extension should be able to start an OCR scan of an image using Ocropus and directly sending the resulting hocr output file (based on HTML) to ?OpenOffice.org, where it is imported in Writer or Draw as editable text with layout.

An integration of this extension into the PDF-import of ?OpenOffice.org could be evaluated at a later stage.
Required skills/knowledge
applicant should either know how to hack OOo or ocropus; c++
Difficulty
easy to medium
Contact
rodo at novell.com, thb at openoffice.org

Template

This is just an example - please copy to the 'Proposals' part of the page without the enclosing braces.

==== Example entry ====

A full description of the task should be here - it should help to see why this task
is important, and interesting to hack on.

 Required skills/knowledge:: Language, technology1, technology2, ...
 Difficulty:: easy/medium/hard
 Contact:: The.Mentor at organization com