# Julia Roadmap

**URL:** <https://discourse.julialang.org/t/julia-roadmap/33998>\
**Category:** Internals & Design\
**Created:** [January 30, 2020, 8:49pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998 "2020-01-30T20:49:55Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![digeratus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digeratus/32/12364_2.png) [@digeratus](https://discourse.julialang.org/u/digeratus)\
**Post date:** [January 30, 2020, 8:49pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/1 "2020-01-30T20:49:55Z")

</div>

Other lang communities have public roadmaps e.g. rust, go, ruby, etc I’m wondering if there’s a version for Julia I can take a look. It would help immensely, particularly in terms of transparency, community, etc. Thanks.

---

<div class="post-metadata">

**Author:** ![longemen3000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/longemen3000/32/7298_2.png) [@longemen3000](https://discourse.julialang.org/u/longemen3000)\
**Post date:** [January 30, 2020, 9:01pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/2 "2020-01-30T21:01:59Z")

</div>

i don’t know if its official, in the sense its not at the front page of the JuliaLang org, but this post is an idea:

> [@Compiler work priorities](https://discourse.julialang.org/t/compiler-work-priorities/17623):
>
> In response to I thought I might write a little post about the rough priorities of the compiler team: Correctness finding and fixing compiler and inference bugs Multithreading [non-copying task stack switching](https://github.com/JuliaLang/julia/pull/13099) (done) [new PARTR parallel runtime](https://github.com/JuliaLang/julia/pull/22631)[locks for I/O operations](https://github.com/libuv/libuv/issues/1595) other thread safety Compile-time latency, aka “the time-to-first-plot problem” making compilation faster caching more things Compiler-related packages and tools [PackageCompiler](https://github.com/JuliaLang/PackageCompiler.jl) Debugger [Cxx](https://github.com/Keno/Cxx.jl) type checking/linting J…

---

<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 30, 2020, 10:11pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/3 "2020-01-30T22:11:04Z")

</div>

Can you post some links to such roadmaps? The only one I can find is this one for Rust:

> **[Rust's 2019 roadmap | Rust Blog](https://blog.rust-lang.org/2019/04/23/roadmap.html)**
>
> Empowering everyone to build reliable and efficient software.

Which appears to be more of a “statement of general intentions” than an actual roadmap. I cannot find any roadmap documents for Go or Ruby.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [January 30, 2020, 10:17pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/4 "2020-01-30T22:17:30Z")

</div>

I really like the VS Code [roadmap](https://github.com/microsoft/vscode/wiki/Roadmap). It is high level, i.e. not a detailed plan of upcoming work. More like a vision statement for the next 12 months.

I think a short writeup along the lines of what you wrote originall [here](https://discourse.julialang.org/t/compiler-work-priorities/17623) say every 12 months or so would be awesome.

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [January 30, 2020, 10:22pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/5 "2020-01-30T22:22:46Z")

</div>

I second what @davidanthoff said, except that is still a bit too detailed for me. 5 item maximum! But yes more like a vision statement or intentions rather than a detailed action plan.

Forward guidance – it’s good enough for the Federal Reserve, why not Julia?

---

<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 30, 2020, 10:37pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/6 "2020-01-30T22:37:02Z")

</div>

Aight, here’s our roadmap:

- Become the best ~~editor~~ programming language ~~for anyone who relies on accessibility features~~
- Improve performance, scalability, and security of ~~VS Code~~ Julia and its extensions
- Tackle some of the most wanted and most emotional user features ([done!](https://github.com/JuliaLang/julia/pull/33864))
- Polishing and a constant trickle of design refreshments
- Incrementally improve already existing features
- Responsibly enable extensions that have broader extensibility requirements
- Tackle a couple of big rocks that push the boundaries of what ~~VS Code~~ Julia can do

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [January 30, 2020, 10:43pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/7 "2020-01-30T22:43:14Z")

</div>

You picked the one paragraph from that page that is pretty useless from the VS Code roadmap 🙂 Everything below that paragraph is super useful.

---

<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 30, 2020, 10:43pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/8 "2020-01-30T22:43:52Z")

</div>

But more seriously, we’re still working through that same list of compiler work, although a lot of it has gotten done. There’s a lot of in-progress Pkg work, which is outlined [here](https://github.com/JuliaLang/Pkg.jl/issues/1377). That is maybe half done, half still in progress. Most everything else is just fixing issues and deciding on features as they come up. I’m kind of unclear on what kind of guidance people are interested in. Everything seems to boil down to: try to make things better that are not great while not breaking things that are good.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [January 30, 2020, 10:51pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/9 "2020-01-30T22:51:00Z")

</div>

I think a simple post that updates that old list would be great. It could be an update which parts are done, which are still open, what the core team sees as priorities etc. Having a link to the Pkg plan in that would be great.

I don’t think such a post would contain any information that isn’t somewhere already. But for folks that don’t roam github issues obsessively, having a short kind of “here is an update on my post from a year ago” would be great. Your post back then got a lot of likes, I think it was exactly the kind of information folks are looking for. So I think doing something like that once a year would be great.

---

<div class="post-metadata">

**Author:** ![digeratus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digeratus/32/12364_2.png) [@digeratus](https://discourse.julialang.org/u/digeratus)\
**Post date:** [January 30, 2020, 10:54pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/10 "2020-01-30T22:54:47Z")

</div>

Here’s a very detailed one for Ruby:

> **[Roadmap - Ruby master - Ruby Issue Tracking System](https://bugs.ruby-lang.org/projects/ruby-master/roadmap)**
>
> Redmine

Rust just changed to themes in order to get the working groups to come up with their internal details, but once those are set the roadmap becomes quite detailed.

I don’t think there’s a right or wrong way to approach roadmaps. But for a community to say contribute, I’d be nice to know what’s there to work on and perhaps the rationality behind it. Makes sense?

---

<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 30, 2020, 10:56pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/11 "2020-01-30T22:56:10Z")

</div>

Sure, that seems reasonable. I guess I’m the one who’ll have to do this.

---

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [January 30, 2020, 10:57pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/12 "2020-01-30T22:57:10Z")

</div>

> [@StefanKarpinski](#):
>
> I guess I’m the one who’ll have to do this.

Hehe, yes, I think so 🙂 I mean, I could write something if you promise that you commit to what I’m writing down 😉

---

<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 30, 2020, 10:58pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/13 "2020-01-30T22:58:23Z")

</div>

As far as I can tell, that’s just a bug tracker link. We have that as well:

> **[Issues · JuliaLang/julia](https://github.com/JuliaLang/julia/issues)**
>
> The Julia Programming Language. Contribute to JuliaLang/julia development by creating an account on GitHub.

If you want to know what’s planned to go into specific releases, there are milestones for those, for example [Julia 1.4](https://github.com/JuliaLang/julia/milestone/34) and [Julia 1.5](https://github.com/JuliaLang/julia/milestone/35). I should point out that these links are not terribly useful because we don’t do feature-based releases (anymore), we do timed releases, which means that whatever new features are merged to master by the feature freeze date for a release, those features go into the release; anything that doesn’t goes in a later one.

---

<div class="post-metadata">

**Author:** ![digeratus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digeratus/32/12364_2.png) [@digeratus](https://discourse.julialang.org/u/digeratus)\
**Post date:** [January 30, 2020, 11:10pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/14 "2020-01-30T23:10:44Z")

</div>

For reference, here’s a pseudo-roadmap about Go: [Proposals for Go 1.15 - The Go Programming Language](https://blog.golang.org/go1.15-proposals) and this one for go 2: [Toward Go 2 - The Go Programming Language](https://blog.golang.org/toward-go2)

For both the Ruby and go communities these roadmaps predate/followed by some sort of keynote during conference. I’m new to Julia so I’m just trying to figure out how it operates and be able to help.

---

<div class="post-metadata">

**Author:** ![Ratingulate](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ratingulate/32/9242_2.png) [@Ratingulate](https://discourse.julialang.org/u/Ratingulate)\
**Post date:** [January 30, 2020, 11:18pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/15 "2020-01-30T23:18:58Z")

</div>

Swift’s is pretty good: [On the road to Swift 6 - Announcements - Swift Forums](https://forums.swift.org/t/on-the-road-to-swift-6/32862)

---

<div class="post-metadata">

**Author:** ![Zach\_Christensen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zach_christensen/32/7220_2.png) [@Zach\_Christensen](https://discourse.julialang.org/u/Zach_Christensen)\
**Post date:** [January 31, 2020, 2:53am UTC](https://discourse.julialang.org/t/julia-roadmap/33998/16 "2020-01-31T02:53:20Z")

</div>

I’m probably sounding like a broken record at this point, but task views (a la CRAN task views) could be a good start to this. A living document of what is available for a certain aspect of the ecosystem and goals would distribute labor so one person isn’t responsible for all of it.

For example, there could be a “task view” for package and project management that includes relevant packages and current community efforts and goals.

---

<div class="post-metadata">

**Author:** ![antoine-levitt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/antoine-levitt/32/4008_2.png) [@antoine-levitt](https://discourse.julialang.org/u/antoine-levitt)\
**Post date:** [January 31, 2020, 8:05am UTC](https://discourse.julialang.org/t/julia-roadmap/33998/17 "2020-01-31T08:05:48Z")

</div>

> [@StefanKarpinski](#):
>
> I’m kind of unclear on what kind of guidance people are interested in. Everything seems to boil down to: try to make things better that are not great while not breaking things that are good.

Fixing every single issue is of course always the plan, but it’s obviously not going to get done in our lifetimes, so it’s all a question of priorities. Is the core team prioritizing fixing core infrastructure (performance of captured variables in closures, eliding views allocations, compilation time…), tooling (debugger, Pkg, package compiler…), multithreading (composability, performance…), ease of use, specific applications…? Are any of these “wontfix” for the time being? The old list was useful for that. Also some idea of what breaking changes will be in julia 2.0 and what timeframe (if any) is scheduled for it.

---

<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 31, 2020, 10:36am UTC](https://discourse.julialang.org/t/julia-roadmap/33998/18 "2020-01-31T10:36:11Z")

</div>

> [@digeratus](#):
>
> It would help immensely, particularly in terms of transparency, community

I am not sure what those words mean in this context. Can you clarify?

Especially about transparency — pretty much all the work is out there in the open already: discussion happens in issues and pull requests, and keeping an eye on the latter is a good way to follow what is going on. Which part of Julia’s development do you consider not to be transparent enough?

Short- and medium-term goals are best followed using milestones, eg for [1.5](https://github.com/JuliaLang/julia/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.5) you see a couple of outstanding issues.

It is difficult to plan very much ahead, because priorities shift and new issues come up. Because of this, I am skeptical about the utility of lists (in blog posts etc) as roadmaps: they will either be very vague, or get outdated very quickly.

---

<div class="post-metadata">

**Author:** ![digeratus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digeratus/32/12364_2.png) [@digeratus](https://discourse.julialang.org/u/digeratus)\
**Post date:** [February 1, 2020, 9:13pm UTC](https://discourse.julialang.org/t/julia-roadmap/33998/19 "2020-02-01T21:13:38Z")

</div>

I mean transparency in the purest sense of the word. Projects of this kind have different forms of transparency. For the context I’m referring to I’m concentrating mainly on the rational of thinking behind what’s to be included in the next version. Access to the code is one form of transparency, but it doesn’t explicitly tell me the “what, why or how” of what’s beyond the original thesis from which the project stems from or the videos from the Juliaconfs of past year.

The impetus behind those decisions is important for many reasons depending on who you are what your plans are in utilizing Julia. One that’s simple to relate to is duplication of effort. Julia has a direct relationship with the LLVM. For all the greatness that LLVM brings to the table in terms of machine created code, it’s slooooow. From a malleability point of view I could say, well I could go about making compilation faster in Julia from Julia or from the LLVM. If I know what the core team is thinking about tackling that issue I’m better equipped to make a decision as to where allocate my efforts. There are plenty of other examples I can give - and I’m sure others here have their reasons as well - but I think this one is fairly easy to comprehend.

Hope that makes sense.

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [February 2, 2020, 12:04am UTC](https://discourse.julialang.org/t/julia-roadmap/33998/20 "2020-02-02T00:04:39Z")

</div>

The typescript roadmap is a pretty amazing living document: [https://github.com/microsoft/TypeScript/wiki/Roadmap](https://github.com/microsoft/TypeScript/wiki/Roadmap)

[Next page](https://discourse.julialang.org/t/julia-roadmap/33998.md?page=2)
