JabRef in Google Summer of Code 2022

This page lists a number of ideas for potential projects to be carried out by the students participating in Google Summer of Code 2022. This is by no means a closed list, so the students can feel free to propose alternative activities related to the project (the list of feature requests and the GitHub issue tracker might serve as an additional source of inspiration). Students are strongly encouraged to discuss their ideas with the developers and the community to improve their proposal until submission (e.g., using the Gitter Channel or the forum). It’s also a good idea to start working on one of the smaller issues to make yourself familiar with the contribution process.

Collaboration using Online Services

  • Description: JabRef currently supports the collaboration using shared SQL databases but lacks connection/integration with other online services, for example, Overleaf or the new web-based reference manager JabRef-Online (still under development). JabRef should offer an abstraction layer that connects and synchronizes with other online services easily. Concurrent modification of entries should be taken into account as well (Optimistic Offline Lock, already implemented for the shared SQL databases).
  • Skills required: Java, GraphQL
  • Expected outcome: It is possible to synchronize citation entries from a local JabRef installation with JabRef-Online and at least one other online collaboration service (preferable Overleaf).
  • Possible mentors:: @Siedlerchr, @koppor, @tobiasdiez
  • Project size: 350h (large)

3-way Merge

  • Description: JabRef can detect duplicate entries and show a simple two-way merge dialog where changes from either the left side or the right side can be applied. There is no way to edit the merge result directly. A big improvement would be to have a 3-way merge dialog as many modern IDEs like Intellij offer. Inspiration for the design and functionality of such a 3-way-merge can be seen in Issue #6190
  • Skills required: Java, JavaFX
  • Expected outcome: A functioning 3-way merge dialog or a prototype
  • Possible mentors:: @Siedlerchr, @calixtus
  • Project size: 175h (medium)
  • Description: JabRef offers an extensive search function that is based on a custom search syntax. The goal is to replace the custom search syntax and grammar with Apache Lucene’s search syntax. It should offer the same functionality as the existing search.
  • Skills required: Java, JavaFX (experience with Lucene is a plus)
  • Expected outcome: A functioning search that supports the same functionality as the old search. More information can be found in this PR#8206
  • Possible mentors: @koppor, @Siedlerchr, @calixtus
  • Project size: 175h (medium)
  • Details available at https://github.com/JabRef/jabref/wiki/GSoC-2022---Apache-Lucene-Search

Apache Velocity or Thymeleaf as Template Engine

  • Description: JabRef has the option to export data in different formats. In addition, it allows you to define and use your own export filters in the same way as the standard export filters are defined. An export filter is defined by one or more layout files, which specify the format of the exported files with the help of a collection of built-in formatter routines. JabRef uses a complex custom formatting logic. The idea is to replace this with the template engine from Apache Velocity or Thymeleaf, depending on which seems to be better suited.
  • Skills required: Java (experience with Velocity/Thymeleaf or other Template Engines is a plus)
  • Expected outcome:
    • Replacement of the custom export formatter with Apache Velocity or Thymeleaf
    • A Tool for converting old layout based templates to the new syntax
  • Possible mentors: @koppor, @Siedlerchr, @calixtus
  • Project size: 350h (large)