Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
Developer Documentation
Overview on Developing JabRef
Contributing
JabRef and Software Engineering Training
Decision Records
Use Markdown Architectural Decision Records
Use Crowdin for translations
Use slf4j together with log4j2 for logging
Use Gradle as build tool
Use MariaDB Connector
Fully Support UTF-8 Only For LaTeX Files
Only translated strings in language file
Provide a human-readable changelog
Use public final instead of getters to offer access to immutable variables
Use Plain JUnit5 for advanced test assertions
Use H2 as Internal SQL Database
Test external links in documentation
Handle different bibentry formats of fetchers by adding a layer
Add Native Support for BibLatex-Software
Separate URL creation to enable proper logging
Query syntax design
Mutable preferences objects
Allow org.jabref.model to access org.jabref.logic
Use regular expression to split multiple-sentence titles
Implement special fields as separate fields
Use Jackson to parse study.yml
Keep study as a DTO
Remove stop words during query transformation
Localized Preferences
Use # as indicator for BibTeX string constants
Reviewdog findings are code reviews
Use Java Native Access to Determine Default Directory
Store Chats Alongside Database
Synchronization with remote databases
Store Chats in MVStore
Return BibTeX string and CSL Item JSON in the API
Use Citation Key for Grouping Chat Messages
Exporting multiple entries to CFF
Generate Embeddings Online
Use Apache Commons IO for directory monitoring
Use TextArea for Chat Message Content
Use currently active tab in Select style (OO Panel) to decide style type
RAG Architecture Implementation
Use BibEntry.getId for BibEntry at indexing
Use Apache Velocity as template engine
Display front cover for book citations in the Preview tab
ADR Template
Getting into the code
JabRef’s development strategy
Set up a local workspace
Pre Condition 1: GitHub Account
Pre Condition 2: Required Software
Pre Condition 3: Code on the local machine
Step 1: Get the code into IntelliJ
Step 2: Set up the build system: JDK and Gradle
Step 3: Set up JabRef’s code style
Advanced: Build and run using IntelliJ IDEA
Advanced: Eclipse as IDE
Advanced: VS Code as IDE
Trouble shooting
High-level documentation
Code Howtos
The LibreOffice Panel
Overview
Order of appearance of citation groups
Problems
Code reorganization
About OOError, OOResult, and OOVoidResult
Alternatives to using OOResult and OOVoidResult in OOBibBase
Code Quality
Custom SVG icons
Error Handling in JabRef
Event Bus and Event System
Fetchers
Frequently Asked Questions (FAQ)
HTTP Server
IntelliJ Hints
JPackage: Creating a binary and debug it
JabRef’s handling of BibTeX
JavaFX
Localization
Logging
Remote Storage
Remote JabDrive storage
Remote SQL Storage
Testing JabRef
UI Design Recommendations
Useful development tooling
Requirements
AI
Gitter Chat
Discussion Forum
Code Repository
Getting into the code
Table of contents
JabRef’s development strategy
Set up a local workspace
High-level documentation