Nim

Efficient like C, expressive like Python and flexible like Lisp

# Nim ------ **TL;DR** Want to accelerate Nim's development? Every dollar/euro/pound/ruble counts! [Nim](http://nim-lang.org) development has traditionally only been done by programmers in their spare time entirely voluntarily. This tradition continues to this day. The Nim community has been accepting donations through various services for the past couple of years. What we want to do now is to create a focused campaign to get recurring donations in order to allow us to accelerate the development of the Nim programming language. Despite the lack of financial support, [Nim's development](https://github.com/nim-lang/Nim/graphs/contributors) has been very successful if a bit slow. Most of the other projects that Nim competes with are developed by a dozen or so full-time employees, whose sole job is to develop those projects. Nim has never had anyone working on it full-time, and in order for Nim's development to catch up with the likes of Go and Rust, it will need your support. ## What we want to achieve The [Nim language](http://nim-lang.org) as a whole is quite close to a 1.0 release, but that missing last 10% to rock solid stability is the hardest to achieve, so we need your help! We want to ensure that version 1.0 includes everything that it needs, that experimental features are cleanly marked as such and that cruft is removed. No breaking changes after 1.0 should be necessary. Some specific goals for Nim that we have in mind include: * Fixing the ``Concept`` implementation and providing thorough documentation for it. * Fixing bugs related to ``Static[T]``. * Making ``not nil`` the default. * Fixing incremental compilation. * Weakening the requirements of having to deal with forward declarations in the language. The Nim project is of course composed of more than just the Nim compiler. It also includes the Nim standard library, Nimble package manager, Aporia IDE, and other tools. We aim to also focus on those aspects of the project with the help of the funds raised in this Salt campaign. ### The standard library Nim's standard library is very rich. It contains everything from an HTTP client to a JSON parser. But over the years, the standard library has accumulated a bit of cruft. With your help we will be able to spend time reviewing the current state of the standard library, to see areas where it needs to be improved, and to work on improving those areas. Some specific goals for the standard library include: * Removing old deprecated procedures. * Verifying that the modules in the standard library deserve to be in it. * Ensuring that modules in the standard library implement all the desired functionality. * Verifying that all the procedures in the standard library follow the standard library conventions. * Writing more documentation. ### The Nimble package manager The Nimble package repository already hosts over 300 packages. These packages can be easily managed using the Nimble package manager. While Nimble is already very stable, it is missing some important features. With your contribution we can concentrate our resources on implementing these missing features, which will hopefully encourage others to create more Nimble packages, helping the package repository to grow in size. Some specific goals for Nimble include: * A website dedicated to hosting Nimble packages similar to hackage and npmjs.com. * More flexible nimscript integration. * Better management of git/mercurial dependencies. * More accurate package verification. * Dependency locking. * System-wide Nimble installation support. * Better and less verbose output from the Nimble command line tool. For a full list of our plans take a look at the Nimble [GitHub issue tracker](https://github.com/nim-lang/nimble/issues). ### Better tooling We would like to provide an integrated development environment that is both easy to get started with and at the same time very powerful. Aporia was a good attempt at making this happen, and we hope to further its development. But we do recognise that there are plenty of people who have already found their favourite IDE or text editor and do not wish to switch, so it is also our aim to further the development of editor-agnostic tools such as ``nimsuggest`` and to build new tools which make development in Nim much easier. Some specific goals for this include: * Bugfixes for autocompletion, including work to improve ``nimsuggest`` which would benefit all IDEs and text editors. * GDB/LLDB support ### The community The [Nim community](http://nim-lang.org/community.html) is very important to us, and because of that we want to engage ourselves with the community a lot more. One idea that we've had is creating a survey, in order to give us a better idea of what the community wants out of Nim, and how they think we should be furthering Nim's development. As part of our community effort we would also like to donate some of the money raised in this campaign to prominent Nim open source projects, in the form of bounties. That way everyone in the Nim community is encouraged to contribute to these projects, which as a result means that the Nim project as a whole benefits from it. In addition to that, the money raised through this campaign will allow us to spend more time reviewing much more of the many pull requests that the members of the Nim community already submit to us! ## Thank you If you have made it this far, then thank you very much for taking the time to read all this. If you like this project and see its potential, then support us now! Every dollar helps! I promise you that it will be a worthy investment. Of course if you can't support us, for whatever reason, we appreciate you reading this and hope that you will spread the word about this campaign on to your family, friends, colleagues and Twitter followers :)