Contributing
Contributions of all sizes are welcome — bug reports, documentation fixes, and code. The codebase is compact, so the barrier to entry is low.
Reporting issues
Found a bug or have a feature idea? Open an issue on the GitHub issue tracker. A useful bug report includes:
- your operating system and Qt version,
- steps to reproduce the problem,
- what you expected vs. what actually happened,
- the exact error message, if any.
Check the plan first Before proposing a feature, skim the Roadmap & TODO — it may already be planned, and your issue can then reference and refine it.
Pull requests
- Fork the repository on GitHub and clone your fork.
- Create a branch for your change:
git checkout -b fix/table-sorting. - Make the change, keeping it focused — one topic per pull request.
- Build and test manually: run the app, exercise the affected workflow, and verify migrations still apply cleanly on both a fresh and an existing
lexicon.db. - Open the pull request with a clear description of what changed and why.
Coding guidelines
- Match the existing style. The project uses straightforward Qt Widgets C++ — follow the naming and layout conventions you see in
src/. - C++23, no extensions. The build sets
CMAKE_CXX_STANDARD 23with compiler extensions off; keep code portable across GCC, Clang, and MSVC. - All SQL belongs in
DatabaseManager. UI classes must not talk to the database directly — extend the static API instead. - Schema changes are append-only migrations. Never modify a shipped migration; add a new version instead (see Adding a migration).
- Never renumber enums.
TermStatus,UnderstandingLevel, andLinkTypevalues are persisted in SQLite. - Report errors, don't swallow them. Follow the
bool+QString* errorMessagepattern used throughout the data layer.
License
Lexicon is released under the MIT License — you may use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, provided the copyright notice and permission notice appear in all copies. The software is provided "as is", without warranty of any kind.
By submitting a contribution you agree that it will be licensed under the same terms. Read the full text in LICENSE.
Third-party code: the vendored md4qt Markdown parser retains its own license, found under 3rdparty/.