Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I am particularly curious why they chose to start from scratch instead of cooperating with Dropbox on mypy.


Good question [I am the 'Pieter' on that blog post]. There will be a talk at PyCon that covers parts of this. It comes down to two reasons:

1) Performance. We needed something that would consistently work quickly on Instagram's server codebase (currently at several million lines).

2) We are building deeper semantic static analysis tools on top of Pyre. We've built some of these tools for Hack/PHP already, so following the Hack type checker's architecture is the best way for us to achieve this.


> 1) Performance. We needed something that would consistently work quickly on Instagram's server codebase (currently at several million lines).

That's not really an answer to why you didn't work on mypy, at least to an outsider to the decision making process. Are you saying that you discovered it's just not possible to scale mypy (or at least not without extensive work / more work than building your own solution?)

I can appreciate the choice in context of 2) :)


I think (2) is the overriding concern: we're getting really great results with the static analysis tools we've built internally on top of the Hack type checker. Building a similar tool on top of mypy would've required fairly invasive changes; we decided to use the Hack type checker infra instead.

Full disclosure: I worked on the Hack type checker briefly, a long time ago :)


They didn't start entirely from scratch, they've been doing this with PHP already:

> Internally, Pyre's high-level architecture is similar to that of Hack, Facebook's type checker for PHP.

If they had a performant codebase to start with, this makes a lot of sense.


The same reason everyone has a deep learning platform. It’s about developer mindshare and industry dominance rather than honestly thinking they’ll make a better framework starting from scratch rather than improving someone else’s.


Also the same reason everyone has a VM, programming language, back end framework or front end framework.

Apple: LLVM (I know I’m stretching the definition here :) ); Objective-C, Swift; N/A; Cocoa.

Microsoft: .NET CLR; Visual Basic, C#, F#; ASP.NET; N/A.

Facebook: HHVM; Hack; N/A; React.

Google: Go, Dart; Golang, Dartlang; GWT, Guava; Angular; Android, Flutter.

Oracle: JVM; Java; APEX; N/A.

It seems that for some reason just Amazon doesn’t want to play :)


Apple actually sort of does have a backend framework: WebObjects. They just seem to have deprecated it in favor of other solutions. Still, I've noticed at least iTunes Connect is still using it. And for what it's worth, Swift is going to have more server related stuff coming to the standard library (https://swift.org/server-apis/), and I wouldn't be surprised if Apple starts adopting this eventually as well as it continues to improve.


I'd add ReasonML to the Facebook list - one of the most promising general purpose languages out there, IMO.


You could add Folly as Facebook's backend C++ framework (it's somewhat analogous to Google's Guava for Java).


Missing some front end frameworks:

Microsoft: WPF, Blazor Oracle: JavaFX


Typical Facebook NIH: it's not fast enough because it's written in O'Caml

Edit: oh and copyright




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

Search: