Based on my exploration of Nimble packages, here are a few statistics on these packages.
* 188 packages have no documentation (18%). Not a single comment in code, I don't even talk about documentation comments here, nor a README file. Nothing! * The vast majority (47%) has a minimum documentation, either a README file where the user can find pointers on how the package works or can generate code documentation with `nim doc`. * Packages that are wrappers to external C libraries have been counted as having a minimum documentation when the wrapped library has documentation, even when the Nim package does not... * 45 packages (4%) have outstanding documentation, usually with pointers to other web sites (for instance WikiPedia) and documented examples. Here is the list of these packages: Packages| Description ---|--- arraymancer| A tensor (multidimensional array) library for Nim c4| Game framework, modular and extensible cello| String algorithms with succinct data structures chronicles| A crafty implementation of structured logging for Nim coco| Code coverage CLI + library for Nim using LCOV compiler| Compiler package providing the compiler sources as a library. confutils| Simplified handling of command line options and config files csvtools| Manage CSV files docopt| Command-line args parser based on Usage message elvis| The elvis package implements a 'truthy', 'ternary' and a 'coalesce' operator to Nim as syntactic sugar for working with conditional expressions emerald| macro-based HTML templating engine eth| A collection of Ethereum related libraries fancygl| nice way of handling render code glob| Pure library for matching file paths against Unix style glob patterns. hastyscribe| Self-contained markdown compiler generating self-contained HTML documents lilt| Parsing language litestore| A lightweight, self-contained, RESTful, searchable, multi-format NoSQL document store msgpack4nim| Another MessagePack implementation written in pure nim nake| make-like for Nim. Describe your builds as tasks! neo| Linear algebra for Nim nifty| A decentralized (pseudo) package manager and script runner. nimble| Nimble package manager nimgame2| A simple 2D game engine for Nim language. nimha| Nim Home Assistant (NimHA) is a hub for combining multiple home automation devices and automating jobs nimna| Nucleic acid folding and design. nimterop| Nimterop makes C/C++ interop within Nim seamless nimwc| A website management tool. Run the file and access your webpage. nimx| Cross-platform GUI framework npeg| PEG (Parsing Expression Grammars) string matching library for Nim polypbren| Renormalization of colloidal charges of polydipserse dispersions using the Poisson-Boltzmann equation protobuf| Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools psutil| psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network). Since 2018 maintained by Juan Carlos because was abandoned. pymod| Auto-generate a Python module that wraps a Nim module. rbtree| Red/Black Trees react| React.js bindings for Nim reactor| Asynchronous networking engine for Nim rosencrantz| A web DSL for Nim spry| A Smalltalk and Rebol inspired language implemented as an AST interpreter strfmt| A string formatting library inspired by Python's format. tempdir| A Nim library to create and manage temporary directories. timezones| Timezone library compatible with the standard library. turn_based_game| Game rules engine for simulating or playing turn-based games typography| Fonts, Typesetting and Rasterization. wNim| Nim's Windows GUI Framework. yaml| YAML 1.2 implementation for Nim * Nimble does not impose a package structure, but best practices suggest to hide private modules and have test directories. 591 packages follow these rules (58%). * Here are the best 40 organized packages (4% of total). Packages| Description ---|--- BipBuffer| A Nim implementation of Simon Cooke's Bip Buffer. A type of circular buffer ensuring contiguous blocks of memory BitVector| A high performance Nim implementation of BitVector with base SomeUnsignedInt(i.e: uint8-64) with support for slices, and seq supported operations MiNiM| A tiny concatenative programming language and shell. NimData| DataFrame API enabling fast out-of-core data analytics RollingHash| A high performance Nim implementation of a Cyclic Polynomial Hash, aka BuzHash, and the Rabin-Karp algorithm alea| Define and compose random variables arraymancer| A tensor (multidimensional array) library for Nim asyncmysql| Asynchronous MySQL connector written in pure Nim asyncpg| Asynchronous PostgreSQL driver for Nim Language. c4| Game framework, modular and extensible cligen| Infer & generate command-line interace/option/argument parsers compiler| Compiler package providing the compiler sources as a library. docopt| Command-line args parser based on Usage message emerald| macro-based HTML templating engine eth| A collection of Ethereum related libraries illwill| A curses inspired simple cross-platform console library for Nim nimble| Nimble package manager nimbus| An Ethereum 2.0 Sharding Client for Resource-Restricted Devices nimgame2| A simple 2D game engine for Nim language. nimhdf5| Bindings for the HDF5 data format C library nimna| Nucleic acid folding and design. nimqml| Qt Qml bindings nimwc| A website management tool. Run the file and access your webpage. norm| Nim ORM. npeg| PEG (Parsing Expression Grammars) string matching library for Nim plotly| Nim interface to plotly pnm| pnm is library for PNM (Portable AnyMap). polypbren| Renormalization of colloidal charges of polydipserse dispersions using the Poisson-Boltzmann equation protobuf| Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools psutil| psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network). Since 2018 maintained by Juan Carlos because was abandoned. pymod| Auto-generate a Python module that wraps a Nim module. rbtree| Red/Black Trees spry| A Smalltalk and Rebol inspired language implemented as an AST interpreter spryvm| Homoiconic dynamic language interpreter in Nim stew| stew is collection of utilities, std library extensions and budding libraries that are frequently used at Status, but are too small to deserve their own git repository. stint| Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices stomp| A pure-nim implementation of the STOMP protocol for machine messaging. telebot| Async Telegram Bot API Client turn_based_game| Game rules engine for simulating or playing turn-based games unicodedb| Unicode Character Database (UCD) access for Nim * 10 packages should be aliased in Nimble as their authors renamed them in Github but did not do it in Nimble: nim_cexc, nim_cjson, nim_curry, nim_tiled, nimarchive, nimassets, nimbass, nimbigwig, nimblegui, std_shims. * I was impressed by the number of packages for hash functions or colour management in console. Perhaps authors of packages on similar themes should combine efforts. For instance, having a super-package covering variants of hashing algorithms, with good documentation presenting the benefits of each algorithm would prevent using the wrong algorithm. * There's even a Go project listed in Nimble! pudge * One of the biggest strength of Nim is interfacing with C library. Not surprisingly, many packages (28%) consist only in wrappers to external libraries or web services. * What are the best Nim packages? In case you need models to get inspiration for your project, look at these packages. Some are complex like the Nim compiler, other are simpler. Packages| Description ---|--- compiler| Compiler package providing the compiler sources as a library. nimble| Nimble package manager arraymancer| A tensor (multidimensional array) library for Nim docopt| Command-line args parser based on Usage message eth| A collection of Ethereum related libraries psutil| psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network). Since 2018 maintained by Juan Carlos because was abandoned. MiNiM| A tiny concatenative programming language and shell. NimData| DataFrame API enabling fast out-of-core data analytics c4| Game framework, modular and extensible chronicles| A crafty implementation of structured logging for Nim confutils| Simplified handling of command line options and config files emerald| macro-based HTML templating engine hastyscribe| Self-contained markdown compiler generating self-contained HTML documents nimbus| An Ethereum 2.0 Sharding Client for Resource-Restricted Devices nimgame2| A simple 2D game engine for Nim language. nimna| Nucleic acid folding and design. nimwc| A website management tool. Run the file and access your webpage. nimx| Cross-platform GUI framework norm| Nim ORM. npeg| PEG (Parsing Expression Grammars) string matching library for Nim plotly| Nim interface to plotly polypbren| Renormalization of colloidal charges of polydipserse dispersions using the Poisson-Boltzmann equation protobuf| Protobuf implementation in pure Nim that leverages the power of the macro system to not depend on any external tools pymod| Auto-generate a Python module that wraps a Nim module. rbtree| Red/Black Trees spry| A Smalltalk and Rebol inspired language implemented as an AST interpreter turn_based_game| Game rules engine for simulating or playing turn-based games yaml| YAML 1.2 implementation for Nim * Most popular licenses. Permissive licenses are the most popular with package authors. Licence| Number of packages ---|--- MIT| 785 Apache License 2.0| 64 BSD| 20 LGPLv3| 20 BSD3| 13 CC0| 12 GPLv3| 11 Apache2| 8 LGPL| 6 LGPLv2.1| 6 It could be interesting to see which type of license is mostly used by package category/domain. * Most prolific developers Author| Number of packages ---|--- juancarlospaco| 45 genotrance| 42 achesak| 39 nim-lang| 39 status-im| 35 FedericoCeratto| 23 nimious| 18 yglukhov| 18 ba0f3| 16 PMunch| 16 dom96| 15 fowlmouth| 13 jangko| 13 OpenSystemsLab| 12 Araq| 12 treeform| 12 unicredit| 10 xmonader| 10 euantorano| 10 def-| 9
