rust-lang-nursery / ecosystem-wg

Coordination repository of the ecosystem Working Group (WG)
MIT License
22 stars 2 forks source link

ergo ecosystem approach #9

Open vitiral opened 6 years ago

vitiral commented 6 years ago

This issue is to outline one possible approach to improving the discoverability, interopability and ergonomics of the rust ecosystem, which is the ergo crate ecosystem

Goals From the README

The Ergo Ecosystem is an effort to unify the rust ecosystem at critical sections. It is currently focused on improving Command Line Interface (CLI) ergonomics. To accomplish this it will create multiple targeted conglomeration crates. These crates do much more than simply exporting the API of their sub-crates. They implement wrapper types to unify them, as well as have tested documentation to ensure they interopate together reliably.

Ergo's current goal is to be a full featured CLI SDK, built from composable and distinct sub components. You should be able to depend on the ergo library itself or each of its sub components individually.

Ergo aims to provide the following benefits:

Further Goals

The fundamental goal of ergo is to make working in rust with ergo feel like a completely different language. The goal is essentially that there are three possible "experiences" with rust:

  1. Developing using rust with no_std -- very clean compared to general embedded development, but a lot more verbose than "normal". Typically requires the use of fairly advanced features. The embedded-WG is working on this area.
  2. Developing using rust with std and crates: way less verbose, but you still have to have a good idea of the ecosystem to be productive since std is just not big enough for the majority of use cases.
  3. Developing using rust with ergo (or similar "crate ecosystem"): most things you want that are not application specific can be accessed/looked up quickly. It should feel a little like working with python: the stdlib is slightly overwhelming, but at least you know where to look for most "basic" operations you want to perform!

I think the ecosystem-WG should focus on making both item 2 and 3 better, as they actually feed into each other. By creating "crate ecosystems" we will uncover interop and API gaps which can be fixed regardless of there being a crate like ergo.

Enet4 commented 6 years ago

Ok, took me a while to grasp the ergo concept. It's like we enter python-land in the sense that a single dependency contains nearly everything we need for a certain ecosystem.

I have two questions for the time being: since there appears to be a major focus on CLI applications at the moment, yet currently there's only a recommendation of the use of quicli, will this one be inside an ergo sub-crate eventually? Also, how opinionated will the sub-crate be? If I just want to use clap, will I have to add it separately?

vitiral commented 6 years ago