Re: A taxonomy of Nim packages
Thank you! I'm the maintainer of the awesome-nim and I'm so tired to maintain this repo. Awesome-nim is now deprecated in favor of Curated Packages.
Re: A taxonomy of Nim packages
> I do not fully understand the sorting in each category, seems to be mostly > alphabetical, but not strict, and what is about lower case and upper case? I didn't follow any order, mostly adding a new link under a category when discovering a new package. When there were too many packages, I tried to refine the category breaking it in sub-categories. > You wrote about prefering pure packages. Note that wNim and gintro are > bindings for example. And high quality bindings may feel like pure Nim libs, > so maybe including in the list is OK, maybe mark with (b)? I was not strict on that point and did not sort the packages like the standard lib does: _Nim 's library is divided into pure libraries, impure libraries and wrappers._ _Pure libraries do not depend on any external *.dll or lib**.so binary while impure libraries do. A wrapper is an impure library that is a very low-level interface to a C library._ But this definition has been extended to not include package wrapping Web services, as the core of the work is not done by Nim code. I just wanted to show what can be done with Nim, what a newcomer to the Nim ecosystem can expect to use and where she can create new libraries. I did not want to reproduce nimble list but to produce a list of packages most demonstrative of Nim strengths (and weaknesses). Yes, you could add a (b) marker or other tag to bindings if you want. This list is only a starting point for newcomers. Then they have to explore the packages and see if they fit their needs and adopt Nim development. > Maybe you can add category microcontroller/embedded? That one may be not well > populated, but is important, and I think there are some candidates. Everybody can add new categories and sub-categories. Or change the taxonomy of classes, if they feel that's not the best structure. > One more question, may we insert a single packages under multiple categories? > I guess it would make sense in rare cases, for example my Delaunay CDT can be > grouped under Graphics algorithms or Data structures. At the beginning, I put the same packages in multiple categories. But later, I used human hyperllinks (i.e. `@see Categorie > ... > Sub-Categorie`) to refer to complementary packages. Sometimes, it's difficult to know and find which category fits best a package.
Re: A taxonomy of Nim packages
Thats works! I have moved RTree from Graphics algorithms to Data structures . I do not fully understand the sorting in each category, seems to be mostly alphabetical, but not strict, and what is about lower case and upper case? You wrote about prefering pure packages. Note that wNim and gintro are bindings for example. And high quality bindings may feel like pure Nim libs, so maybe including in the list is OK, maybe mark with (b)? Maybe you can add category microcontroller/embedded? That one may be not well populated, but is important, and I think there are some candidates. One more question, may we insert a single packages under multiple categories? I guess it would make sense in rare cases, for example my Delaunay CDT can be grouped under Graphics algorithms or Data structures.
Re: A taxonomy of Nim packages
Instead of depending on external Github repository, I've moved my curated packages list to Nim's wiki: [https://github.com/nim-lang/Nim/wiki/Curated-Packages](https://github.com/nim-lang/Nim/wiki/Curated-Packages) Now everybody can contribute. No need to wait for PR being merged: you just need to edit the page to improve it!
Re: A taxonomy of Nim packages
I just opened an issue on the awesome-nim repo about adding a few more collaborators, so that PRs can be merged more quickly. [https://github.com/VPashkov/awesome-nim/issues/65](https://github.com/VPashkov/awesome-nim/issues/65)
Re: A taxonomy of Nim packages
Well, there is a two-month-old PR waiting to merged. I think awesome-nim is a very important resource for newcomers. Personally, it was one of the first repos I checked when I found nim. Also, I agree with @kidandcat
Re: A taxonomy of Nim packages
Is it? if you open a PR, it's quickly merged last time I tried.
Re: A taxonomy of Nim packages
Like I always say, the awesome-nim repo should be under the nim org, then if all core maintainers are busy even for accepting PRs, add external collaborators, but keep the repo under your control if that person disappear.
Re: A taxonomy of Nim packages
Well, I think awesome-nim is abandoned. If anyone knows the creator it would be nice if he wants to pass the repo to the official nim organization or to someone active in the community.
Re: A taxonomy of Nim packages
> For example Araq listed the GUI packages recently, I think that were at least > 8. You are listing only 3, missing at least nigui and gintro. > > It is OK that > [https://github.com/StefanSalewski/cdt](https://github.com/StefanSalewski/cdt) > is not contained because it is not yet advertised in nimble package > directory, but why ignore > [https://github.com/StefanSalewski/RTree](https://github.com/StefanSalewski/RTree)? Because a single person can't know all packages... I've updated the [page](https://github.com/pmetras/packages/wiki) with this thread proposals.
Re: A taxonomy of Nim packages
> Though I strongly disagree with putting nimbus and blockchain in Finance. Please give me a better class name for them. Is "Blockchain" a good one?
Re: A taxonomy of Nim packages
When you decide to take vacations and visit a new country, I hope you take a tourist guide or a map of that new location and don't go at random with only a GPS. A map is not complete but indicates interesting places. Depending on your interest in history or gastronomy, you'll take different maps or guides. What is the point of having a complete historic map, if when you go on site you discover that that you have to find by yourself where is hidden this historic attraction? A map is a curated selection of locations that you can browse and organize your trip. This list of package is similar to a map. Of course, it is probably biased by my personal interests. I said I didn't considered un-pure Nim packages and let aside many bindings to external libraries. I also considered packages with minimal documentation, as I think that for discovering new package, this feature is important. I hope that like a good map, it shows some strengths and weaknesses of Nim libraries (complementary to [Needed libraries](https://github.com/nim-lang/needed-libraries/issues)). The taxonomy of packages is not ideal and can be revised and completed. Like @mratsim said, it's in a wiki to be easily changed (I'll use [Are we scientists yet](https://github.com/nim-lang/needed-libraries/issues/77) to complete it). I probably did some classification errors too: just tell me how to correct them. A third of Nimble packages are useless because they don't compile out-of-the-box with recent Nim versions, don't have minimal documentation or are abandoned, etc. Google or Nimble are not easy tools for discovering new packages. That does not help promoting Nim to a larger developer base and showing that it is a mature development platform. Why this forum has so many questions from newcomers not finding information in the documentation? Why @Araq proposed to build [distributions](https://github.com/nim-lang/RFCs/issues/173) in order to provide curated libraries? The learning step hasn't so much evolved for [years](https://www.reddit.com/r/nim/comments/72zp59/is_there_a_curated_list_of_nim_libraries/). So even if you don't like them or don't understand the use of them, I hope these lists help newcomers experiment with Nim ecosystem and contribute to it.
Re: A taxonomy of Nim packages
> I find it complementary from nimble.directory IMO, If nimble.directory was showing/grouping projects by using tags in packages.json, curated list would be much less needed.
Re: A taxonomy of Nim packages
It's a wiki, we can edit it. And it's better if people from the domain actually add the packages they find useful like: * data science / statistics: missing ggplotnim and nim-plotly * bio: missing nim-hts Though I strongly disagree with putting nimbus and blockchain in Finance. Anyway, I find it complementary from nimble.directory, nimble.directory is good when you know what you are looking for but I suppose many beginners would just want to grok the ecosystem.
Re: A taxonomy of Nim packages
If something does not compile, make a Bug on that project. IMHO.
Re: A taxonomy of Nim packages
> i dont get the point of these categorized lists. I think such a list is not that bad for newcomers to get an overview what is available. But no nimble packages should be left out -- if you do not like gtk you can not simple ignore all gtk related GUIs, and if you hate RTrees, or do not know what it is, you can not left it out, it may be important for someone. Maybe such a list can be created automatically, using the nimble tags. Bonus point would be to note what compiles with Nim 1.0.
Re: A taxonomy of Nim packages
i dont get the point of these categorized lists. if i need something, i search for it using existing search tools, not wander around some _curated_ list.
Re: A taxonomy of Nim packages
Wow, how could you include some useless packages and not Karax??
Re: A taxonomy of Nim packages
There was another similar attempt recently, see [https://forum.nim-lang.org/t/5190#32541](https://forum.nim-lang.org/t/5190#32541) Thank you for your effort, but I can not imagine that such an incomplete list can be very helpful. For example Araq listed the GUI packages recently, I think that were at least 8. You are listing only 3, missing at least nigui and gintro. It is OK that [https://github.com/StefanSalewski/cdt](https://github.com/StefanSalewski/cdt) is not contained because it is not yet advertised in nimble package directory, but why ignore [https://github.com/StefanSalewski/RTree](https://github.com/StefanSalewski/RTree)?
A taxonomy of Nim packages
When you are searching for packages for your projects, this [categorized list](https://github.com/pmetras/packages/wiki) can help you to start. They could be added to [Awesome Nim](https://github.com/VPashkov/awesome-nim) too.