I remain baffled that Nim isn't several orders of magnitude more popular than it is, as it certainly deserves to be!
Among the crowded field of new compiled systems languages, I think Nim offers the most rational syntax without disappointing shortcomings. As Nim approaches the emblematic "Version One" release, I think it's time for Nim fans to discuss putting forth a more aggressive outreach approach. Without some "shameless self-promotion", even the greatest programming language has little chance of catching on...
Here are a few ideas to start this discussion:
"""Thanks for your feedback on our TIOBE index. We don't track Nim/Nimrod yet. The reason is that it is not sufficiently popular yet to justify adding to our monitor list. Please check +"Nim programming" and +"Nimrod programming" in Google. It hasn't reached 10,000 hits yet. I hope that this answers your question."""
PS: I would like to once again thank the Nim devs for developing this awesome language! I haven't yet been able to help in any way, but I hope that in the long-term I would be able.
I'm continuously promoting Nim on HN, and I get a surprisingly high number of upvotes every time. Nim's syntax is the killer app of Nim.
Nim's greatest opportunity, besides game dev as others have pointed out, is in cryptography. Specifically, so many Bitcoin libraries and wallets are written in Python, but Python doesn't scale well. Yet I don't want to have to give up Python syntax to make a performant app. Why should I have to resort to C++ or Java when Nim is so much more pleasant to read and write. I think Nim can seriously overhaul the entire Bitcoin space and become highly ingrained in that community.
I started porting a very small Python crypto lib to Nim, and it was shockingly simple, requiring almost zero effort on my behalf. If we could just get stable support for cryptography, i.e. bigints, the result would've been a near duplicate codebase with the performance of C.
I'm convinced Nim can replace Python in professional settings. I'm not saying Unix beards would reach for Nim before Python, although in practice that's exactly what I'm doing because I like feeling as if whatever I write can scale to the moon if it had to.
What I find really frustrating at the moment is the fact that Nim doesn't have a wikipedia page. Nim (or rather, Nimrod) used to have a wikipedia page, however it got deleted for 'insufficient secondary sources', despite the fact that certain knowledge domains don't lend themselves well to secondary citations (A secondary citation being Nim mentioned in an academic paper, a magazine, or a business website, without the mention being written by someone directly involved in the development of Nim).
Right or wrong, these days I (and I would like to think, many others) use wikipedia as a search for everything from programs to programming languages. The fact that Nim doesn't have even a mention of wikipedia hurts.
I absolutely agree with the ideas that optimization of standard libraries is a huge first-impression for developers who will actually matter at spreading our name around. One wrong impression by someone with a voice can hurt for a while. This is essentially the problem that Node now faces as an amateur community.
Secondly, I highly encourage us to follow the advice to seek the companionship of the Python community. We should sell directly to them for many of the reasons that @Libman cited. Golang sold itself as being friendly to Python programmers and was really successful doing so. Why? Go isn't anything even remotely like Python. A Python programmer has no context for writing software in Golang as none of the patterns or techniques used in or particular to Python are applicable to Golang.
So why was Golang so successful in selling itself to Python programmers when that is an absurd matchup in the first place? Because Python programmers desperately want to believe that there is a nice systems language with static type checking that is actually in tune with their sensibilities. Luckily for them, there is! Its Nim. I know because as a 15 year Python programmer I find Nim astonishingly easy to use coming from Python and historically having trouble putting down my architectures in statically typed languages.
We need to strive to make "Nim is actually the language Python programmers are looking for" something we explicitly state and inject into the memespace.
Nim has some great features, but it cannot beat the convenience of languages like Go or C# that have decent autocomplete in the form of liteIDE or Visual Studio.
Just my opinions on some major issues preventing people from actually using Nim for projects. Nim can succeed by having a good computer/coder efficiency ratio, but because of these issues it is lower than peers such as Go.
If you solve these problems, the advocacy will come naturally.
Also the autocomplete needs to be a real one, not just one that lists all the keywords in the file.
It is a real one, albeit it doesn't work at all at the moment and it has the rather dubious "in doubt, list everything" fallback rule.
I understand that it is easier that way because of the C backend, but it drags Nim closer to the productivity level of Go.
Forward declarations are required because of the excessive meta programming capabilities in the language (and the requirements will be weakened in further releases). The fact that we generate C code has nothing to do with this.
Hello everybody, my name is Stan Steel and I've been a member of the Go community from the time it was first announced. I created the initial versions of the GoClipse plugin for Eclipse as a means to further Go adoption and have been really impressed with Nim as a language. I think the best way to increase adoption of a technology is to build things people want to use with it. You can tell people it is faster, easier, safer, etc. but I think it is better received when people are shown what can be done. I wouldn't spend to much time on fueling religious wars and simply gather around to build things. Make it easy to build cool stuff and people will come in droves. I think I am going to experiment with building an OpenGL based UI toolkit using Nim; I started it in Go, but I am want to see how the text performance can be improved in Nim.
When I am looking at a new language, I typically look for a parser generator for that language. Is there one for nim like Ragel for C, C++, Java, Go, etc.? If not, that would be something nice to have... and a vim plugin.
If not, that would be something nice to have... and a vim plugin.
vim plugin exists, I am using it with gvim, see http://nim-lang.org/question.html
going to experiment with building an OpenGL based UI toolkit
Interesting idea, but I guess it is much work. Recently someone started writing a GUI toolkit in Rust, but to me it looked not like a very serious effort (https://news.ycombinator.com/item?id=8243277). We have basic gtk2 support currently, and I am nearly done with gtk3 now. Most people seems to prefer Qt -- but it is C++, and wrapping is more difficult. Personally I am not a very big fan of Qt -- 7 million lines of code, I think a GUI toolkit should not be so big and should not take so long to compile.
I think the best way to increase adoption of a technology is to build things people want to use with it.
We have a few: The compiler itself, the web framework jester, the package manager nimble, the gtk editor/ide aporia.
This again increments the "Appeal To Python Fans" point from the original post. But the "Appeal to License Purists" point has now grown as well. (LLVM did go through with their AL2 relicensing, which gives Nim further license purity advantage over languages like Rust, Julia, Pony, LDC, Scala Native, etc.) More importantly, the license madness with which people like RMS started their political and cultural infiltration of free software has expanded to include the CoC/SWJ agitation methods like those mentioned above.
And so I ever-more encourage my fellow Knights Who Code Nim to embrace the incoming political refugees escaping Python's wicked trance! No CoCs, no commie licenses. Free markets, free exchange of ideas, and meritocracy FTW! 🤓
... no commie licenses.
From your source:
The GPL essentially tries to use copyright law to wrench code from the hands of proprietary software owners who dare use GPL software, because it states that GPL software that’s bundled with non-GPL must default to GPL – therefore spreading the license virally.
And they're not even the only commies: other licenses use patent/property laws to wrench code from the hands of open-source software users who dare to use proprietary software, because they state that proprietary software that’s bundled with open-source software must preserve the license - therefore spreading the license virally.
COMMUNISTS EVERYWHERE! :o)
From your source: [...]
It's not "source" in the journalistic sense of the word - it's an illustration. Like other links in that paragraph, there's some obvious whimsy; as there's obviously a lot of gray area between Stallman's ideals, what Stallman is able to get away with, and mildly restrictive licenses like AL2 / PSFL that only hamper philosophical purists like myself.
And they're not even the only commies: other licenses use patent/property laws to wrench code from the hands of open-source software projects who dare to use proprietary software, because they state that open-source software that’s bundled with proprietary software must preserve the license - therefore spreading the license virally.
I don't know what you mean by "wrench code from the hands of open-source software projects who dare to use proprietary software". Anyone can copy free code; no one can take it away.
If proprietary copiers are able to sell their copies, despite disadvantaging it with their restrictions, it is only because they've added value to the people who voluntarily choose to pay them, improving their productivity and growing the economy. This added value also benefits open source ecosystems with improvement ideas and jobs that pay the bills for people who support free software in their spare time.
I myself avoid all proprietary software, and it is increasingly easy for anyone to do so. (Proprietary platforms like GitHub are a different story.)
COMMUNISTS EVERYWHERE! :o)
My culture's (over)use of the word "commie" refers to a slippery slope in the statist direction, not a literal and deliberate identity.
My main point is that license purity can be a deliberate selling point for Nim. There are 100+ languages more popular than Nim, and many are catching up with the features, but Nim can have unique selling points they can never compete on. Very few languages have no uncopyfree dependencies the way Nim does (especially now that latest LLVM is AL2), and are portable to as many copyfree OSes (including Haiku, MINIX, etc). Encouraging copyfree licenses (and no ridiculous left-wing threats) in the module ecosystem would solidify Nim's claim as "the #1 most libertarian programming language". 👑
And now the lack of Ehmkeian political correctness witch-hunt drama is an additional bonus.
My bad trying to be sarcastic on the internet.
I don't know what you mean by "wrench code from the hands of open-source software projects who dare to use proprietary software".
You may have noticed that I copied the language from your illustrative non-source and made some replacements:
proprietary software owners -> open-source software projects
copyright law -> patent/property laws
GPL software -> proprietary software
My intention was to show that the phrase "to wrench code from the hands of" is not really true and overly dramatic in BOTH cases. Nobody is forced to use GPL code and then suffer consequences, just like nobody is forced to pollute their open-source project e.g. with dependencies to proprietary libraries, which would make it useless to many of its users.
There are 100+ languages more popular than Nim, and many are catching up with the features, but Nim can have unique selling points they can never compete on.
I frankly don't care that much about Nims popularity, as long as it's big enough to survive and improve. Being relatively small actually helps with swift sweeping moves like the new runtime, and keeps the politics-level low. Nim should be the best it can technologically and not rely on political/legal points. Nobody has a problem with technical quality, but what you think is a big win in the legal/political field could actually turn off other people.
And now the lack of Ehmkeian political correctness witch-hunt drama is an additional bonus.
To be honest, I find both license evangelism and CoC preaching pretty annoying. Keep the politics out of it where possible.
My bad trying to be sarcastic on the internet.
As I demonstrate, it is possible to be sarcastic without being wrong.
You may have noticed that I copied the language from your illustrative non-source and made some replacements:
proprietary software owners -> open-source software projects
copyright law -> patent/property laws
GPL software -> proprietary software
You are drawing a false equivalence between proprietary software and restrictive "free software" licenses.
Proprietary software is a non-issue to people who don't choose to use it. Nim is copyfree, and requires no proprietary software in order to operate. People choosing Nim for their proprietary projects is a long-term benefit for the Nim community. You bringing up proprietary software has no connection to this "Nim Advocacy & Promotion Strategies" topic.
Restrictive licenses, on the other hand, are a clear and present danger to that point of Nim advocacy. Such licenses enter the Nim ecosystem without most people giving them much notice. They do not constitute a legitimate contract (the way one can have legitimate point-of-sale or business contracts with Microsoft, Oracle, Apple, etc). The notion that some legalese attached to an import of an import of an import can bully you around is extremely dangerous. If a language like D would take this issue more seriously while Nim neglects it, then D would take the freedom crown away from Nim.
My intention was to show that the phrase "to wrench code from the hands of" is not really true and overly dramatic in BOTH cases. Nobody is forced to use GPL code and then suffer consequences, just like nobody is forced to pollute their open-source project e.g. with dependencies to proprietary libraries, which would make it useless to many of its users.
Obviously the phrase is not literally true - source code is not a scarce physical object one holds in one's hands - thus the word "essentially" in the sarcastically-linked "commie licenses" article.
I frankly don't care that much about Nims popularity, as long as it's big enough to survive and improve.
Then you should politely ignore the "Nim Advocacy & Promotion Strategies" thread, which obviously does aim at improving Nim's popularity.
More popularity means more ability to compete with other programming languages, more modules, more tooling, more books, more blogs, more bug reports / fixes, more tutorial videos, more employment opportunities, more attractive college girls who need my help with their Nim homework, etc.
And also of course more sponsorship opportunities, donations, entrepreneurial spin-off projects, etc. I want @Araq and @dom96 to each get a private island and a jet for their efforts. 😁
Being relatively small actually helps with swift sweeping moves like the new runtime, and keeps the politics-level low. Nim should be the best it can technologically and not rely on political/legal points. Nobody has a problem with technical quality, but what you think is a big win in the legal/political field could actually turn off other people.
Being relatively small actually helps with swift sweeping moves like the new runtime [...]
The best way to achieve that is modularity, not obscurity. It would be great if Nim had modular compiler frontends ("syntax skins"), backends, runtimes / VMs, even stdlibs - while sharing as much of the common infrastructure, libraries, and tooling as possible.
[...] and keeps the politics-level low. [...]
That's exactly the point I am making with "lack of Ehmkeian political correctness witch-hunt drama is an additional bonus".
To be honest, I find both license evangelism and CoC preaching pretty annoying. Keep the politics out of it where possible.
You are making another false equivalence.
People like Richard Stallman and Coraline Ada Ehmke are the agitators who should have been told to "shut up and code". GitHub injecting controversial left-wing propaganda banners above everyone's code is another example of political agitation. You can't ignore the people who've started this war, and only blame those acting in self-defense!
My position (or that of OpenBSD, the Copyfree Initiative, etc) is political neutrality. You won't see me pushing licenses or CoCs attacking people I disagree with. I want free software to be free, with no government force against anyone.
@libman please calm down and be less verbose in these quite offtopic discussions. Yes, you like MIT and dislike GPL, we know, you don't have to repeat it again and again...
Currently you're more harmful then helpful in protomoting Nim, I'm afraid.
Proprietary software is a non-issue to people who don't choose to use it.
In the narrow, license-dependency related sense we are discussing here, yes. In a wider sense: don't get me started.
Restrictive licenses... They do not constitute a legitimate contract
Depends on the legal system you live in. For me, "You can use my stuff if you meet my conditions" is good enough if the conditions are ok.
Obviously the phrase is not literally true - source code is not a scarce physical object one holds in one's hands
I am fully aware of this fact. What I meant was that the figurative meaning of the phrase is also not really true.
vigilance is necessary to make sure an import of an import of an import doesn't inject its legal obligations onto your projects!
Technical solution: nimble could easily have an option which lists the licenses of all packages in the dependency tree to be installed and prompts the user for final approval. If you don't like the license, don't install it.
Finding that an essential module (or a module an essential module depends on, etc) is restrictively licensed is a major blow.
The freedom to license one's code as one sees fit in a reasonable way is more important than this. Nim should not push people in any direction here, but leave the choice to the user.
Code from a restrictively licensed module cannot be copied or refactored into a free module (including the Nim compiler itself, stdlib, or core tooling). You are forced to reinvent the wheel, but you still subject yourself to legal danger if your re-implementation is deemed too similar!
Probably true for most proprietary licenses, but not for most copyleft-licensed software. GPL actually protects from code patents pretty well (something the copyfree licenses you seem to advocate don't) and I have not seen anybody get into legal trouble for genuinely re-implementing an idea from GPLed software yet.
> I frankly don't care that much about Nims popularity, as long as it's big enough to survive and improve.
Then you should politely ignore the "Nim Advocacy & Promotion Strategies" thread, which obviously does aim at improving Nim's popularity.
If in that thread measures are proposed which I see as harmful to the language, like politicizing it, it would be irrational of me to ignore it.
People like Richard Stallman and Coraline Ada Ehmke are the agitators who should have been told to "shut up and code".
I'm really trying to resist the urge to tell that to somebody else right now.. :o)
Openly agitating for something is perfectly ok by me as long as people don't act in bad faith to make others go along. ATM, I only see the CoC artists do that, not the FSF.
You can't ignore the people who've started this war, ..
Another piece of overly dramatic language.
.. and only blame those acting in self-defense!
I don't blame, that would be a moral argument. I try to make a rational argument.
@libman please calm down and be less verbose in these quite offtopic discussions. Yes, you like MIT and dislike GPL, we know, you don't have to repeat it again and again...
I didn't repeat it, I brought up a new point about an exodus of Python programmers not happy with the growing SJW culture in that community, and how it could benefit Nim.
Currently you're more harmful then helpful in protomoting Nim, I'm afraid.
I'm sorry that you feel that way...
But is that a fact? I can point to people becoming interested in Nim because of my advocacy and the specific copyfree / "libertarian" points that I specialize in. Can you point to anyone seriously saying "Nim needs more license restrictions"?
Do you enjoy not being able to promote code to Nim's stdlib, which by design logic should be included there, because it came from a PPL-licensed module?