Skip to content

Transition to Plots.jl #8

@SimonDanisch

Description

@SimonDanisch

Considering that MakiE is designed quite differently from Plots.jl, any transition to Plots.jl will
basically mean replacing Plots.jl. I don't see how to slowly incorporate ideas from MakiE into Plots.jl without a huge amount of work. I think we're at a good time to still make drastic much needed changes, so we shouldn't try to be conservative here.

So I propose to let MakiE live as it's own package for a while until we can ensure, that all features from Plots.jl are well covered.
Then we can think about renaming MakiE, make a PR to Plots.jl to replace the internals with MakiE or simply deprecate Plots.jl and suggest to move to MakiE.

This would look something like this:

  1. Pre release MakiE (should happen today)
  2. Implement some more high level recipes from Plots.jl
  3. Introduce a compatibility layer for PlotsRecipeBase to see if MakiE support the whole range of features used in packages
  4. factor out MakiE Plotsbase into an abstract plotting package with no dependencies
  5. Create backend packages
  6. Refactor into packages - replace/rename Plots.jl with new internals

Other backends

I'm inclined to implement a reference backend different from GLVisualize with Cairo. I already have some code for this from my experiments in Visualize.jl.
Cairo is completely orthogonal to GLVisualize and offers missing bits and pieces like PDF/SVG export.
The orthogonality seems to be an important quality for different backends to make the choice of backends clearer to the user.

Since GR is the favorite Plots.jl backend, it would also make sense to start with GR as a reference implementation.
It's less orthogonal and I'm not as familiar with the API, though.
But if @jheinen is on board and willing to help me out, this could also be a great start!

cc: @daschw @mkborregaard @piever @ChrisRackauckas @Evizero @ViralBShah

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions