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.

Reply via email to