7 ms·
Rome: An experimental JavaScript toolchain
- eclipsetheworld 7y agoPrevious discussion: https://news.ycombinator.com/item?id=22430682 https://news.ycombinator.com/item?id=22430682
- dang 7y agoSame jokes too.
- dlbucci 7y agoThis is a really exciting idea to me, but this website is pretty anemic (guessing it's a work in progress?). Kinda surprising to me, given the 7K stars on github. Maybe it should be submitted when it's a little more filled in?
- lhorie 7y agoAFAIK, the high number of stars are because of who the author is. Personally, considering how ambitious the project is, I was hoping they would go just a bit more ambitious and cover type checking as well (rather than just transpile out the syntax), otherwise we still need to install Typescript/flow and run their parsers independently from rome.
- bikeshaving 7y agoAs a person who’s getting ready to drop a project: what about the docs site is “anemic”? It’s using docusaurus which is pretty snazzy as far as docs sites go. Do you mean the amount of content on the site?
- dlbucci 7y agoContent. It had like a single page, which didn't give me too much information...
- a_humean 7y agoIts because of who the primary author of the project is, and so it immediately has a fair bit of credibility.
- georgestephanis 7y agoI mean, clarifying that it's in-progress is important. After all, Rome wasn't built in a day.
- gear54rus 7y agoCue the jokes. And when you do something with your project they didn't anticipate their response would be: 'When in Rome...'.
- felipellrocha 7y agoclap clap clap
- capableweb 7y agoFor more information about the name, the README elaborates: > Rome gets its name from proverbs such as "All Roads Lead to Rome", "Rome wasn't built in a day" and "When in Rome, do as the Romans do". This refers to the expansive scope and the desire for conformity across the project. It started as a joke at the office. https://github.com/facebookexperimental/rome#history https://github.com/facebookexperimental/rome#history
- throwaway894345 7y agoMaybe this is intuitive to JS devs, but what are the advantages of "zero third-party dependencies" and "being a comprehensive tool for the processing of anything JS related" or any of the other selling points of Rome? It seems like an impressive project, but it's not obvious to me what its actual benefits are.
- baddox 7y agoI think the implicit benefit to doing it this way is that it will just work because there are likely few options and all combinations of those options will likely be tested and supported by the developers.
- gear54rus 7y agoIt's not intuitive to me as a JS dev too... Are you guys gonna re-implement typescript for example? Where does 'no deps' line get drawn?
- kkio 7y agoEchoing this sentiment. I think there's value in consolidating parts of the JS toolchain as there's a lot of variability there with how you can adjust your build system and pick your flavor of the week linter/formatter/bundler/etc. I'm not sure how 'no deps' is a a feature though, aside from (potentially) less packages to download during development.
- kevmo314 7y agoSame, I don't mind having an alternative to webpack, but competing against prettier is going to be an uphill battle.
- ratww 7y agoI don't know. The whole point of using Prettier is that you're delegating your style choices to someone else. And there were already some (very small) breaking changes between Prettier v1 and v2. Changing from Prettier to something else doesn't sound like that big of a change, as long as Rome's formatter is not too ugly or changes are too drastic.
- speedgoose 7y agoWho is going to maintain all of this in a few months or years when Facebook has moved on?
- dschnurr 7y agoIf they end up using Rome internally that should be a good sign that it will be supported for years to come. React has been very well maintained for the past 5+ years.
- speedgoose 7y agoI don't know. I don't think they stopped testing, but their open-source javascript testing framework jest has been unmaintained for a little while.
- petetnt 7y agoJest had a new release 5 days ago, so "a little while" is quite literally a very short while.
- speedgoose 7y agoMy bad. It feels unmaintained though.
- minhazm 7y agoIsn't this true of all open source projects?
- speedgoose 7y agoWhen it's many smaller projects, the workload can be shared and it's easier to replace a dead component.
- capableweb 7y agoIt says "No Third Party Dependencies" but 95% of the code is written in TypeScript, so it isn't even JavaScript and the entire thing is built on top of one big dependency. Would not be a problem if it didn't sell itself as "zero third party dependencies" while being built on top of one that is not even JavaScript... Might as well built the tool in any other language that would have been better for the task.
- W4ldi 7y agotypescript is just a language, how is that a dependency? by that logic, nothing is dependency free.
- joosters 7y agoBut the end users can't run the typescript, whereas they can run javascript directly. So, an external tool is required by the developer. A similar comparison would be shipping a program to end users, saying that 'no dependencies required', but instead of giving them a binary to run, you hand them a c++ file. I think everyone would agree that a C++ compiler is clearly a required dependency in that case.
- projektfu 7y agoWould you say the same about a single-header library for C++?
- prophetjohn 7y ago> an external tool is required by the developer Yes, that tool is Rome. They are re-implementing the TypeScript compiler, just like everything else
- jfkebwjsbx 7y agoNobody says a C file has a "dependency" because you have to compile it.
- 7y ago
- leetrout 7y agoI don't know if want this or if I really just want create-react-app for things that aren't react. A lot of tools do things Good Enough (which everyone disagrees on and will always fragment the ecosystem). But I do loathe setting up all the plumbing from scratch.
- lxe 7y ago> Rome has a logo of an ancient Greek spartan helmet. It's not very relevant since it's not Roman, but it looks cooler than a Galea. It's OK. JavaScript has very little to do with Java, so it fits.
- mhd 7y agoNever mind that they're wrong, this isn't even a proper spartan helmet.
- chrisseaton 7y agoWhat does it compile JavaScript to? WebAssembly or machine code or something else?
- qeternity 7y agoProbably ES6 to ES5
- chrisseaton 7y agoOh right a transpiler.
- snazz 7y agoIt's perfectly valid to call that a compiler.
- chrisseaton 7y agoYeah I know it’s just extra useful context to add that it’s a transpiler. Otherwise you’re left confused about what it’s compiling to.
- ggregoire 7y agoTypeScript and JSX to JavaScript.
- The_rationalist 7y agoZero third party dependencies or how to market the [NIH /reinventing the wheel syndrome] (https://en.m.wikipedia.org/wiki/Not_invented_here https://en.m.wikipedia.org/wiki/Not_invented_here)
- aarpmcgee 7y agoRome seems fine but I find this approach to be a bit more interesting https://github.com/swc-project/swc https://github.com/swc-project/swc — though Rome seems potentially broader in scope.
- _bxg1 7y agoThe premise is attractive, but the challenge will be keeping up with a rapidly-changing ecosystem. The advantage of letting Webpack and Babel be separate, having both as singular community focal-points for their respective tasks, and having both be extensible via plugins (the TypeScript team can work independently from the Babel team, for example), is that the leg-work of adding new JS features, parsing new syntaxes, keeping up with the spec, etc. can be distributed in the most efficient way possible. A single team trying to do everything in-house, duplicating the work of all of the above communities, will have a very hard time keeping up. But I wish them luck.
- Raed667 7y agoI have been following the progress of this project on Twitter for months. However I'm very skeptical to see this project used in a production app. Re-implementing the entire JS toolchain for a modern SPA is a HUGE task, just checkout CRA dependencies : https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/package.json https://github.com/facebook/create-react-app/blob/master/pac...
- miohtama 7y agoI feel it is driven by Facebook security. Third party NPMs or "poisoning the watering hole" attack is feasible against big tech giants. Some cryptocurrency projects have already been hit by this.
- godot 7y agoIt looks like Rome is a Facebook Open Source project, so there's reasons to believe a huge amount of resources is being put into it (probably the only way something like this is feasible). (This is not a statement either pro or against FB, just a neutral one :)
- nwienert 7y agoIt was mostly built by one guy at least until very recently and not during company time from what I hear for the most part. Perhaps it was, but either way it doesn’t have huge firepower as of yet. Then again, even React itself only has a small core team, same with lots of Facebook projects. I think they should hire more aggressively and become more of a tech-driven company (they should be fighting for the web platform too a lot stronger).
- ipsum2 7y ago> so there's reasons to believe a huge amount of resources is being put into it The commit log shows that everything is committed by one person: https://github.com/facebookexperimental/rome/commits/master https://github.com/facebookexperimental/rome/commits/master
- sdegutis 7y ago
- earthboundkid 7y agoDoes it work with Deno? I'd love to burn down the existing JS world and move to a better one.
- rvz 7y agoWhat a very 'interesting' name for a project that is an integrated and consistent Javascript toolchain that aims to replace existing third party libraries and tools. It may be too early to see if this is a good idea or not but who knows, at least no one can say that this was built in a day.
- RcouF1uZ4gsC 7y agoFrom the Getting Started Guide: > Then, navigate into it and build rome: > cd rome; ./scripts/build-release dist Be aware that this command might take a long time to complete. After all, Rome wasn't built in a day.
- pdxandi 7y agoI know they said in the GitHub readme, but I still chuckled. Good chance I'm just losing my mind.
- tln 7y agoLOL! It actually only takes a couple of minutes, with ANSI fancy progress bars and everything
- ggambetta 7y agoThere's a non-zero probability that the only reason they chose to call this Rome is so they could make this joke :) I mean, there's precedent... remember Nero Burning ROM?
- sam_goody 7y agoIs this meant to replace Webpack + some list of plugins, does this get added to Webpack, or is this meant to go somewhere else entirely in the JS toolchain? If this replaces Webpack, can someone please list a combination of popular plugins that this compares to. (Or even a few lists - would it replace Grunt + something?) If not, can you tell me what other software this compares to, so that I can better understand it? I am sure that I am not the only one who has some familiarity, but doesn't live in the system. Having a point of comparison would be extremely helpful.
- coolwhit 7y agoThe scope is even broader! Webpack is just a bundler. Rome is a bundler, linter, test runner, typescript compiler, and formatter. The proper comparison would be Webpack + ESLint + Jest + TSC + Prettier.
- sam_goody 7y agoThank you! So, this is a bundler with built in plugins? Is there is a way to add Babel etc, that I would have used with Webpack? Does it handle CSS? And why would I prefer this over that chain (simpler to set up? Trust in Facebook over the people at js.foundation?)
- snazz 7y agoThe standard stack is unnecessarily complex and very difficult to security-audit. By not having any third-party dependencies, you don't need to trust thousands of individual developers to not have their NPM accounts compromised or to push something with a subtle security bug.
- coolwhit 7y agoThe selling point is that you don't need plugins at all. Rome is the entire toolchain in one tool. For example, you don't need to add Babel because Rome handles transpilation. The question is - will Rome perform as well as all the tools it intends to replace. Can it be a better Babel than Babel is? (There's a good chance it could since the creator of Rome is the creator of Babel)
- mhd 7y agoThe primary dependency I'd like to get rid of when developing JS would be the big corporations. Between my compiler, my linter and my frontend tool, there's quite an empire of evil.
- jvanveen 7y agoAn alternative lightweight and fast JavaScript buildchain using Snowpack: https://github.com/garage11/vuepack-demo https://github.com/garage11/vuepack-demo
- sproketboy 7y agoCan't we just use SVG instead of all this JavaScript crap?