As other people are saying, this has a lot to do with almost all projects relying somewhat on Javascript.
It also has a lot to do with there being very poor ways of managing dependencies in Javascript. For instance, in python there is pip/pypi and in ruby there are gems. Javascript doesn't yet have that. I don't check in all of my dependent libs into my repo. I do check in the Javascript libs though.
There is npm (http://npmjs.org/) but it requires node and for most people, they don't want to bother. They just manually change the name of the file or directory and check in a new version.
Sure, but I bet it gets pulled in a lot where projects really aren't JS projects. For example, my python mongoDB library is "25% javascript" but it's all in the generated documentation: https://github.com/jeffjenkins/MongoAlchemy/graphs/languages
For what it's worth, we try to exclude popular projects (like jQuery, Prototype, or the wysiwyg textareas), as well as other common directories like 'vendor'.
I think you need to work on this a bit more. It seems that a very large percentage of the web apps I work on, which include a few JavaScript libraries but are primarily written in Perl or Python get classified by Github as "JavaScript". I've created a short list of 15 just from my personal and work repos: https://gist.github.com/734979
I added mochikit to our list of exceptions, and now all of your projects are Python, except rollo. Rollo uses a 'highlighter' js lib which still counts as JS. It's one thing to exclude popular libs with names like "MochiKit" or "jQuery". "Highlighter" is a pretty generic name though, and I feel iffy about adding it. FWIW, here's our current list of exceptions:
You know, I wanted to say the same sort of thing...
But then again, for a certain definition of 'popularity,' it still holds. If, say, 20% of every web app is Javascript, and all of them use it... it still has a lot of influence, even if it's distributed amongst a lot of projects.
It's just infrastructure. A lot of the any web stack is built with C or C++ - and in terms of pure LoC probably outweighs the application - but that doesn't mean it should be included in the count.
Exactly. The code that I've written for my most recent Sinatra app is almost entirely ruby, but since I include jQuery & jQuery UI in the repo (for easier offline development), it's 91% JS and 9% ruby[1].
In addition to that, GitHub counts JSON files as JavaScript. I have a Django project with a large JSON fixture checked in, and GitHub reports it as 90% JS, 10% Python.
Where exactly is the hate? I can't find a single comment that I would say is hateful.
People are just pointing out that it might not be that great an indicator of popularity. The rebirth and rise of Javascript is quite real and well deserved, but I wouldn't hold this up particular statistic as being that significant.
I don't know if JavaScript had much to do with its own success. I would say that JavaScript has succeeded, in spite of itself, due to increasing focus on web applications.
Not to imply JavaScript is a "bad" language - I just don't think people are rushing out code in JavaScript because of the language itself, but because the position that it is in.
JavaScript had everything to do with its own success. It was a language written specifically to be run inside the browser.
People should rush out to code in any language because of the capabilities of that language. It is silly to focus on minor syntactical differences as the determining factor for a language. I happen to like prototypal languages quite a bit, despite some oddities languages like JS & Io have.
Religious wars only pop up when you have a dozen languages/frameworks that can all do the exact same thing, just written with a different syntax, so people come up with superficial reasons to differentiate something. In the grand scheme of web apps, Python == PHP == Ruby. That certainly won't be a popular thing to say, but it is true when you look at the capabilities of each compared to other types of languages and approaches to programming.
I choose JS because it is the only language that runs in the browser as well as the server (<--- Killer feature). It is the only one that has that unique capability. If it weren't for JS, you'd be writing Java applets while wanting to shoot your brains out. JS created the position it is in by giving the web a native programming language.
> I choose JS because it is the only language that runs in the browser as well as the server (<--- Killer feature)
That's what I was getting at - that JavaScript is popular because of the position that it is in (not because of the ECMAScript specification). JavaScript could have been a number of languages, the fact that it happened to be JavaScript, is more a result of a externalities than the language itself.
JavaScript was originally developed on an incredibly short development cycle, so I would be very surprised if we couldn't create a better language for the browser after 15 years of experience.
As far as JS on the server - I don't really see the advantage (other than it's a language that people already know). Having written several Node apps, using a single language didn't strike me as a "killer feature" (especially since their usage is fairly distinct - manipulating the DOM vs manipulating data stores and what have you). Different tools for different problems. I don't see JS as being superior for solving server-side problems.
"JavaScript could have been a number of languages, the fact that it happened to be JavaScript, is more a result of a externalities than the language itself."
If you are looking for The Perfect Programming Language, you are going to be waiting for a looooong time. They all have flaws. For everyone who loves a specific language, there's someone else out there that loathes it.
"I would be very surprised if we couldn't create a better language for the browser after 15 years of experience."
We probably could, but why? JS is very simple for beginners, expressive enough for experts, and extensible for everyone in between. Don't like JS? Fine, use any other language that compiles to it. Don't like any of those? Write you own, it's really easy.
"I don't see JS as being superior for solving server-side problems"
In the server-side scripting language world, JS & Node is by far the easiest way to do concurrent servers. That's at least one area is is superior at. There are also more JS coders than any other language on the planet, so that frees up a lot of people who are currently duplicating work by writing the same functionality for a dozen different languages.
You seem to be missing my point - which is not to criticize JS (I use JS frequently, and actually like a lot of it) - I'm merely suggesting that its success is not due to the language itself and its merits, but to the domain that it has found popularity in, the browser. Were there a competing language to JS (not Flash, not Java - but a comparable language for scripting the DOM), we might have a real comparison. How can you really gauge 'popularity' when there is no real choice?
If it weren't for JS, you'd be writing Java
applets while wanting to shoot your brains
out.
Actually java applets these days are quite pleasant to write once you learn about the few (not even that many) quirks they have.
It's mostly the UX on some platforms that sucks about them, e.g. mac os x's java plugin lags behind the windows/linux plugin from sun/oracle & combined with firefox make applets freeze your browser for a couple of seconds upon startup. If you use chrome on windows or linux applets have no detectable lag.
A few years ago before plugin2 on windows & linux and before we had chrome they sucked everywhere, which is probably the source for all or most of the applets hate.
Do you mean a random gem working within a Rails app? That's a bit different, Rails conventions have changed significantly. A random gem might be an old gem that used old conventions, doesn't mean it wasn't quality at the time.
Maybe I should have said any random combination of gems. Monkey-patching is fine for a small-ish ruby script, but start combining ActiveSupport with some others and you quickly run into weird order-depending loading issues because of the Monkey-patching.
I've found namespacing to be the solution and it doesn't really cause me too much friction when coding either.
In the past 3 years that I've used Rails I've used tons of gems. I've seen exactly 1 gem in total that was messed up by the presence of ActiveSupport. I'm really wondering where you got the impression from that monkey patching is such a big problem.
No, it does not equate to quality. However, if your language isn't sufficiently popular, you run the risk of not having many ready-made libraries to utilize.
A look at https://github.com/languages yields some interesting results. I see VimL there at #10. Is this all just people backing up their personal vim configs, or is there actually anything interesting happening in VimL (seems unlikely)?
Maybe a better question: is GitHub just tracking the number of repositories that contain that language to gauge its popularity? That doesn't seem like the best metric.
I wonder what the most popular license is. My anecdotal evidence suggests that the beer licenses have become more popular than the GPL licenses, especially for web projects (MIT, BSD etc.)
It also has a lot to do with there being very poor ways of managing dependencies in Javascript. For instance, in python there is pip/pypi and in ruby there are gems. Javascript doesn't yet have that. I don't check in all of my dependent libs into my repo. I do check in the Javascript libs though.
There is npm (http://npmjs.org/) but it requires node and for most people, they don't want to bother. They just manually change the name of the file or directory and check in a new version.