# Why are there so many plotting backends?

**URL:** <https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142>\
**Category:** Visualization\
**Tags:** makie\
**Created:** [February 27, 2022, 8:53am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142 "2022-02-27T08:53:06Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)\
**Post date:** [February 27, 2022, 8:53am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/1 "2022-02-27T08:53:06Z")

</div>

Hello, I’m learning to use Makie, but have also looked at some other packages like GadFly and Plots, but Makie seems my favorite. I’m just wondering why does it have 4 different backends(WGLMakie, GLMakie, and CairoMakie), even though they are very similar, why don’t we just have 1 tool that can do everything.  
Are there backends specifically designed for one use case?  
Thank you for your clarification.

---

<div class="post-metadata">

**Author:** ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)\
**Post date:** [February 27, 2022, 9:14am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/2 "2022-02-27T09:14:35Z")

</div>

No need to answer as answer on this post:  
[What are the biggest differences between Makie.jl and Plots.jl? - #5 by sdanisch](https://discourse.julialang.org/t/what-are-the-biggest-differences-between-makie-jl-and-plots-jl/76643/5) from joules(7th) has given a great answer.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [February 27, 2022, 9:14am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/3 "2022-02-27T09:14:35Z")

</div>

OpenGL can make the best 3D bitmaps, but no 2D vector graphics. That’s the split between GLMakie and CairoMakie. GLMakie runs in native windows but can’t be embedded in web contexts, that’s the split between GLMakie and WGLMakie. Why are they not all bundled up in one package? Because then everyone would have to pay compilation costs for all functionality even if they only wanted 2D vector graphics.

---

<div class="post-metadata">

**Author:** ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)\
**Post date:** [February 27, 2022, 9:15am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/4 "2022-02-27T09:15:20Z")

</div>

Oh, you answered, just wanted to give you a credit since you have answered a question on my previous question. Thank you.

---

<div class="post-metadata">

**Author:** ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)\
**Post date:** [February 27, 2022, 9:17am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/5 "2022-02-27T09:17:13Z")

</div>

If you don’t mind may I ask you, what is that JavaScript offers that other languages don’t since it seems like you want to use it quite a lot? What am I missing, because as far as I know, Julia is much faster?

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [February 27, 2022, 10:32am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/6 "2022-02-27T10:32:01Z")

</div>

It runs natively in browsers, that’s the only thing, but it’s a big thing.

---

<div class="post-metadata">

**Author:** ![matic\_lauko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matic_lauko/32/27770_2.png) [@matic\_lauko](https://discourse.julialang.org/u/matic_lauko)\
**Post date:** [February 27, 2022, 10:40am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/7 "2022-02-27T10:40:27Z")

</div>

What about with GLMakie, it doesn’t use JavaScript right?

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [February 27, 2022, 11:15am UTC](https://discourse.julialang.org/t/why-are-there-so-many-plotting-backends/77142/8 "2022-02-27T11:15:44Z")

</div>

No it doesn’t, only WGLMakie. But only glue code is written in Javascript, not the full logic.
