#Roadmap Instead of creating a ticket for each thing this document outlines the direction of the development.
- Clean root with:
- Source:
- lib
- (+Debian?, ....)
- utility scripts:
- create IDE
- build debian package
- etc....
- Update README
- Source:
- Containing all non gui logic.
- Behaving like current "Quiet" mode.
- Message based communication to gui.
- In separate binary.
- Testing only the lib
- Coverage
- Can the debian directory be outside project root?
Use only native.
- gtkmm
- wxWidgets?
- console?
In order of importance:
- Readability and maintenance.
- Robustness.
- Performance.
- Guidelines to contributors on what is expected.
- Reduce complexity.
- Pass by value.
- camelCase -> snake_case.
- parameter lists formatted as lists.
- Remove noise
- ::getName() -> ::name()
- liberal use of "using namespace".
- One publisher of events for whole library.
- Immutable.
- No smart pointers if not needed.
- No raw pointers.
- No naked news.
- No null.
- No unscoped "using namespace" in header files
Use the new stuff when beneficial.
- optional.
- replace string_sprintf with fmt
- auto.
- Copy elision (return value optimization).
- Move constructors for entities.
- Lambda.
- [[fallthrough]], [[nodiscard]] and [[maybe_unused]]
- string_view
- invoke?
- filesystem
- Multi line strings: R"(....)";
- std::format when available. Meanwhile: https://github.com/fmtlib/fmt
And maybe more.
- Moving src to subdirectory
- async instead of thread