# Lost in transition: the current state of the Julia ecosystem?

**URL:** https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515
**Category:** General Usage
**Created:** [August 22, 2017, 8:24pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515 "2017-08-22T20:24:45Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 22, 2017, 8:24pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/1 "2017-08-22T20:24:45Z")

</div>

I really don’t know what to think about the current state and direction of the Julia ecosystem…

I’ve been holding back support for Julia v0.6 in `Genie` because some dependency packages were not yet v0.6 compatible. I was hoping that their maintainers would upgrade them soon. No luck.

But instead:

1. since the release of v0.6, every few days I’ve been checking for updates with `Pkg.update()`. At the same time I kept working on `Genie` on the v0.5 branch so I’ve been checking for package updates there too. To my surprise, at least for the packages that I’m using, I see more updates on the v0.5 branch than on the v0.6!

2. even low level, core packages that are developed by the JuliaComputing contributors (for example @Keno’s `Gallium` and `AbstractTrees`) aren’t updated yet. `AbstractTrees` is a dependency of a few packages that `Genie` is using and I made a PR with the v0.6 compatibility. Even more, I’ve seen the v0.6 support is already coded by @Keno but the package has not been tagged. What’s happening?

3. at the same time I see quite a lot of talk about v0.7. Really, are we there yet? Cause to me it looks like we’re still limping transitioning from v0.5.

* * *

Thus, I’m reaching out in the hope of finding some answers…

1. does anybody have more info than me regarding the status of packages like `AbstractTrees`? @Keno?

2. I’m ready to go ahead and fork _every single package_ that `Genie` needs and is not updated, and maintain my own versions. But is this the way to go? `AbstractTrees` is a dependency of `Gallium` - is it not going to get tagged? Why aren’t things properly communicated so we know what to expect?

3. I hope that the perspective is different depending on the packages you’re using. Does anybody have a rosy view of things? Cause from where I’m standing it looks like the ecosystem is _de facto_ still at v0.5. Anybody had a positive experience with the migration to v0.6? Any tips for the rest of us?

Thanks

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [August 22, 2017, 8:58pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/2 "2017-08-22T20:58:13Z")

</div>

What packages specifically? The only package that I know of that isn’t v0.6 compatible is Knet.jl (technically Autograd.jl?) because of the broadcast change affecting their autodifferentiation. The ecosystem is definitely not de facto v0.5: it’s clearly v0.6 with many packages even dropping support for v0.5. Is the only package you’re talking about here AbstractTrees.jl, or are there more?

> [@essenciary](#):
>
> I’m ready to go ahead and fork every single package that Genie needs and is not updated, and maintain my own versions. But is this the way to go? AbstractTrees is a dependency of Gallium - is it not going to get tagged? Why aren’t things properly communicated so we know what to expect?

Why not just submit a PR to them? If you submit a few PRs many times (especially if it’s in an org) you’ll just be invited to be a contributor and help maintain the project. There are some libraries which have no devs that do need this, but most at least do version updates.

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [August 22, 2017, 8:59pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/3 "2017-08-22T20:59:40Z")

</div>

> [@ChrisRackauckas](#):
>
> Why not just submit a PR to them?

> [@essenciary](#):
>
> I made a PR with the v0.6 compatibility.

> <https://github.com/JuliaCollections/AbstractTrees.jl/pull/13>
>
> Addressing issues per https://github.com/Keno/AbstractTrees.jl/issues/12

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [August 22, 2017, 9:02pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/4 "2017-08-22T21:02:59Z")

</div>

If I’m reading this correctly, that’s just to one of the many libraries? I’m now sure how a PR to one of the libraries leads to the conclusion that many other (unnamed) libraries need to be forked.

---

<div class="post-metadata">

### Author: ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)
#### Post date: [August 22, 2017, 9:28pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/5 "2017-08-22T21:28:49Z")

</div>

My suggestion is copy (provided the license is compatible) the package as a sub-module and fix it as needed. Once the original package is fixed, then you can delete your copy.

My rule of thumb is that The “0.6” in Julia means “0.6”: it’s alpha- quality software and it’s important to manage your expectations on Julia itself, as well as the ecosystem. Once it’s 1.0 ones expectations may be different.

---

<div class="post-metadata">

### Author: ![Keno](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/keno/32/285_2.png) [@Keno](https://discourse.julialang.org/u/Keno)
#### Post date: [August 22, 2017, 10:34pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/6 "2017-08-22T22:34:38Z")

</div>

> [@essenciary](#):
>
> does anybody have more info than me regarding the status of packages like AbstractTrees? @Keno?

Sorry about that. There’s a lot on my plate, so sometime routine package maintenance falls by the wayside. I’ll try to look at this tomorrow.

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 22, 2017, 10:36pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/7 "2017-08-22T22:36:15Z")

</div>

@ChrisRackauckas Well, this is embarrassing… but you’re right.

About two months ago I put my repos on hold waiting for updates on the dependencies. But until now, I haven’t actually looked at the GitHub repos. Indeed, with the exception of AbstractTrees and Gallium, they have all been updated. I don’t know why I didn’t get the new versions in `Pkg.update()`, maybe I messed up something in METADATA.

Now I’ve done a clean install of Julia v0.6 and successfully added all the packages from scratch.

I sincerely apologize, I didn’t mean to step on anybody’s toes. (But at the same time I’m quite happy that I opened up my mouth and got this thing working again, I really didn’t know what else to do!)

Thanks everybody for your help and sorry again for wasting your time! 😳

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 22, 2017, 10:44pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/8 "2017-08-22T22:44:16Z")

</div>

@Keno Thank you - I’m not directly using `AbstractTrees`. But it _was_ a dependency of `Gumbo`, which is a key package in the view layer of `Genie`, hence my frustration.

But it turned out that `Gumbo` removed `AbstractTrees` as a dependency over a month ago and tagged a new release. But for some reason, I didn’t get it in `Pkg.update()`. However, it’s all good now - fresh install of Julia and everything worked perfectly again.

Sorry for the commotion

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 22, 2017, 11:19pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/9 "2017-08-22T23:19:57Z")

</div>

Actually, the problem with `Pkg` persists even on a new install 🤐

Does anybody know why I ended up with  
` - AbstractTrees 0.0.4`

if [pkg.julialang.org](http://pkg.julialang.org) show it as  
`Julia v0.6: 0.1.0 (6 months ago)`

and `Gumbo`, the package that’s using it, has in its `REQUIRE`  
`AbstractTrees 0.1.0`

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 22, 2017, 11:23pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/10 "2017-08-22T23:23:59Z")

</div>

Similarly, `Gumbo` itself is at v0.3.0 on Julia v0.6, despite the fact that [pkg.julialang.org](http://pkg.julialang.org) lists

```julia
Julia v0.5: 0.3.0 (7 months ago) / Tests pass. 
Julia v0.6: 0.4.0 (a month ago) / Tests pass.

```

How can this be possible on a brand new Julia v0.6 install?

```julia
julia> versioninfo()
Julia Version 0.6.0
Commit 903644385b (2017-06-19 13:05 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin13.4.0)
  CPU: Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, skylake)

```

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 23, 2017, 12:16am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/11 "2017-08-23T00:16:05Z")

</div>

OK, I did a new clean install starting with a clone of `Genie`. It turns out that that’s how `Pkg` can resolve the current requirements, by choosing lower versions - especially `Gumbo 0.3.0` instead of `Gumbo 0.4.0` (which in turn depends on `AbstractTrees 0.0.4` instead of `AbstractTrees 0.1.0`).

Attempting to force `Gumbo` to `0.4.0` in `Genie` results in a dependency tree that can’t be satisfied.

So, in regards to my initial query: how is a developer expected to deal with this? If I wait for packages to be updated but `Pkg` skips updating them because one package breaks the dependency tree, how do I even know new packages versions were released?

If `Pkg` would show a notice and say:

`There is a newer version of Gumbo at 0.4.0 but it can't be upgraded due to unsatisfied dependencies.`

at least I would know that some packages have been updated and I need to dig deeper into the dependency tree.

---

<div class="post-metadata">

### Author: ![avik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/avik/32/17_2.png) [@avik](https://discourse.julialang.org/u/avik)
#### Post date: [August 23, 2017, 12:28am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/12 "2017-08-23T00:28:35Z")

</div>

So something is forcing Gumbo to downgrade. What does `Pkg.dependents("Gumbo")` show

---

<div class="post-metadata">

### Author: ![Ralph\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ralph_smith/32/10344_2.png) [@Ralph\_Smith](https://discourse.julialang.org/u/Ralph_Smith)
#### Post date: [August 23, 2017, 3:26am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/13 "2017-08-23T03:26:47Z")

</div>

IIUC, the following shell command should point to packages with dependency version ceilings:

```shell
egrep '[-.0-9]+ [.0-9]+' $HOME/.julia/v0.6/*/REQUIRE

```

Perhaps this will help you find the culprit.

---

<div class="post-metadata">

### Author: ![ssfrr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ssfrr/32/3736_2.png) [@ssfrr](https://discourse.julialang.org/u/ssfrr)
#### Post date: [August 23, 2017, 4:04am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/14 "2017-08-23T04:04:35Z")

</div>

I dug into the Gumbo/AbstractTrees/ASTInterpreter issue a while ago and tried to document as specifically as I could why the downgrade was happening. Probably related to the issues you’re seeing:

[https://github.com/Keno/ASTInterpreter.jl/issues/69#issuecomment-310210108](https://github.com/Keno/ASTInterpreter.jl/issues/69#issuecomment-310210108)

For my use-case the issue was more or less resolved with Atom stopped depending on ASTInterpreter/Gallium.

---

<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: [August 23, 2017, 6:20am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/15 "2017-08-23T06:20:01Z")

</div>

> [@essenciary](#):
>
> they have all been updated. I don’t know why I didn’t get the new versions in Pkg.update(), maybe I messed up something in METADATA.

This happens to me routinely. [I asked why](https://discourse.julialang.org/t/diagnostics-for-pkg-update-non-latest-version/5496), but did not get replies yet. I moved my own packages out of `~/.julia/v0.6` so that I can wipe and reinstall it every month or so, and I am in the process of [figuring out how to run tests for them](https://discourse.julialang.org/t/run-tests-for-a-package-outside-julia-v0-6/5506/).

“Running `Pkg.update()` routinely” turned out to provide the illusion of being up to date. Some packages were 2-3 (!) minor versions behind.

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 23, 2017, 9:02am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/16 "2017-08-23T09:02:59Z")

</div>

Sorry, eventually I had to go to sleep 🙂

@avik @ssfrr Yeah, in my case it’s a Gallium \> ASTInterpreter \> AbstractTrees \> JuliaParser dependency structure that holds back the Gumbo \> AbstractTrees versions.  
Removing all the dependencies on Gallium made Pkg update to latest versions.

@Tamas_Papp It would be helpful if Pkg3 would show a warning if a package that is not pinned can’t be upgraded due to dependencies. It can tip off the developer to go down the dependency graph and try to solve it manually.

---

<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: [August 23, 2017, 11:10am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/17 "2017-08-23T11:10:15Z")

</div>

> [@essenciary](#):
>
> It would be helpful if Pkg3 would show a warning if a package that is not pinned can’t be upgraded due to dependencies. It can tip off the developer to go down the dependency graph and try to solve it manually.

Have you tested Pkg3? Following Stefan’s talk on juliacon i’d understand as: Pkg3 enables you to hold different package versions in parallel if needed.

---

<div class="post-metadata">

### Author: ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)
#### Post date: [August 23, 2017, 11:31am UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/18 "2017-08-23T11:31:37Z")

</div>

Not thoroughly and not recently, it was very early version last time I checked.

> [@lobingera](#):
>
> Pkg3 enables you to hold different package versions in parallel

That sounds cool - do you have more details about what does that mean?

Will it allow having multiple versions of, say, `AbstractTrees` and use one with `Gallium` and one with `Gumbo` _but not in the same app_? Or will it allow a package to encapsulate/namespace its dependencies so that in the same app multiple versions will coexist, say `Gallium.AbstractTrees@0.0.4` and `Gumbo.AbstractTrees@0.1.0`?

---

<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: [August 23, 2017, 12:25pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/19 "2017-08-23T12:25:14Z")

</div>

OK, i think the design still follows:  
[https://github.com/JuliaLang/Juleps/blob/master/Pkg3.md](https://github.com/JuliaLang/Juleps/blob/master/Pkg3.md)  
and i really recommend the video from juliacon (this year). Part of the demonstration is failing, but it’s visible what it could be.

---

<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: [August 24, 2017, 3:22pm UTC](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515/20 "2017-08-24T15:22:31Z")

</div>

> [@essenciary](#):
>
> where I’m standing it looks like the ecosystem is de facto still at v0.5

One of the issues seems to be that many packages are one-person efforts, and when that person is busy, development stalls. Then later on many issues get fixed in bursts.

Also, some packages are still hammering out the ideal architecture/API, and my impression is that they want to hold off on other things in the meantime.

[Next page](https://discourse.julialang.org/t/lost-in-transition-the-current-state-of-the-julia-ecosystem/5515.md?page=2)
