LukasKalbertodt / term-painter

Cross-platform Rust library for coloring and formatting terminal output

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tracking issue: v1.0

LukasKalbertodt opened this issue · comments

EDIT: ignore the rest of the comment!


A big part of this year's Roadmap for Rust is to push third level crates to v1.0 maturity. term-painter is one of those third level crates and I'd like to publish 1.0 eventually, preferably this year.

However, I think a lot still needs to be done. I want this crate to be usable for almost all cases you would use term for, instead of being a library for small toy projects only. In order to add more features and still reach 1.0 stability, I would use a two-phase process:

  1. Adding features and designing the API until, say, September this year. The resulting API is the one planned for 1.0 release and will be release as "last pre-1.0 version".
  2. Afterwards, the API should be tested in production to see if the API has any disadvantages and to find bugs. Sending out PRs to dependent crates to update to the "last pre-1.0 version" would help this process.

The fixed API is then released as 1.0 by the end of the year (maybe even a bit sooner).


That said, I haven't planned to redesign the whole API; breaking changes to the current API only where it makes sense. Here are a few things we want to tackle in step 1:

  • Generalizing API to allow printing on stderr, too (#19)
  • Evaluate terms features to find out what we still want to support
  • Think about allowing another kind of API usage (see #18)
  • Support configuration via environment variable (#16)
  • Add categories and tags and all that meta data jazz to Cargo.toml
  • Think about providing a format!() like macro. Storing strings with builtin formatting is a nice thing to have, but could be difficult. (#1)
  • Maybe talk to dependent crates' authors and ask what features they are missing or if they have ideas how to improve the API.

Unfortunately, my time this year is limited, but I think I can check all those boxes above before September. If someone wants to help somehow, you're very welcome! I could offer some kind of mentorship, if you need some help. Just get in touch!

The little usage of this crate doesn't justify spending a lot of time improving its API. Instead I will update the README explaining the current situation. This crate will stay a non-production, non-mission-critical crate. There are enough other, mostly better crates.

¯\_(ツ)_/¯