rust-crates / ergo

the ergo crate ecosystem: making rust's ecosystem more ergonomic, therefore more fun.
Other
58 stars 3 forks source link

Roadmap #4

Closed vitiral closed 5 years ago

vitiral commented 6 years ago

This post was originally posted by @killercup here but it seems that only members of the ergoteam can use that link

Hey, thanks for inviting me to this team. Since clicking the team link brought me to this new team discussion feature of Github, I'm gonna use it!

Roadmap

What is your roadmap for the ergo crates? In https://github.com/killercup/quicli/issues/19#issuecomment-359592179 you wrote a bit about which "combining forces" crates you wanted to see:

  • cli_system: deal with operating system details. Examples include time (chrono), signal handling ctrlc, system libraries (libc), shell variables (shellexpand) and randomness (rand).
  • files+directories. Some crates could be path_abs, walkdir, tar
  • deserialization and config files: toml, serde_json, serde_yaml, etc
  • terminal input/output styling: tabwriter, pretty_tables, termstyle, etc
  • There also need to be "generally needed stuff" -- lazy_static, maplit, failure.

ergo_fs is the first step here. Do you want to polish this, or begin work on another crate right away?

I'll personally be quite busy with dayjobs.iter().collect::<Money>() for the next few weeks; the time I have, though, I'll try to invest on pushing quicli towards a usable and semi-feature complete state.

Infrastructure

Do you want to make template for setting up projects in the same way? With travis/appveyor/bors, licenses, github issue/pr templates, contributing file/CoC?

I'm working on the docs setup for quicli right now. Feel free to copy that :)

vitiral commented 6 years ago

My response was:

@killercup Thanks for the creating this issue!

Initial Plan

I think my first plan of attack is to "just build the crates" -- I posted those issues to the README with checkboxes, and I plan on attacking one after the other.

It is a good point that I should simultaniously get the build automation set up, since that is for the most part "just" a couple of templates. I've already got a pretty decent template for travis+appveyor. I'll try and figure out bors, PR-templates and add the COC (it's just going to be a link to rust's CoC) as well before I make any new crates.

Rough Iniital Roadmap

This is my the rough roadmap I have in my head:

Over the next year I plan on continually breaking ergo libraries, always staying at the cutting edge, refactoring APIs where necessary, cleaning up dependencies, etc. The long term vision I have for the ergo ecosystem is:

I am extremely open to feedback on this vision. This is mostly my own thoughts of what ergo should become.

epage commented 6 years ago

cli_system: deal with operating system details. Examples include time (chrono), signal handling ctrlc, system libraries (libc), shell variables (shellexpand) and randomness (rand).

I imagine some other crates that should be involved or recommended here are app_dirs and/or config

epage commented 6 years ago

I think it'd be worth reaching out the to easy_strings author to see if he is willing to move it under this umbrella project.

vitiral commented 6 years ago

@epage

Easy Strings

I think it'd be worth reaching out the to easy_strings author to see if he is willing to move it under this umbrella project.

In general I don't think that crates should move under the rust-crates project unless the maintainer is going on haitus or something. Even then I would be pretty hesitant until the rust-crates group is larger and want to take on the maintenence burden.

As far as the crate itself goes I'm not sure I'm completely sold right now. What are the major benefits? It seems like they are:

The major cost as I see it is in just adding another string type. Plenty of people are already confused about &str vs String vs Cow<&str> 😄

epage commented 6 years ago

I only skimmed the docs for config but I feel a bit overwhelmed... what exactly does it do and how does it do it? It seems like it does live loading of config files, but the docs are hard for me to follow.

I've not yet noticed anything about live reloading. The neat thing about config is that it helps you manage multiple sources of configuration (environment variables, per-user config, global config). I've not yet seen how it helps with managing command line arguments that impact configuration.

epage commented 6 years ago

In general I don't think that crates should move under the rust-crates project unless the maintainer is going on haitus or something. Even then I would be pretty hesitant until the rust-crates group is larger and want to take on the maintenence burden.

Personally, I think there should be a dedicated ergo org for all things ergo to live under. I keep forgetting that isn't the case which is why I recommended talking to the other about joining forces, including moving all the code into one org.

As far as the crate itself goes I'm not sure I'm completely sold right now. What are the major benefits? It seems like they are:

ergo_fs expands path types from 2 to 8.

I was working under the assumption of ergos goal is to make programming in Rust to be higher level at the possible sacrifice of performance. In this case, something like easy strings would make it so the target user only has to worry about one string type. The docs would then give guidance on interop.

vitiral commented 6 years ago

In the case where the library author wants this, maybe. But most people write libraries because they enjoy it, and they probably want to continue being the primary owner. Personally, that vision isn't what I had in mind. But again, I want ergo to be much more than me, so I'm open to what the community thinks. (also ergo is really young, so I think doing this kind of thing now would be premature)

I get what you're saying now for EZString. I'll have to take another look at it.

epage commented 6 years ago

I was working under the assumption of ergos goal is to make programming in Rust to be higher level at the possible sacrifice of performance.

Personally, that vision isn't what I had in mind.

I must have misunderstood our conversation from reddit:

Thanks for the feedback. The goal is indeed to be "easier than python" -- we should put that somewhere in the design goals!

epage commented 6 years ago

In the case where the library author wants this, maybe. But most people write libraries because they enjoy it, and they probably want to continue being the primary owner.

Consolidating under a shared org is not meant to take people's baby from them but to

This is presupposing that the person is maintaining the crate because it is of interest to them and not because it was expedient for them (needed dependency, onetime idea experiment, etc). In this case, they probably would appreciate help in adding features, support, etc.

See also killercup's post

So the key thing is we should at least ask people rather than presuppose.