-
Notifications
You must be signed in to change notification settings - Fork 4
CS2 Discussion: Question: Survey for devs/teams with maintained Coffescript codebases: happy with CS, or considering migrating? #32
Comments
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? |
Re existing CS projects, @devongovett justifies porting fontkit from CoffeeScript to ES6 here. He also plans to migrate pdfkit to ES6. |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from CoffeeScript, please explain your reasons.
If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? We're agreed on switching to JavaScript, but there are certainly some hesitations:
|
Feedback from Atom Editor at atom/atom#12656. Relevant quotes:
|
CS project summary. Is the project considering a switch from CoffeeScript to ES2015/other? If considering switch from CoffeeScript, please explain your reasons. (Fun fact: I agree with switching to ES2015 now, but if the company was using plain JS instead of CoffeeScript in the past, I probably wouldn't even consider to join them. I was very strongly Python-oriented and I completely hated plain JS. With CoffeeScript it was at least bearable.) |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? The fact that in CS everything is an expression, the cleaner syntax, more powerful and expressive. Small things Babel is the only way to use ES6 stuff BUT it adds a build step OR it's super-slow (using require-hook). I also had problems with exception stacks not being readable and source maps not working as well as coffee. I don't consider it a decent backend replacement because it just adds overhead on our case. It's ok for a webapps indeed we do use ES6 js + jsx for frontend code. |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? |
@davibe I have to ask if you've considered LiveScript. Much more functional / closer to Haskell than CS. |
@jcollum no. Quickly looking at it the syntax already has horrible things that i don't need to know % *+like |> <- this. 'cmon. I would even remove |
No need to apologize, @davibe! I can relate re |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? |
@GeoffreyBooth suggested I repost this here: Hey I don't know where else to put this so: I'm working on a new Hapi.js project the last few days. Decided to do it in ES2015 since a couple of junior devs are helping me. HOLY CRAP I MISS COFFEESCRIPT. All these damned extra braces and semicolons and such, clutterin' up my code. And the lack of easy key/value list comprehension. Etc. So, thanks so much for participating here. Know that your work is appreciated. |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. Long term sustainability is also a concern as there are a lot of projects moving away from CoffeeScript. We feel that CoffeeScript is quite mature and doesn't need a lot of contributions to maintain itself. But as Javascript get more updates CoffeeScript could get lagged behind without a large community using it. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? We also use executable class blocks a lot, as well as markup on CoffeeScript - which is made possible because of the CoffeeScript syntax - Weya.coffee |
CS project summaryCoffeeScript has been my go-to JS solution for several years, multiple projects, startups, and Appcelerator Titanium apps. Easily ?0K+ lines of code invested and currently in use. Is the project considering a switch from Coffeescript to ES6/other?I use Iced CoffeeScript, which is already using ES6 as a compile target in branch iced3. There are multiple of us who will sustain Iced for the forseeable future. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS?Iced await/defer syntax solves async issues, and never changes despite the velocity of JavaScript's language changes. This to me makes it a far more sustainable and safe business decision than trying to 'keep up' with ES2015 or ES2017. I never require my developers to write in Iced but they tend to choose Iced as it's so productive. I've never felt in my teams that CoffeeScript was keeping us from creating a better product. I love CoffeeScript's functional syntax. Recently I translated Riemann's query parser from Clojure, and Coffee enabled me to create a mini-Lisp to do a near-direct translation. I do wish there was an easy way to do optional typing with CoffeeScript. Contracts.coffee was a really cool concept. I feel like so much of higher-level code is just data marshaling and destructuring and async coordination. That requires so much boilerplate in plain JS, at this point you'd have to pry Iced from my cold dead hands. |
@doublerebel Thanks for some links to some great resources! I’m curious, does iced3 output ESNext for any features besides async/await? Contracts.coffee seems really cool. There’s a lot of interest still in somehow adding types to CoffeeScript, perhaps if that effort takes off Contracts.coffee could serve as a model. |
@doublerebel I should also mention that we’re hoping to add support for async/await soon via jashkenas/coffeescript#3757. Is there anything that iced3 offers that that PR wouldn’t supply? |
CS project summary. SageMathCloud: 6 developers, tons of code, 4 years, 10K+ weekly active users (many paying customers). We use CoffeeScript very extensively, both on the frontend (including react and cjsx) and backend (in node.js). Is the project considering a switch from Coffeescript to ES6/other? No. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? Clean and beautiful language that avoids some gotchas of Javascript. Can be written in a way that looks more similar to Python. Very stable (regarding language modifications/churn). |
Though my CS use is limited, I wanted to offer some positive reinforcement. CS project summary. Is the project considering a switch from Coffeescript to ES6/other? It is clearly harder to attract developers who are unfamiliar with CS. If I had a Real Job, I might worry about whether I was doing myself any favors by avoiding JS and signing up to hack in CS. That question of CS sustainability is probably my biggest worry, but honestly, the pain of living with straight JS for however long it takes CS to become a liability dwarfs those concerns. I don't have any old JS code, though, so I don't have a good sense for how much longevity my own code has. I haven't found the JS ecosystem to be remotely stable enough to worry too greatly about reuse. About 80% of my CS code is Iced and I've had some fears about the longevity of that project, but @doublerebel has helped put them to rest here. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? Thank you for CS! |
I heard the company I worked for migrated to TypeScript. Maybe @suyu34 @Brooooooklyn can give more details. CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from CoffeeScript, please explain your reasons. |
CS project summary. Is the project considering a switch from CoffeeScript to ES6/other? If considering switch from CoffeeScript, please explain your reasons. If not considering switch from CoffeeScript (or are, but would ideally like to remain with CS), why are you happy with CS? General Thoughts There are a few features in CS that are godsends that we basically know will never get ported into ES. Specifically the
|
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. Our code is still growing and is starting to become unmanageable in some ways, so refactors have been needed, but these have been extremely dangerous with Coffeescript due do the lack of static typing and a set of tools than can quickly identify code that isn't using a new interface or variable type. It is very easy to introduce a new bug and therefore is very difficult to justify changing something that works, regardless of how many times it was extended or how unreadable it has become. While CoffeeScript was the most advanced option at the time we started our projects, it has fallen greatly behind in terms of capability. I fear the community is dissipating to the point where we're going to have a hard finding new developers in the future and our current developers (including myself) will lose motivation from missing out on the time-saving features newer languages offer. The Coffeescript6 effort is too little, too late and so far has no new feature offers - just ES6 compatibility fixes. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? |
i just can't wait for coffee script 2, is that a valid option!? : D |
Our team recently just converted from CoffeeScript to ES6, and I wanted to provide some of our reasons for switching. Here's our blog post that goes into more depth: Decaffeinating a Large CoffeeScript Codebase Without Losing Sleep. CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons.
If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS?
|
Following up on @honzajavorek's comment in this thread - we switched from CoffeeScript to JavaScript (ES2015+) (using decaffeinate) in both Dredd & Apiary recently. Most reasons why we did were already mentioned in other comments above, but to reiterate - ECMAScript standard (and JavaScript) is now mature enough, tooling, no need for transpilation anymore (depends on which browsers / engines you support of course), recruiting / onboarding new people is easier with JS than with CS. |
CS project summary. Backend, frontend and desktop apps, unfortunately, i'm not comfortable to disclosure the projects ( i know you think I'm lying!! ) Recently all projects are being developed and worked using CoffeeScript 2 and couldn't be happier. Is the project considering a switch from Coffeescript to ES6/other? If considering switch from Coffeescript, please explain your reasons. If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? New developers and developers without mixed background ( for instance developers who never worked with design, sound, databases, networks, Linux, standalone hardware, offline applications or even old archaic package manages / SCM ) tend to prioritise technology choices and facebook trends over what I believe to be the most important characteristics of a codebase: "readability", "simplicity" and "speed of change" and I believe coffee script is the perfect tool for that. I think coffee script / the community ( including myself ) should explore even deeper the ability to look like "plain English", sometimes the code gets so readable that it looks like Cucumber tests and I think that is some really powerful stuff that Javascript will hardly ever have with all that verbose syntax. I personally can't smell typescript and other modifications that make JS look like Java or C#, I have seen other languages "evolving" that way and I know it decreases massively the capacity of a team to develop creative ideas since only "real coders" will be able to touch the codebase. I believe if you want your code to work, you have to write tests for it, over-specifying code is like declaring death to creativity, comfort and freedom and that's not what you want when coding products with quality output as a major goal. Often times when I can read my code with designers and other non-programming people on the project it becomes really clear how powerful collaborating with mixed background people is and how big the difference is on the final product. Imagine explaining "interfaces" and other old-school "Object Oriented" patterns to such people, it simply doesn't work. Code must be simple, small, clean and have the least amount of boilerplate possible. Ok, enough of ranting now 😵 Technically speaking I believe we would benefit from "Extending" the language so we could for instance add and overload operators in order to do more complex stuff with more readable syntax. I have watched this talk by Jeremy and it's very inspiring but unfortunately i never took the time to play around, would be nice to learn/participate and try out more "unortodox" tweaks like those! A simple example: would be nice to extend operators so you could create a "contains" operator which would take left and right side of the expression as arguments: if array contains item
# __contains__ would take "my_array" as first argument and "item" as second
# We kinda do something similar with the "in" operator, but
would be nice to actually bake loads of "our own" operators, wouldn't?
if item in array
# ...
# but wouldn't be nice to do something like
if item is in array
#...
or if something is greater than something_else
# __is greater than__ would be translated to > This would open incredible amount of possibilities and even more minimalistic approaches, I have worked on projects where snippets of code had to be written and puzzled up together dynamically from the UI so users could make their own routines and being able to provide users with such simple customised DSL on top of coffeescript is a dream! ps: apologies for such long email, CoffeeScript just makes me overly excited, i think we should open a CoffeeScript church, maybe a CoffeeSript store and what not! Thank You!!! |
CS project summary. Is the project considering a switch from Coffeescript to ES6/other? If not considering switch from Coffeescript (or are, but would ideally like to remain with CS), why are you happy with CS? Other Notes |
@hems Thanks for all the kind words. I’ve been thinking for a while of trying to write a blog post that lays out the case for “Why CoffeeScript in an ES6 world,” which is basically an argument for why cleaner code is better, now that CoffeeScript and ES are roughly feature-comparable. I was thinking of trying to aim at persuading a skeptical audience. Maybe you should take a crack at it 😄 To your suggestion at the end, unfortunately we can’t add keywords without breaking backward compatibility, which is a big reason @johnjeng Support for CoffeeScript in Prettier is really only held up by available developer time to work on it. Our own maintainer @lydell is a mainter of Prettier, so he could certainly help shepherd it in on their side. If you or anyone on your team has time to devote to helping, we’d love the assistance. As for Flow, I wrote the comments support that hopefully makes Flow integration possible, but I don’t use Flow myself so I don’t have much of an idea as to how good or poor it is. I know it looks ugly, from the examples in the docs, but that’s always been a lower priority; it should be pretty trivial to write some kind of preprocessor for Flow-in-CoffeeScript files that lets you write the Flow annotations without the |
@GeoffreyBooth We haven't built a preprocessor and don't use Flow currently so I can't really say. It was just an option we strongly considered and decided that using |
Migrated to jashkenas/coffeescript#4928 |
Coffeescript has been around since 2009. Since then, a lot of Coffeescript code has been written, and non-trivial projects developed with it.
Given we're discussing the future of Coffeescript, it would be great to get the views of developers/teams who have non-trivial, maintained CS codebases, which they plan to maintain and extend over the coming years.
Specifically, it would be good to know whether you/the team are:
a) happy to keep using Coffeescript for the project
b) are considering migrating the project from Coffeesript to ES6/other.
Here's a little markdown 'survey' template below to use, or feel free to comment free-style.
The text was updated successfully, but these errors were encountered: