Can't install MakiE


I am trying to install MakiE on Julia 0.6 but the package doesn’t seem to be available:

julia> Pkg.add("Makie")
ERROR: unknown package Makie

I just want to test it and figure out how it works.


It’s a bit complicated, since it’s not fully released yet :wink:

It’s not feature complete yet, but if you want to give it a spin, check out:


Thanks! I’ll give it a try.


Bad news.

julia> Pkg.clone("")
INFO: Cloning Makie from
INFO: Computing changes...
WARNING: julia is fixed at 0.6.0-rc2.0 conflicting with requirement for Makie: [0.6.0,∞)
ERROR: fixed packages introduce conflicting requirements for GeometryTypes: 
         Makie requires versions [0.4.3,∞) [none of the available versions can satisfy this requirement]
       available versions are 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.2.0, 0.2.1, 0.2.2 and 0.4.0

Does this mean that I need to update Julia?


You should definitely update, since I’m using quite a few new tags!


I think in general you’ll find you’re on stabler package versions if you use the released julia rather than the release candidate, so it’s definitely recommended to update in any case.


Yeah. I have a bad habit of only upgrading when I need something new. Anyway, can you or @sdanisch tell me a bit about the relationship between MakiE and Plots? The MakiE website makes it sound like MakiE is a rewrite of Plots. So is that were development is going? Or maybe it’s an experiment of sorts?


Makie is living on the edge where these kinds of questions don’t have an answer yet. It could be an experiment, or it could already be successful.


I personally hope that it will be able to replace Plots, with all the nice things (recipes, backend switching, terse syntax), and less of the issues (better interactivity, signal capture, 3d shading, gpu support), but as @ChrisRackauckas points out it is still early days. It’s probably a good place to contribute if you hope for a brighter future for Julia plotting and aren’t happy with the current offers.


One of the things that I think is really nice about the MakiE design is that is pushes the interface between frontend and backend down much lower. The “backends” for Plots are already fully-functional plotting packages in their own right that have user-facing plotting APIs, so I usually find myself just using them directly. Because Plots also has the goal of making the plots look the same across back-ends, there ends up being a bunch of code necessary to undo the defaults of the backend to make things uniform. This also adds to the bug surface area, and creates issues like this where it’s tricky to maintain the cool interactive features of each backend while also enforcing uniformity across them.

It also makes it so that if you want to change display types (e.g. interactive javascript vs. publication .pdf) you are switching way more than just the low-level drawing routines, you’re switching whole plotting packages. Plots tries to make that switch as invisible as possible, but that’s an incredibly hard thing to do seamlessly.

I guess for the most part I’m just agreeing with @mkborregaard here, and adding that Plots has done a great job of exploring a lot of the plotting design space, and I’m hopeful that MakiE will be a great place to figure out what the best drawing/interactivity primitives need to be to build a plotting system on top of. Once that’s figured out it feels much more tractable to create javascript/svg/png/GTK/whatever backends that provide those primitives, so switching backends is a lower-level process.

I think the plotting future is bright, and I see the future work building on, rather than replacing, what we have now.


That’s indeed one of the issues of the Plots.jl design. The backend code can easily get complicated and hard to maintain. The ultimate goal is to create a low-level interface that can be formalized (pretty much like say the AbstractArray interface), defining what “basic primitives” a backend needs to support.

I fully agree that Plots.jl is a beautiful, modern attempt at a plotting package: studying its source-code and trying to contribute to it is extremely instructive. Trying to understand what could be improved has also been very instructive and I really hope that Makie will be a good continuation of this design process. As soon as the “backend interface” is formalized, I’m curious to see how hard or easy it will be to add backends: I share your optimism that such a low level interface should simplify the process a lot.