HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

Brian Goetz - Stewardship: the Sobering Parts

ClojureTV10 HN recommenders · recommended in 9 months, 2014-2025
YouTube
39K views · 11 years ago · talk · evergreen

Java Language Architect Brian Goetz talks at a Clojure conference about the challenges of evolving a mature language like Java while preserving compatibility with existing code and developer expectations. It also gives a look at where the platform is headed.

HN repeatedly recommends it as the definitive explanation of why Java evolves cautiously and why compatibility matters in language design.

Programming language designPython, Ruby & scripting languagesSoftware architecture & design#java#languagedesign#backwardcompatibility#briangoetz#jvm

18 comments from Hacker News

@kevindamm2025 · in “My first verified imperative program”

It was raised in one of the initial proposals, back in 2002 link but that looks like a dead link and no wayback archive.. IIRC, basically it's because some parts of the JVM use stack unwinding to figure out what userland code is calling certain system code.. also the current stack frame has metadata about lock status used for allowing re-entrant locks that you lose if you elide the entire recursive call (which the initial proposal did by only removing the few bytecode instructions that set up the callstack frame and return from it). A more informal proposal from ~2016 allows for soft tail calls and hard (annotated) tail calls, with some restrictions that evidently avoid issues with system calls and lock/reentry maintenance: link And a video by one of the JVM architects at Oracle about adding TCO for Scala ▶ this video Also previously featured here on HN, a way to do it that avoids security concerns, by using goto instead of strictly deleting bytecode instructions: link

CitesView on HN
@dstine2025 · in “JEP draft: Prepare to make final mean final”

In this 2014 talk, Brian shows a slide in which he characterizes a visible fraction of his job as “regretting serialization” (somewhat tongue-in-cheek). ▶ this video Link is to the start of a sequence of three slides, the third of which is the slide in question. For a more recent update on serialization, watch this talk “Serialization: A New Hope”: link

CitesView on HN
@dgb232023 · in “Dart 3.1 and a retrospective on functional style programming in Dart”

Thank you for sharing this one! Also there are interesting talks published on YT where he discusses data/functional programming, OOP etc. Multiparadigm (including plain old procedural) seems to be the most pragmatic approach to me, because I don’t need to bend over backwards to express something in a particular way. Aside: It’s really fascinating how Java and the JVM manage to evolve while retaining reliability. He talks about that here: ▶ this video

RecommendsView on HN
@wging2020 · in “Java Concurrency – Understanding the Basics of Threads”

Rich Hickey is supposed to have said that he created Clojure because he was tired of telling people to read that book. Best I can find as a source for now is ▶ this video -- I thought there was a link somewhere to Hickey himself saying this, but can't find it.

CitesView on HN
@carimura2020 · in “JDK 15”

And by telling I think you mean that over time Java has very thoughtfully evolved in a way that respects backwards compatibility, or that once a feature is in the language it'll very likely stay there for the next 25 years. Yes, innovation is very important (and happening faster than ever now with the 6-month release cadence), but a majority of the work isn't in deciding what goes in, it's deciding what stays out and if something does go in how does it satisfy both audiences of "move slow don't break" and "move faster we want features". A good video on this process: ▶ this video

RecommendsView on HN
@carimura2020 · in “JDK 15”

Things are innovating faster than ever, but, the trick is always to address the challenges of both today and tomorrow, while staying true to compatibility and stability. Check out Brian's talk on Stewardship: ▶ this video

RecommendsView on HN
@devin2020 · in “Checked exceptions: Java’s biggest mistake (2014)”

I recommend Brian Goetz’ talk about language stewardship. I don’t think what you’ve said here is true, and it kind of bums me out because some of these features took years to develop so they wouldn’t break people on ancient versions. That deserves much respect and appreciation. ▶ this video

RecommendsView on HN
@throwdbaaway2020 · in “Old Code Gets Younger Every Year”

For python 2/3, it was because the BDFL made a wrong call. But we are past that now, and we collectively learnt something from the debacle, including the BDFL himself: > As for "Machiavellian Python maintainers", that's real. There have been explicit attempts to apply pain to Python 2.7 users. This has decreased since von Rossum got stuck maintaining Python 2.7 code at Dropbox as his day job. ( link ) For java 8/9, it was because Brian Goetz still has a boss. We can just compare ▶ this video to link . Hopefully some lessons were learnt as well.

CitesView on HN
@_Codemonkeyism2018 · in “Entering the next phase of Project Valhalla”

Brian Goetz has been a role model on how to lead [0] a language for a long time now for me. Thanks for all the great work Brian. [0] "Brian Goetz - Stewardship: the Sobering Parts", ▶ this video

CitesView on HN
@wging2018 · in “Java 10 and beyond – a look at the potential language change”

As far as speed-of-evolution, it is worth understanding that the slower speed is at least partly a by-product of different goals. This talk, "Stewardship: The Sobering Parts" by Brian Goetz, is informative and well worth the watch: ▶ this video

RecommendsView on HN
@gw2017 · in “Chrome breaks the Web”

Against my better judgement I did a reverse image search and found the post that you found that screenshot from [1]. The post is full of people having exactly the sort of problems you would expect from an automatic software updater, along with instructions from Jeff on how to manually update using SSH and git. These things happen. The world is messy, and whether due to technical inadequacy or run-of-the-mill software updater bugs, web backends will not always be updated. As you've noted, this could eventually lead to security problems, and I agree -- but that doesn't justify intentionally breaking their code. To say that their breakage is justifiable because they'll be 0wned at some point anyway is an absurdly darwinian argument. To address your last question, the way you update a system like the web is exactly the way we always have -- accretion . With very few exceptions, websites from the early 90s still work today. We didn't remove the `table` tag when we introduced flex boxes. We add new APIs while preserving existing functionality. If you want to see a fantastic talk on this exact subject, watch "Stewardship: The Sobering Parts" by Brian Goetz [2]. It is well worth your time. [1] link [2] ▶ this video

Strongly recommendsView on HN
@filereaper2017 · in “Moving Java Forward Faster”

Brian Goetz the Java Language Architect addressed the very points you raised in a talk called "Stewardship: the Sobering Parts" [1] I highly recommend anyone with these very valid concerns to view it once. [1] ▶ this video

Strongly recommendsView on HN
@filereaper2016 · in “Oracle and the fall of Java EE”

On the topic of stewardship, I highly recommend this talk by Brian Goetz titled "Stewardship: the Sobering Parts" [1] Brian goes about how important compatibility is for the language, the concept not throwing customers code under the bus by bringing breaking incompatibilities. (ie Python 2 --> 3) Java has its warts and isn't "cool" but I respect their design decisions. [1] ▶ this video

Strongly recommendsView on HN
@dloose2016 · in “JEP 286: Local-Variable Type Inference”

See Brian Goetz's talk on language stewardship ( ▶ this video ). I'm sure nobody wants to add new and interesting features to Java more than the people who work on the language every damn day, but they've made a strong commitment to the community to not break existing code.

RecommendsView on HN
@elangoc2015 · in “Contributing to Clojure”

To add on to that... Even though, I haven't been involved in the contributing process for Clojure, but I thought it was interesting that Brian Goetz's keynote at the Conj 6 months ago was about stewardship, in particular, stewardship of the Java language: ▶ this video It gave me a better appreciation for the differing concerns of someone using a language or contributing a patch vs. someone designing & maintaining a language. In my day-to-day, I use languages other than Clojure, and I sorely miss the cohesive and good design. Brian Goetz's talk nails it on the head why the languages in my day-to-day are sub-optimal, even if they're currently the "new hotness"... at least for now...

Strongly recommendsView on HN
@nickik2014 · in “Introducing .NET Core”

Watch this awesome keynote by Brian Goetz, he talks about valie types and generics. Brian Goetz - Stewardship: the Sobering Parts ▶ this video

Strongly recommendsView on HN
@pjmlp2014 · in “Java Doesn’t Suck”

> No tail calls support Due to the way JVM does bytecode verification. It will be fixed in future versions ▶ this video > no (optional and confined) unsafe pointer arithmetics www.docjar.com/docs/api/sun/misc/Unsafe.htm Will be replaced by an official API in Java 9. > no value types link > pathetic limit on a method size makes it an extremely shitty target for any language other than Java. Java Virtual Machine

CitesView on HN
@serve_yay2014 · in “Java Doesn’t Suck”

It is only tangentially related, but I recommend this video from Brian Geotz, a Java language architect. He breaks down the challenges of adding features to the language, in a room full of Clojure devs no less. Worth a watch: ▶ this video

RecommendsView on HN
Effective Programs - 10 Years of Clojure - Rich Hickey1:14:52

Effective Programs - 10 Years of Clojure - Rich Hickey

ClojureTV
176K views • 9 years ago
Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure53:56

Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure

jasonofthel33t
119K views • 13 years ago
Invited Talk - Guy Steele1:07:22

Invited Talk - Guy Steele

ClojureTV
39K views • 9 years ago
Keynote: The Last Hope for Scala's Infinity War - John A. De Goes45:03

Keynote: The Last Hope for Scala's Infinity War - John A. De Goes

Scalapeño
36K views • 8 years ago
Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '1759:03

Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17

Dyalog User Meetings
7K views • 9 years ago
Stuart Sierra - Components Just Enough Structure41:19

Stuart Sierra - Components Just Enough Structure

ClojureTV
36K views • 12 years ago
OSCON 2010:  Rob Pike, "Public Static Void"12:31

OSCON 2010: Rob Pike, "Public Static Void"

O'Reilly
119K views • 16 years ago
GopherCon 2014 Inside the Gophers Studio with Blake Mizerany48:19

GopherCon 2014 Inside the Gophers Studio with Blake Mizerany

Confreaks
8K views • 12 years ago
The Next Five Years of ClojureScript - David Nolen1:00:58

The Next Five Years of ClojureScript - David Nolen

Metosin
19K views • 10 years ago
Spec-ulation Keynote - Rich Hickey1:16:14

Spec-ulation Keynote - Rich Hickey

ClojureTV
135K views • 9 years ago
GopherCon 2014 Opening Keynote by Rob Pike56:36

GopherCon 2014 Opening Keynote by Rob Pike

Confreaks
38K views • 12 years ago
Condition Systems in an Exceptional Language - Chris Houser33:32

Condition Systems in an Exceptional Language - Chris Houser

ClojureTV
16K views • 10 years ago
Clojure for Lisp Programmers Part 1 - Rich Hickey1:28:59

Clojure for Lisp Programmers Part 1 - Rich Hickey

ClojureTV
25K views • 13 years ago
The Language of the System - Rich Hickey1:02:50

The Language of the System - Rich Hickey

ClojureTV
174K views • 13 years ago
Object-Oriented Programming is Bad44:35

Object-Oriented Programming is Bad

Brian Will
2.6M views • 10 years ago
On the Expressive Power of Programming Languages by Shriram Krishnamurthi [PWLConf 2019]59:04

On the Expressive Power of Programming Languages by Shriram Krishnamurthi [PWLConf 2019]

PapersWeLove
27K views • 7 years ago
Google I/O 2012 - Meet the Go Team1:00:29

Google I/O 2012 - Meet the Go Team

Google for Developers
108K views • 14 years ago
Ideas about a new programming language for games.1:55:24

Ideas about a new programming language for games.

Jonathan Blow
530K views • 12 years ago
Bottom Up vs  Top Down Design in Clojure - Mark Bastian36:42

Bottom Up vs Top Down Design in Clojure - Mark Bastian

ClojureTV
29K views • 10 years ago
"Type-Driven Program Synthesis" by Nadia Polikarpova39:40

"Type-Driven Program Synthesis" by Nadia Polikarpova

Strange Loop Conference
15K views • 8 years ago