Hacker News new | past | comments | ask | show | jobs | submit login
Nuclide: An open-source IDE for React Native (nuclide.io)
275 points by bleonard on Mar 27, 2015 | hide | past | web | favorite | 93 comments

So where's the download? Where's the source? I don't want to have to join a Facebook group for updates.

There was a brief moment where I thought that I could at least trust Faceboook's open source offering and I was excited about React. Then I read about the sneaky PATENTS license in the other thread here - https://news.ycombinator.com/item?id=9271246

So now I'm going back to ignoring anything that Facebook puts out there.

pretty much this. got excited and then I need a FB account...

Facebook to the right, Stallman to the left. When I write code, I use tools written by Stallman. When I communicate with friends and family, I use Facebook. There is no contradiction here: they are both useful, and useful is the yardstick by which reality judges memes.

He is not talking about anything remotely related to what you are talking about. He just wants to avoid having to register to yet another site.

I find this a bit ironic that Nuclide is an IDE designed to support React and React-Native, built on top of Atom - Atom itself just ripped out their React implementation in favor of direct DOM manipulation. Don't get me wrong, I'm a huge React proponent and likely will give this a whirl - but it is ironic, no?

They never really needed React in the first place, because React doesn't solve THEIR problem. Their problem is so specific to text editors: how do you get hundreds of lines of hundreds of rich-text characters to render as fast as possible?

In terms of game engines: React is comparable to the occlusion culling capabilities of a 3D game engine (render less), where Atom was in search of the fastest way for the graphics engine to push triangles to the GPU (render fast). Ultimately I believe a mix of both is the best.

Having implemented a code editor, I can assure you that not re-rendering lines and blocks of code is also a worthy effort. It probably just doesn't fit into react's incremental computation model yet?

Yeah, that's the reason why they tried React I guess. But as far as I can tell they kept the should-update-or-not procedures they implemented specifically FOR React. So what they removed wasn't the concept of React, just the library as their DOM rendering implementation.

Use the right tool for the right job. By your logic, you should never write an assembler in anything but assembly language.

I don't think it is quite like that. Assembler was needed to bootstrap the effort.

> Use the right tool for the right job.

In that case a webgui is certainly not the right tool for the job.

I would argue that React set them on the path to doing DOM manipulation right. After all, when they started using React as a replacement for (less optimal) manual DOM manipulation, it brought performance improvements, and when they replaced React with (more optimal) manual DOM manipulation they achieved further performance improvements.

I think Atom still uses React-- they just decided to build one super performance-sensitive part, EditorComponent, without it (https://github.com/atom/atom/pull/5624).

Can't have turtles all the way down. Or can they ?

call it cross-pollination.

What about the right tool for the job ? Why not use qt instead of web techs for a Gui ? I love Atom , but Atom is Slow, you can't open big files with it and frankly has all sorts of limitations due to web techs.

When will devs stop this madness? even if you are addicted to javascript, use an native GUI, qt supports javascript, or you are doing a disservice to potential users.

I'm unsure how something that is unreleased can be "backed by an active community".

Because its built on Atom, which comes with an active community... I guess.

Internal dogfooding, maybe? Or hijacking Atom's community.

I don't understand the marketing here. What distinguishes a unified IDE from an IDE?


With Nuclide, you can build for iOS, Android, and the web. Most IDEs only support one of these platforms well.

Although I am disappointed by the current speed of Atom, I have no doubt it will improve. I think it is the most exciting OSS IDE out there. We hope to slowly converge on JS+Flow as the main front-end language at Facebook, and it will be a huge win to build tooling in the same language as the product.

The JetBrains suite of IDEs, all built on the same platform, support these and much more (Java, Python, Ruby, Scala, ...). With the exception of AppCode (for iOS) you can also get them all in the main release IDEA with relevant plugins.

JetBrains is nice, but we try to avoid proprietary tools when we can.

Yeah, the not invented here syndrome.

Exactly right. It was not invented here, it began at Github

I guess all modern IDEs can be considered unified at this point, but the idea is that all the tools and integrations are part of it - including the build process, typechecker, etc.

Before you would have to run all these in the background + have your IDE open (ie. Sublime Text).

Of course Sublime Text has plugins itself now too, but you get the idea.

I don't get the idea. And Im not sure when Sublime Text became considered an IDE, if anything it is anti-IDE. An IDE classically has tools and integrations, well, integrated. E.g. Visual Studio or Eclipse.

Sublime Text has a really robust plugin architecture, similar to Visual Studio's extension capabilities. Whenever I'm working on a project, I basically install whatever plugins I need into Sublime Text to give me full "IDE-like" capability specific to that stack. Be it debuggers, integrated compilers, REPLs, version control systems, etc.

I like Sublime Text because at it's default, it's just a text editor, and then _I_ turn it into the IDE that fits my flow and current technology requirements. It becomes an IDE completely customized for my project.

Sublime is not an IDE. It's a text editor. There is a difference.

It's similar to developing emacs-lisp packages with emacs. It's a dream.

From what I gathered of the talk, they mean unifying the build, debugging, and analytics tools. So no more need to have Terminal, Xcode, and Chrome Dev tools open

That's what the I in IDE means: Integrated!

an IDE which covers multiple languages

How many IDEs only support one language though?

(Also thanks for your work on PHP STH)

Why is this on top of HN with no downloads.

Because even if it turns out to be vaporware it demonstrates the community's desire to see tooling developed for React Native.

I'm so excited for this: an IDE with first-class support for Hack? Yes please! My only reservation is the last time I used Atom, it was pretty slow, what's it like nowadays?

Similar experience - Atom on my home Macbook Pro is quick and snappy and an overall nice experience to use, but on a similarly powered Windows 7 work laptop it is noticeably slower to the point of being unusable. Last time I tried it on the Win7 box was about two months ago.

I use it every day. Mostly good, but clearly slower than ST3. My main gripe is that it is painfully slow at editing with multiple cursors. Multi-cursor edits that ST3 wouldn't hiccup at freeze up atom long enough that OSX asks if I want to kill it.

Slow compared to ST, but usable, and some buggy behavior at times, but mostly usable (I use it for JS and Rails dev across numerous projects)

Slow and buggy text editing!

text editing is mostly ok for me: biggest bug is the full screen bug on OSX (it'll create a modal on the wrong full screen, but when you switch, the modal disappears, but still blocks the UI - only solution is hard kill, meaning you lose progress if the modal was a Save dialog)

> atom

nope, been there done that.

It's cumbersome and laggy, which is a major pitfall for me, I like the responsiveness of sublime text.

I agree, I wish Sublime was an open-source editor so that custom editors can be built on top of it.

You might be interested in LimeText http://limetext.org/

I'll give this a shot, perhaps make a blog post about my perceptions on all three

Where's the download?

Not released yet; will be out later this year.

Later this year? WOW. The long nose of hype building :(

You'd prefer next year?

We will all be coding in Rust on Rails by then.

never heard this one before, thanks for the laugh.

I just tried to think of a ridiculous combination of techs to combine. I didn't realize the hilarious double meaning of it until after I got some upvotes. Sounds like a great April fools project to share.

Seems like you have to join their Facebook Group (https://www.facebook.com/groups/nuclide/) for early access.

Not too many joined to that yet .... Since "join for updates" ... not "join for access" ... Led me to avoid joining personally but meh.

It hasnt even been released yet, build dat hype,yah?

React + Atom have unfortunately similar logos.

The Atom logo looks like React got Java pregnant.

and the same domain LTD's, not that it's a huge deal I would of gone with "nucli.de" instead though if possible

fb employees, do you really use this IDE?

Not a Facebook engineer. However, I was at F8. I spoke with a couple of engineers, and when they were showing me something on their laptops, they were using Atom.

From what was said at the presentation, this IDE is just a collection of plugins, so I'm guessing you can pick and choose the ones you like.

I imagine engineers at facebook get to use whatever editor or ide they like. There's probably at least a few using it.

I've been using Atom + Flow + autocomplete-plus + ide-flow + jsx plugin + linters and eventually it really works for Javascript development. From Facebook Group[1] Nuclide "built as a suite of packages on top of GitHub's Atom editor.", would be great if installing Nuclide would be as easy as `apm install nuclide`.

[1] https://www.facebook.com/groups/nuclide/permalink/8347920765...

Is this by Facebook? The site implies it is, but it's not clear.

Yes, it says "Facebook Open Source" at the bottom of the site.

True, but that page lists Facebook's projects, but not Nuclide. Nuclide is also not on the Facebook Github.

I think it's because they didn't launch it yet, probably it's a private repo.

Yes, note the "Facebook Open Source" link at the bottom of the page.

How is this open-source? Right now this is appears to be no-source.

If the code exists and is derived from Atom, it's MIT licensed. Being pedantic, they don't need to release it in the open for it to be open source - everyone who has access to the code may choose to release it, but it's not mandatory.

MIT is not copyleft so not even pedantry will save it. I.e. under MIT they can ship a binary blob and they only need to include the MIT license and a notice.

copyleft != open source. They don't even need to publish a binary blob, they can use the code internally. Yet the original project is still considered FLOSS.

I don't think that is a definition of open-source that is widely recognized or useful. If Microsoft uses MIT license software in the next version of Windows, is Windows considered open source? No.

I hope one of Facebook contributions will be a React native implementation of Atom.

I see all these tools are being built on top of Ace but Ace itself doesn't get much love. There are many issues in Ace that needs to be fixed but almost no company is putting resources on it.

Sorry, where does it say it's built on Ace? The copy says Atom is the code editing component.

Atom is built on Ace

I don't think Atom is built on Ace. They had their own system which was powered by React before switching to hand crafted DOM manipulation. Also, Atom's written in Coffeescript and Ace is ordinary JS.

If you look at editor API it's very similar to Ace.


I think they started with Ace but then drifted the code a lot.

What are these issues? I use Ace daily (in Advanced Explorer) and have no issue. It has a syntax checker for JavaScript that is invaluable.

I'm interested in how they suggest using Buck here, I was under the impression it was just for Java projects.

This is all nice and all, but most applications use multiple paradigms, so why focus on just one of them?

That's a lot of `padding-top`. Almost looks like the vertical height is misaligned.

Now that is a sexy landing page

All talk, no download available? Talk about PR wHoREs!

That was fast.

such a dramatic page; thought they solved fusion not made yet another ide

for all the people waiting for an IDE with proper Hack support I'd say this is fairly dramatic

You're typing text into a box. Please concentrate on typing the correct text into the box rather than caring which (basically identical) method of typing said text into said box you are using.

People have been typing text into boxes for about 50 years now.

I don't know about you, but tooling has always been and will alway be an important aspect in development. Better tools can yield better products.

And no, this isn't just typing text into a box.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact