# Stewardship: the Sobering Parts

**URL:** https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257
**Category:** Offtopic
**Created:** [January 4, 2019, 2:36am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257 "2019-01-04T02:36:55Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![jandehaan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jandehaan/32/6805_2.png) [@jandehaan](https://discourse.julialang.org/u/jandehaan)
#### Post date: [January 4, 2019, 2:36am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/1 "2019-01-04T02:36:55Z")

</div>

I watched Brian Goetz, Java Language Architect at Oracle, talk about [Stewardship: the Sobering Parts](https://www.youtube.com/watch?v=2y5Pv4yN0b0)  
You may have seen this already because it was published on Nov 22, 2014

But it helped me to temper my wild expections for new features in Julia.

It reminded me of the joke “Why was God able to create the world in just 7 days”. Answer: “He didn’t have to worry about legacy.”

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [January 4, 2019, 8:44am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/2 "2019-01-04T08:44:30Z")

</div>

> [@jandehaan](#):
>
> But it helped me to temper my wild expections for new features in Julia.

I did not watch the video, but my expectations remain untempered 😉

I think that five factors may make it easier keep Julia evolving:

1. language constructs like `@deprecate` for phasing out old features/semantics,
2. tooling like [FemtoCleaner.jl](https://github.com/JuliaComputing/FemtoCleaner.jl) that can make upgrading much less work,
3. packaging a lot of the standard library functionality out of `Base`,
4. a more or less implicit social contract that you get a great language, but it is very much alive and keeps moving, with the implied benefits and costs; and the benefits are always so great that you keep upgrading,
5. zero or low-cost abstractions allow writing programs which are much easier to update.

Also, when you think about it, quite a few drastic changes already trickled through the language without a major problem (arraypocalypse, taking various transposes seriously, iteration protocol redesign, various iterations of broadcasting, the rise and fall of `Nullable`, or just renaming the keyword for composite types to `struct`. Any of these would have quickly generated an angry crowd of programmers with pitchforks in some languages, but the Julia community was mostly welcoming these as each was an improvement.

---

<div class="post-metadata">

### Author: ![lobingera](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lobingera/32/211_2.png) [@lobingera](https://discourse.julialang.org/u/lobingera)
#### Post date: [January 4, 2019, 1:36pm UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/3 "2019-01-04T13:36:30Z")

</div>

> [@Tamas\_Papp](#):
>
> a few drastic changes already trickled through the language without a major problem

While this might look to you like this (in retrospective), keep in mind, that that was in a version 0.X language where breaking legacy was assumed to be happening. And having Compat update and FemtoCleaner running didn’t look like to be a non-effort solution.

---

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [January 4, 2019, 1:40pm UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/4 "2019-01-04T13:40:57Z")

</div>

> [@Tamas\_Papp](#):
>
> the rise and fall of `Nullable`

Love this phrase 😂

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [January 4, 2019, 1:44pm UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/5 "2019-01-04T13:44:27Z")

</div>

> [@lobingera](#):
>
> having Compat update and FemtoCleaner running didn’t look like to be a non-effort solution.

I mean on the part of the user (who, in this case, was a package developer). Of course I recognize and respect the work people have put into these tools, with the result of making everything so easy for their users.

---

<div class="post-metadata">

### Author: ![vvjn](https://avatars.discourse-cdn.com/v4/letter/v/5f9b8f/32.png) [@vvjn](https://discourse.julialang.org/u/vvjn)
#### Post date: [January 10, 2019, 5:00am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/6 "2019-01-10T05:00:11Z")

</div>

> [@Tamas\_Papp](#):
>
> Any of these would have quickly generated an angry crowd of programmers with pitchforks in some languages, but the Julia community was mostly welcoming these as each was an improvement.

The only reason for that is it was a pre 1.0 language. I still haven’t caught up to 1.0 from 0.6 yet for my code and I know more than a few people who had high hopes for the language but lost interest after all of the 0.4 to 0.6 changes. Nobody wants to constantly update their code. Lack of backwards compatibility is a terrible thing, especially in the scientific community where people’s main job is not coding.

---

<div class="post-metadata">

### Author: ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)
#### Post date: [January 10, 2019, 8:52am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/7 "2019-01-10T08:52:32Z")

</div>

So is lack of ability to evolve.

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [January 10, 2019, 9:39am UTC](https://discourse.julialang.org/t/stewardship-the-sobering-parts/19257/8 "2019-01-10T09:39:55Z")

</div>

> [@vvjn](#):
>
> Nobody wants to constantly update their code.

No one has to. Older versions of Julia are always available, and keeping a `Manifest.toml` should allow reproducing the _exact same_ environment.

Also, freezing the language core or imposing excessive backward compatibilty is does not mean that updating will not be necessary if one wants to keep up with recent development, as _libraries_ will typically move on. So the key part of the puzzle is not to avoid updating, but to make it easy.
