Adding a short opinion regarding what should be in the standard library for
v1.0. Keep in mind my background is mostly python, however, I'm still a newb
with Nim.
One of Python's selling points is the large standard library that is
distributed. But one of it's flaws, however, is that it only has two levels of
libraries:
* Standard Libraries
* All external libraries (PyPi)
That means if needed library is not in standard, it is _very_ non-obvious which
competing library is a good one. One has to hunt-around the similar libraries
and try to get a "general impression" and hope you are right. Looking at repo
update traffic helps, etc.
My recommendation for nim:
Standard Library:
These are libraries installed with the compiler itself. Always available.
* Keep it large
* but if a lib is not ready to be "frozen" to v1.0, keep it out; you can
always easily add it in later. But change becomes problematic once it is
distributed with the compiler.
* Do not allow libraries dependent on external software projects. So, remove
"db_postgres" and "db_mysql", for example. These can, potentially, change too
fast for a standard lib. Dependencies on external protocols (such as http) are
okay, however, as they change more slowly.
Nimble Libraries:
* Eventually add a website and server system to gather stats; it should use
the JSON distribution (not replace it.)
* Helps create consensus.
* Possibly add forums for packages
* Add **voluntary** collection system to nimble that sends a "I just
installed this" to that server to help with stats.
...and, something not seen elsewhere, a possible third category...
Nimble Canonical:
This is a list of libraries "highly recommended" by the nim-lang developers.
* Could be a single "nim-canon" distribution package on some OSes. Otherwise,
requires nimble.
* This is where libraries pending "standard lib" are placed.
* perhaps all repo'd at something like github.com/nim-canonical
* Part of the point is to focus developer attention
Just ideas...
BTW, I've toyed with the idea of arbitrarily creating the nimble website; as I
would have found it useful myself. But I don't want to step on anyone's toes.