Google Closure Library has been archived
github.com
github.com
When we eventually remove the direct GCL dependency it will sadly be more for optics than anything else.
Google is heavily invested in TypeScript and JavaScript. Closure Compiler is far from half dead but the need to support current language features is mitigated by translating front ends (like TypeScript).
It will support these features eventually. Public field support is mostly there, just not on by default.
I've had great success at a previous startup referencing a prebuilt Closure Library from a modern ES6+ codebase and creating a React-friendly wrapper around the editor component, and using this to power an email templating experience. Ironically, I'm within weeks of needing to do it again, thanks to Zawinski's Law https://en.wikipedia.org/wiki/Jamie_Zawinski#Zawinski's_Law - "Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can." I'll give you one guess what I'll be reaching for, archived or not.
Others have more context on the history and have written more detailed obituaries - but it's a true testament to the engineers that worked on it, that a library can be so ahead of its time that it's still an industry-leading experience 14 years after its initial release.
It's one of the oldest, most stable, and never rewritten parts of the Gmail codebase.
Sorry to be negative, but I guess the lack of maintenance explains why the undo/redo is so atrocious, both in speed and in correctness.
--
https://www.youtube.com/watch?v=90X5NJleYJQ (Strong Bad Email #58)
https://www.threads.net/@dpup/post/C2QsW5QsSPW/?xmt=AQGzV4jb...
Edit: looked at the closure compiler repo and maybe it’s good, though I always thought of it as partly depending on the library…
Edit 2: This explains the situation. Sounds like Closure Compiler has a bright future! I could see ClojureScript eventually taking over maintenance though. https://news.ycombinator.com/item?id=41396522
These days it feels a bit like boost is to modern C++. A monument to amazing engineering of the past, but something to keep in the archive.
> Closure Library is a powerful, low-level JavaScript library designed for building complex and scalable web applications. It is used by many Google web applications, such as Google Search, Gmail, Google Docs, Google+, Google Maps, and others.
I wonder if they still use it in all those services, or if they migrated to something else.
There may be some Closure widgets on very old, barely maintained, pages, but they'll be fine. Closure library is still in the Google monorepo, it's just not going to be copied to GitHub anymore.
Tsickle and the like seem to be archived as well, so it's unclear to me. Google must internally have some tooling to go from ts to closureJS?
[1]: https://techcrunch.com/2024/05/01/google-lays-off-staff-from...
Lucid Software migrated their code from closure compiler JS to typescript, and continue to use the closure compiler with advanced optimizations. See https://lucid.co/techblog/2017/11/16/converting-600k-lines-t....
It would not at all surprise me if google internally has better tooling than what they have open sourced though.
I imagine it's lacking a lot of typescripts newer features etc. seems hard to justify using it
It is so, so good!
You have to take care to write code in a certain way, but once you understand the constrants it's not a big deal. The advanced optimizations are better than anything else I've seen in the JS world, and it's not even close. It's just insanely good.
What an amazing project, well done!
But then again my introduction to JS was Douglas Crockford's JavaScript: The Good Parts and I write a lot of C++ so I'm always content with the idea of using only a subset of the language.
GCC, the Google Closure Compiler, is still used by Google internally and they are shifting towards supporting the compiler for tools that emit "ClosureJS" (remember goog.define and goog.provide?). ClojureScript is one of several tools that target "ClosureJS" and there is not much to fear.
ClojureScript has always distributed GCC and GCL as date-versioned JARs since there is no formal release process of either component outside of Google. The GCL code "just works" for the most part and is frozen in time. GCL became unnecessary for two reasons.
1. GCL existed at a time when JavaScript had no notion of a module system whatsoever (not even CommonJS). It was very tedious to import third-party code. So GCL was designed as a kitchensink that'd work across browsers.
2. Many parts of the GCL kitchensink became unnecessary as the JavaScript standard library gained equivalent functionality and browsers standardized.
For instance, goog.net.BrowserChannel predates WebSockets and has lots of hacks so it works reliably on various versions of Internet Explorer. There has realistically been no need to use goog.net.BrowserChannel over WebSocket for almost a decade now.Another example: goog.crypt methods (base64, encodeStringToByteArray, etc.) are now provided by the JavaScript standard library
Yet another example: all of the functionality in the goog.async package (besides Debouncer) is provided by the JavaScript standard library through Promise.
Then there's other things that existed purely for browser compatibility, like goog.net.XhrIo (an XHR wrapper that isn't needed unless you care about IE5 quirks). Almost everybody, even in ClojureScript, uses fetch nowadays.
There's more examples, but look around for yourself and you will see that almost everything in the library can be served by modern JavaScript and a few NPM packages. https://google.github.io/closure-library/api/
const goog = { define(name, value) { return value; } };
That was it. I used it to select between development and release versions of the project, because the release version had to fit in 13 KB (compressed).By 2007, Dojo Toolkit already had a working module system: https://web.archive.org/web/20071120165657/http://dojotoolki...
Windows, Teams etc.
Not to mention the teams in Teams.
Or Musk's rebranding of Twitter to X.
Seems after flattening the logos they flat names too.
Generic and hard to distinguish.
But yes, we've had flat names and flat icons for ages. It seems there's more supply of entrepreneurship than demand, so you can't call your thing what it does, because five other people already did that and you want your product to stand out. Hacker News is called Hacker News, but now that name's taken, so the next news for hackers will be called something like Newshack if you're lucky, or something like Marigold or Kallipo if you're not. (Actually, Slashdot was named before Hacker News). Recognizable companies may have an advantage, because they can call the product by their company name + what it does.
It's a code IDE, there's very little visual about it. It's a legacy name relating to Visual Basic, I believe it started as a code editor tightly integrated with a visual native UI editor.
Closure library and the advanced closure compiler to the rescue