Closed vitiral closed 5 years ago
My response was:
@killercup Thanks for the creating this issue!
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.
This is my the rough roadmap I have in my head:
ergo
ecosystem to accept broader sets of versions (i.e. rand = ">= 0.2.5 < 0.4"
instead of just rand = "0.4"
). I would like to setup some kind of automated test that tests a crate with both its lowest AND highest versions in travis+appveyor and get those tests added to the CI of crates we depend on, then leveraging it to broaden allowed dependencies across the ergo ecosystem.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:
unstable
feature gate, etc. During this time a stabilization policy should be created. Also, ergo
should expand into other domains far outside of cli
applications, such as frontend/backend web, data analytics, etc. This is also when we would release the ergo
crate itself, which is the "full batteries" of the rust ecosystem.I am extremely open to feedback on this vision. This is mostly my own thoughts of what ergo should become.
cli_system: deal with operating system details. Examples include time (chrono), signal handling ctrlc, system libraries (libc), shell variables (shellexpand) and randomness (rand).
chrono
doesn't seem cli-specificrand
doesn't seem cli-specificI imagine some other crates that should be involved or recommended here are app_dirs and/or config
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.
@epage
app_dirs
is super cool!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.rand
/chrono
: the point of ergo
isn't just for CLI's, although that is the primary first use case. And I disagree, randomness and handling time are often needed in CLIs. For instance: creating a random file name or logging how long something tool. Also, I think chrono
should be replaced with the time crate, since it is a bit simpler and more widely used.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:
StringEasy
trait or something that is implemented for &str
and String
? How much more cost would these improvements be?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>
😄
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.
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 ergo
s 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.
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.
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!
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
crate-ci
org I'm creating, my vision is that someone can just go through and update all cargo
subcommands to new versions of cargo
while the author focuses on what they wantThis 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.
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:
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 :)