GSoC Ideas
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
This page lists the project ideas for Google Summer of Code, see the general info about LibreOffice and GSoC. All applicants are required to complete at least one easy hack.
All tasks on this page already indicate mentors for the task. New tasks on this page should be added only by those with the experience and time to invest in mentoring new developers.
Note that the LibreOffice project selects GSOC projects that are well researched and show a good understanding of the scope of the problem. It is also possible to create a project proposal not based on the ideas given below, if the application of the contributor shows good understanding of the problem. In fact, if you apply with one of the prepared ideas below, we expect you to show you did research beyond the abstracts given below even more.
When doing that please use this template:
=== Title of the task ===
Some detailed description of the things to accomplish.
Don't hesitate to provide details if you have some like code pointers, links to specifications, etc.
Goal(s) - the expected outcome of the project.
;Required skills / knowledge: C++, Reading other's code, and any other useful skill required go here.
;Size: 90, 175 or 350 hours
;Difficulty: Range among easy, medium, hard
;Potential mentors
:''Joe Devel'', IRC: jdevel, mail: {{nospam|joe|devel.org}}
Please move successfully completed projects to Development/GSoC/Successfully Implemented Ideas.
User Experience
The design team collected a number of ideas in in the pad http://pad.documentfoundation.org/p/UX-GSoC_Ideas. Not for all ideas mentors have committed so far. If you are interested in a task that has no mentor you would need to find someone. If the topic needs further refinement feel free to contact the UX team in order to prioritize the usability engineering. Some examples for full-featured topics:
Improve snapping and object selection
Snapping in LibreOffice is a bit awkward, and doesn't work as expected in some cases. There is also no advanced snapping supported (taking into account multiple object positions and distances), which would make object position and sizing much easier for the user. This idea involves investigating the existing implementation for snapping in the svx module and work on it.
Goal:
Make snapping and object selection pleasant to use.
Extended goal for this idea is to look into object selection and handles rendering, consistency and UX. In some cases the selection and selection handles aren't properly rotated with the object, sometimes an outline of the selection isn't rendered or rendering could be improved.
- Required skills / knowledge
- (C++, Reading other's code)?
- Size
- 350 hours
- Difficulty
- Hard
- Potential mentors
- Tomaž Vajngerl, IRC: quikee, mail: quikee
gmail.com
Re-design Notebookbar using Native Toolkit Widgets
The task here is to redesign the Notebookbar to use vcl weld mechanism instead of custom widgets. The issue is filed as tdf#163988 in Bugzilla.
Currently, although Notebookbar uses Glade UI files, it uses custom widgets, and most of the logic is done in C++ code.
Although the result looks nice with GTK3 and some other UI plugins, it has some drawbacks as described in tdf#163988. Specially in GTK4, the result is not interesting. Also, changing the Notebookbar in the Glade interface designer is not easy/possible with this approach.
The task here is to re-design the Notebookbar, using native toolkit widgets and make sure that is usable with VCL weld mechanism. Doing modifications in the C++ code to make it usable in LibreOffice UI is not part of this task, so that people who only know how to design, but are not familiar with C++ can also do the task. To make the result usable with LibreOffice, additional coding/refactoring is needed which does not fit into this project.
One can start by creating a dialog box with GtkNotebook, and then add appropriate icons and other GTK widgets to reach to a reasonable UI, comparable to what is available with the custom widgets.
Please note that not each and every GTK widget is supported by VCL weld, so you have to go step by step to make sure that the result works well with VCL weld mechanism.
A preview can be generated by both glade-previewer -f notebook.ui and also by using the ui file with minweld example. One may test the result, after putting the UI file in instdir/share/config/soffice.cfg/ and changing the minweld example to reflect the name of the UI and the ID of the dialog.
./bin/run minweld
Goal:
Re-design Notebookbar using native widgets.
- Required skills / knowledge
- UI Design, Glade UI designer, Reading other's code
- Size
- 175 hours
- Difficulty
- Medium
- Potential mentors
- Hossein Nourikhah, IRC: hossein, mail: hossein
libreoffice.org
Base
Basic
Draw
Impress
Attach 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 LibreOffice, and provides a nice way to change animation settings and type for a great number of objects simultaneously. For a slightly different view onto the same problem, see this bug report, and this one from the LibreOffice side.
Original patch from GSoC 2010: https://cgit.freedesktop.org/libreoffice/build/tree/patches/dev300/sd_effects_styles.diff?h=master-backup
Goal:
Make styles animatable.
- Required skills / knowledge
- C++, Reading other's code
- Size
- 350 hours
- Difficulty
- Hard
- Potential mentors
- Thorsten Behrens, IRC: thorsten, mail: thorsten.behrens
allotropia.de
- Katarina Behrens, IRC: bubli, mail: bubli
bubli.org
Calc
Common
Accessibility checker for Impress and Calc
We have an accessibility checker sidebar in Writer, but not in Impress and Calc. The accessibility checker triggers a check of the document for accessibility issues and displays those in the sidebar, with helpful hints how to resolve those issues. Accessibility issues include checks of the document metadata (name, description), document structure, objects in the document, as well as check of contrast (font color vs. background color). A lot of issues apply for Impress and Calc too, but some are Writer specific and there as some that are unique to Impress and Calc.
Goal:
Add accessibility sidebar to impress (move code from writer to common code into svx or sfx2), implement a trigger to re-run a check when an object changes, go through the accessibility checks for writer and investigate which check also applies to Impress, add the accessibility check to common code and adapt if necessary (for example to work in editeng and not writer model). If there is still time, repeat the same for Calc.
- Required skills / knowledge
- C++, Reading other's code, Debugging,
- Size
- 350 hours
- Difficulty
- Medium to Hard
- Potential mentors
- Tomaž Vajngerl, IRC: quikee, mail: quikee
gmail.com
Extend support for document theme colors
Support for theme colors is already implemented for Writer, Impress/Draw and Calc, however some colors weren't extended to support theme colors properly. Also when we define gradients we don't support theme colors there so support for theme color gradients would need to be added.
Goal:
Search for properties or parts of properties where we use colors, but we don't support to set a ComplexColor (used for theme colors). Implement a property that works with a ComplexColor for that property, add support to change the color in ThemeColorChanger, write a round-trip test and adapt the import/export filters (for ODF and OOXML) to support saving the theme color for the property. Repeat.
- Required skills / knowledge
- C++, Reading other's code, Debugging
- Size
- 350 hours
- Difficulty
- Hard
- Potential mentors
- Tomaž Vajngerl, IRC: quikee, mail: quikee
gmail.com
Filters
UNO
UNO is the LibreOffice component model, cross-language and intra- as well as inter-process. It is somewhat similar to Corba and COM. It is used to extend LibreOffice via document-related scripts and more general extension packages, as well as to use LibreOffice functionality remotely from another process.
UNO's cross-language abilities are implemented by bridging between various language-specific environments and a binary runtime representation (with a C API).
Tests
Improve word processor test coverage
LibreOffice Writer is the foremost Free and Open Source word processing program. During our 39 year development history, we're proud to have added comprehensive support for world languages, word processor use cases, and interoperability with other office suites. However, offering so many features has a cost in source code size and complexity. One of our greatest challenges today is managing this complexity.
The goal for this project is to develop automated tests for LibreOffice Writer features that currently do not have tests.
- Use a test coverage report and C++ skills to identify features that require more tests.
- Use C++ debugging skills to create LibreOffice Writer documents that exercise target code.
- Use C++ to develop automated tests that assert the correct program behavior.
- File bug reports with detailed instructions and example documents, as needed.
- Required skills / knowledge
- C++, Reading code written by others
- Size
- 175 hours
- Difficulty
- Medium
- Potential mentors
- Jonathan Clark, IRC: jonclark, mail: jonathan
libreoffice.org
Ideas without a mentor
A number of ideas from previous years can be found at the Development/GSoC/Ideas without a mentor page. Please note that you need to find a mentor willing to mentor the task. There is no guarantee that anyone in the community is going to mentor one of these tasks this year.