|
| 1 | +# Project Goals |
| 2 | +I believe strongly in being verbose about the goals and long term roadmap of a project. The goals |
| 3 | +below should stay the same in the future. New ones that are compatible with the current ones can be |
| 4 | +added. |
| 5 | + |
| 6 | +# Goals |
| 7 | +- Strictly follow [semantic versioning 2.0.0](https://semver.org/spec/v2.0.0.html). |
| 8 | +- Dependencies should only be added if they provide considerable benefit. |
| 9 | +- Depencencies should be maintained at the point in time they are added. |
| 10 | +- Filetypes with available formatting tools are checked for style by CI. Code that doesn't follow |
| 11 | + this style is rejected. This keeps the codebase clean and nice for everyone to work on. |
| 12 | +- Correctness of the code, both in the sense of the code doing what it is supposed to do, and in the |
| 13 | + sense of the library following the specifications that are listed in the goals. |
| 14 | + |
| 15 | +## Before 1.0.0 |
| 16 | +- Refine/reconsider the public API so it can become stable. |
| 17 | +- Add tests to the public API to avoid breaking changes. |
| 18 | +- Aim for a first release. I don't want this project to stay in 'unstable limbo' indefinitely. This |
| 19 | + doesn't mean the first release will be rushed, but having a first major release and stabilizing |
| 20 | + the public API is a goal. |
| 21 | + |
| 22 | +# Other Goals |
| 23 | +> These goals are hard to formally write down or check. |
| 24 | +- After the first major release, extra care has to be taken to prevent breaking changes to the |
| 25 | + public API. |
| 26 | +- Follow [the Rust API Design |
| 27 | + Guidelines](https://rust-lang.github.io/api-guidelines/checklist.html). |
| 28 | +- The flexbox implementation tries to adhere to the [CSS3 flexbox |
| 29 | + specification](https://www.w3.org/TR/2018/CR-css-flexbox-1-20181119/) where it makes sense in a |
| 30 | + TUI context. |
| 31 | + |
| 32 | +# Non-goals |
| 33 | +> Things that aren't goals right now and arent considered to become goals in the near future. |
| 34 | +- Optimize for performance. While the library should be performant and I try to make things go fast, |
| 35 | + it is not a main goal of this project. |
| 36 | +- Optimize for memory usage. The dependency limitation goal should keep memory usage low, but low |
| 37 | + memory usage is not a main goal. |
0 commit comments