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>
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