This guide provides the information needed to participate in Fess development. It is intended for a wide range of people, from those tackling Fess development for the first time to experienced developers.
Target Audience
This guide is intended for:
Developers who want to contribute features and improvements to Fess
Engineers who want to understand the Fess codebase
Those who want to customize and use Fess
Those interested in participating in open source projects
Required Prerequisites
To participate in Fess development, the following knowledge will be helpful:
Required
Basic Java programming knowledge (Java 21 or later)
Basic usage of Git and GitHub
Basic usage of Maven
Recommended
Knowledge of the LastaFlute framework
Knowledge of DBFlute
Knowledge of OpenSearch/Elasticsearch
Experience with web application development
Development Guide Structure
This guide consists of the following sections.
- Open Source Full-text Search Server - Fess Development Overview
Explains the overview of Fess development and the first steps to start developing. You can understand the technology stack required for development and the overall project structure.
- Development Environment Setup
Provides detailed instructions on setting up the development environment. It covers everything from installing necessary tools like Java, IDE, and OpenSearch to obtaining and running the Fess source code, with step-by-step explanations.
- Architecture and Code Structure
Explains the architecture and code structure of Fess. By understanding the main packages, modules, and design patterns, you can develop more efficiently.
- Development Workflow
Explains the standard workflow for Fess development. You can learn how to proceed with development work such as feature additions, bug fixes, code reviews, and testing.
- Build and Test
Explains how to build and test Fess. It covers the usage of build tools, running unit tests, and creating distribution packages.
- Contribution Guide
Explains how to contribute to the Fess project. You can learn about creating pull requests, coding conventions, and how to communicate with the community.
Quick Start
If you want to start developing Fess right away, follow these steps:
Check System Requirements
The following tools are required for development:
Java 21 or later
Maven 3.x or later
Git
IDE (Eclipse, IntelliJ IDEA, etc.)
Get Source Code
git clone https://github.com/codelibs/fess.git cd fessDownload OpenSearch Plugins
mvn antrun:run
Run
Run
org.codelibs.fess.FessBootfrom your IDE, or run it from Maven:mvn compile exec:java
For details, see Development Environment Setup.
Development Environment Options
Fess development can be done in any of the following environments:
Local Development Environment
This is the most common development environment. Install development tools on your machine and develop using an IDE.
Advantages:
Fast builds and execution
Full use of IDE features
Can work offline
Disadvantages:
Initial setup takes time
Problems may occur due to environment differences
Docker-Based Development Environment
You can build a consistent development environment using Docker containers.
Advantages:
Environment consistency is maintained
Easy setup
Easy to return to clean state
Disadvantages:
Docker knowledge required
Performance may be slightly degraded
For details, see Development Environment Setup.
Frequently Asked Questions
Q: What are the minimum specifications required for development?
A: We recommend the following:
CPU: 4 cores or more
Memory: 8GB or more
Disk: 20GB or more of free space
Q: Which IDE should I use?
A: You can use any IDE you prefer, such as Eclipse, IntelliJ IDEA, or VS Code. This guide primarily uses Eclipse for examples, but you can develop similarly with other IDEs.
Q: Is knowledge of LastaFlute and DBFlute required?
A: While not mandatory, having it will make development smoother. Basic usage is explained in this guide, but please refer to the official documentation of each framework for details.
Q: What should I start with for my first contribution?
A: We recommend starting with relatively simple tasks such as:
Documentation improvements
Adding tests
Bug fixes
Small improvements to existing features
For details, see Contribution Guide.
Next Steps
To start developing, we recommend reading Open Source Full-text Search Server - Fess Development Overview first.