HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jashkenas
coffeescript
CoffeeScript2009–2025
jashkenas / coffeescript

coffeescript

Unfancy JavaScript

181Distinct people
274Mentions
3Explicit recommenders
16.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Unfancy JavaScript

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Deno + Coffeescript? I mean it runs Typescript natively, so why not my favorite flavor of javascript, too? https://github.com/jashkenas/coffeescript/issues/5150

danschumann used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year274 dated mentions

Observed mentions: 2009-12-24 21:07:22 UTC to 2025-11-10 07:58:51 UTC.

02040602009-01-01 00:00:00 UTC to 2010-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20092010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 13 mentions; 4 submissions, 9 comments2011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 67 mentions; 7 submissions, 60 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 45 mentions; 7 submissions, 38 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 45 mentions; 11 submissions, 34 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 28 mentions; 1 submissions, 27 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 21 mentions; 3 submissions, 18 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 15 mentions; 3 submissions, 12 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 12 mentions; 0 submissions, 12 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 2 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20092009-01-01 00:00:00 UTC2010-01-01 00:00:00 UTC101
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC1349
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC67760
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC45738
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC451134
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC28127
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC21318
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC15312
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC12012
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC624
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC615
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC606
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC505
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC110
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
@@@@@@@ @@@@ @@@@@ @@@@@@@@@@ @@@ @@@ { @@@@ @@ @@@ @@@ } } { @@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@@@@ { { } } @@@@ @@@ @@ @@@@@ @@@@@@ @@@ @@ @@@@ @@ } }{ { @@@@ @@@@ @@ @@@ @@@ @@@ @@@ @@@ @@@ { }{ } } @@@@ @@@@ @@ @@@ @@@ @@@@@@@@ @@@@@@@@ { }{ }{ { } @@@@@ @@@@ @@ @@@ @@@ @@@ @@@ { { } { } { } } @@@@@@@@@@ @@@@@@@@ @@@ @@@ @@@@@@@@ @@@@@@@@ { } { } { } @@@@@ @@@ @@@ @@@@@ @@@@@ @@@@@@ { } { } @@@@@@@ @@@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@ @@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@ @@@ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@ @@ @@@@ @@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@@@ @@ @@ @@@ @@@@@@@ @@@@@ @@@ @@@@@@@@@@@@@@@@@@ @@@@@ @@@ @@@ @@@@@@@@ @@@@ @@@@ @@@@@@@ @@@ @@@@@@@@@@@@@@@@ @@@@@ @@@ @@@@ @@@@ @@@ @@@ @@@ @@@@@@@@@@@@@@ @@@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@@ @@@@ @@@ @@@@ @@@@ @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@@@@@@ @@@@@@ @@@@ @@@@ @@@@@@@@@ @@@@ @@@ @@@@ @@@ @@@ CoffeeScript is a little language that compiles into JavaScript. Installation Once you have Node.js installed: # Install locally for a project: npm install --save-dev coffeescript # Install globally to execute .coffee files anywhere: npm install --global coffeescript Getting Started Execute a script: coffee /path/to/script.coffee Compile a script: coffee -c /path/to/script.coffee For documentation, usage, and examples, see: https://coffeescript.org/ To suggest a feature or report a bug: https://github.com/jashkenas/coffeescript/issues If you’d like to chat, drop by #coffeescript on Freenode IRC. The source repository: https://github.com/jashkenas/coffeescript.git Changelog: https://coffeescript.org/#changelog Our lovely and talented contributors are listed here: https://github.com/jashkenas/coffeescript/contributors
Read the full README on GitHub

What Hacker News says

45 sources
There is no shortage of compile-to-JS languages. For a non-comprehensive list, see https://github.com/jashkenas/coffee-script/wiki/List-of-lang... For many of the offerings in the list, the problem, IMHO, is the lack of a complete story. If you base it on an existing language - in this case, Python - you would expect a full implementation of the language, or at least a good portion of the core language features. The benefits of an existing language are often familiarity and the potential to reuse existing code. With partial implementation, you can hardly gain these. And the downside of extra abstraction quickly outweighs any superficial perception of familiarity. If you create a new language, you have to strike a good balance between language features and interoperability. You need to bring enough new things to the table to make it worthw
Read the rest
hile to learn, adopt and support it, and yet you can't overstate the importance of a good interoperability story unless you can afford to completely ignore the JavaScript ecosystem. See DART.
In Brython - Python to Javascript translator
There are already implementations of Clojure and Haskell that target JavaScript, but I'm not sure if that's what you meant. I don't know if there are any implementations that target JS using this specific approach but I don't think it's one to necessarily emulate; as nostrademons points out it is interesting, but not really optimal. https://github.com/clojure/clojurescript http://www.haskell.org/haskellwiki/The_JavaScript_Problem https://github.com/jashkenas/coffee-script/wiki/List-of-lang...
In Brython - Python to Javascript translator
While I think GWT is a pretty good project and has some way to go before it can be categorized as failing, some of your other remarks make me think that you have not given appropriate consideration to the alternatives to its approach. First and foremost, you can write javascript in such a way that your code does nothing weird and only what you intended. A good place to start is still "JavaScript: The Good Parts"[1]. Then I suggest finding some examples of nicely written javascript code on GitHub or some such site. I personally think underscore.js[2] and backbone.js[3] are rather nice. If you have really given javascript a fair shot, and still strongly dislike it, there are many other languages that compile into javascript, but match its style more closely that Java does. I have been enjoying working in CoffeScript[4]. There is an excellen
Read the rest
t interactive book[5] that shows the javascript generated by the constructs in the language, which is also a good resource for discovering idioms to do things that are not obvious in javascript, like creating classes. TypeScript[6] and Dart[7] are both interesting languages with syntax more familiar to Java. There are a lot more languages that compile to javascript that I haven't mentioned[8]. It's possible that GWT and Java are the best fit for you, but don't pigeonhole yourself by thinking that they are the only good options out there. [1] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... [2] https://github.com/documentcloud/underscore/blob/master/unde... [3] https://github.com/documentcloud/backbone/blob/master/backbo... [4] http://coffeescript.org/ [5] http://arcturo.github.com/library/coffeescript/02_syntax.htm... [6] http://www.typescriptlang.org/ [7] http://www.dartlang.org/ [8] https://github.com/jashkenas/coffee-script/wiki/List-of-lang...
In Changing times for web developers
This article has no substance. He complains about how Javascript is "messy to code with", but that's subjective and he provides no context. What does he mean by messy? What features would make it less messy? He also complains that it lacks modern features. JS has support for anonymous functions, closures, higher order functions, some very advanced meta programming, and loads of other modern features. In fact, it supports a lot of the stuff that makes Ruby feel very modern to me. I'd like some specifics. What features is it missing? He also implies that test driven development with Javascript is a hassle, then admits that he's never actually tried it before. It was so absurd that I wondered if he was making some kind of very dry joke. Don't get me wrong, I don't love Javascript and I agree with his closing statement. I would love to see br
Read the rest
owsers begin to switch over to bytecode interpreters, thus allowing developers to write in any language. Unfortunately we'll probably colonize Mars before JS is displaced from browsers. Take a look at this list of languages that compile to JS: https://github.com/jashkenas/coffee-script/wiki/List-of-lang... There are tons. I haven't counted, but it looks like there are in excess of a hundred languages there. That suggests that a lot of people really feel the need to replace Javascript. I can't say that I blame them. Variables are global by default. Think about that for a minute. What deranged fiend decided that variables should be global unless prefixed with a keyword? This is one of the weirdest and most unforgivable things I have witnessed in any language, and I'm embarrassed to admit that I briefly programmed COBOL professionally (I was young and I needed the money). The fact that == has implicit type coercion is a huge pain. I know === resolves that, but it's a hassle to try to remember that when I'm programming in 2 or 3 languages at once. I can only think of one other major language that does automatic coercion on equality checks, which is PHP. Say what you will about the pros and cons of PHP, but I think most people would agree that you shouldn't look to it for advice on language design. While the prototype based inheritance system offers some nifty meta programming opportunities, it makes it really hard to debug. Things don't have classes, they just have prototypes. Virtually everything in JS comes out as [object Object]. That's a really handy message when I'm trying to debug a thorny issue! While I appreciate the elegance of making object constructors from regular functions, that makes it possible to run a constructor without putting "new" in front of it. That runs the code from the constructor, but "this" refers to window instead of your new instance. In "Javascript: The Good Parts", Douglas Crockford recommends writing some boilerplate at the top of every constructor to catch this and recall the constructor with new in front of it. That's a clever hack, but I not a fan writing boilerplate at the top of every constructor. Don't even get me started on how callbacks mess with the value of "this". There are some nifty meta programming tricks I can accomplish with that, but 99.9% of the time I want "this" to refer to the object I'm in! Speaking of which, "apply" is pretty nifty (I love T combinators), but I hate that I can't use it on constructors. The hoops I have to jump through to convert an array into arguments for a variadic constructor in JS are absurd. There, rant over. This is what I consider substance. Please list specific grievances and make suggestions when possible. Vague statements about messiness and modernity tell me nothing. In fact, they sound like FUD which is just going to agitate me.
In JavaScript Sucks.
Jeremy's reply and the counter reply on the original proggit thread are both very interesting, as is the whole thread if you haven't read it, though the tone is abrasive at times: http://www.reddit.com/r/programming/comments/zx137/coffeescr... As is his original reply 2 years ago: https://github.com/jashkenas/coffee-script/issues/712#issuec... I think in the end because of the lack of block scope in js he ended up choosing the lesser of two evils really. He does pass it off a little lightly though as if it's a feature. Jeremy's argument ultimately seems to boil down to 'it's easier for beginners', which is true and noble I think, but on the other hand it's a very easy way to introduce bugs. It's easy to have a problem domain where you start slipping up, something like a doc with a list of related_docs that you enumerate through, very easy
Read the rest
to call that inner variable doc again. Personally one of the reasons I'm in the camp of favouring explicit variable declaration even if it is a bit of a pita when writing little scripts. If cs ever becomes the next jQuery and everyone adopts it to make dealing with js that little less painful I could see demands for 'var' and 'use strict' being introduced. Though cs seems to be perpetually hovering on the cusp of mainstream acceptance. I think he sees less complaining about it as if you're at a level where you write enough code that if affects you, you'll be able to figure out and fix it yourself.
In Actually, you don't understand lexical scope

Showing the 15 most recent of 45 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.