# Should a sort of quality-assurance program introduced for Julia packages?

**URL:** <https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346>\
**Category:** Community\
**Tags:** package, development\
**Created:** [October 9, 2017, 10:23am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346 "2017-10-09T10:23:51Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [October 9, 2017, 10:23am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/1 "2017-10-09T10:23:52Z")

</div>

Just a thought. The inclusion of a package in METADATA is currently conditional only to formal considerations… if the tag is in the right format, if the require file is present and so on… but no “judgment” on the quality of the code nor on the relevance of the package is made.

While I appreciate this “open” approach, I also appreciate those when some sort of QA is employed.  
In particular I liked the experience I had to develop [Drupal](https://www.drupal.org) modules (Drupal is a web Content Management System). In that case, the first time a developer propose a module, this is put in a sort of review system, where peers gives her suggestions on how to improve her code or better follow guidelines.  
After this first module is approved, the developer can then submit other modules without further review.  
Would this model be applicable also for packages of generic programming languages as Julia, or do you think it would be too ambitious ?

---

<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:** [October 9, 2017, 10:40am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/2 "2017-10-09T10:40:04Z")

</div>

I’m confused, do you volunteer to set this up?

In the discussions about 1.0, around the work on Pkg3 (replacing the current package management) there is sometimes the notion of a standard library, or a list of curated packages and some ‘light pressure’ to overcome package fragmentation. But … someone needs to spend this effort.

---

<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:** [October 9, 2017, 10:43am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/3 "2017-10-09T10:43:36Z")

</div>

I recently went through something similar when I submitted [julia-repl](https://github.com/tpapp/julia-repl) to [MELPA](https://melpa.org/). I am in two minds about this: I did get a lot of helpful suggestions which made the code more compatible across Emacs versions, but at the same time it was clear that the people helping me were very busy otherwise, which resulted in delays (my fault too, of course).

Instead of making it mandatory, it could be started as a voluntary scheme: people could ask for code reviews, and get help from experts. OTOH, I imagine that all the developers qualified to do this are very, very busy, and perhaps think that their time would be better spent improving Julia or the packages they contribute to.

In any case, I find reading Julia code of various packages very helpful. I learned a lot this way about optimization, code organization, and mundane details like setting up the documentation.

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [October 9, 2017, 10:45am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/4 "2017-10-09T10:45:31Z")

</div>

Well, I am just trying to open a discussion on whatever such model would be transferable from a system where modules refer to a specific context, to a generic programming language, where packages could be about everything.  
Also, I am not speaking about a specific package management, just the policy for the inclusion of the packages.

---

<div class="post-metadata">

**Author:** ![Evizero](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/evizero/32/10118_2.png) [@Evizero](https://discourse.julialang.org/u/Evizero)\
**Post date:** [October 9, 2017, 11:01am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/5 "2017-10-09T11:01:33Z")

</div>

> [@sylvaticus](#):
>
> The inclusion of a package in METADATA is currently conditional only to formal considerations… if the tag is in the right format, if the require file is present and so on… but no “judgment” on the quality of the code nor on the relevance of the package is made.

This seems overly simplified and not completely accurate since a certain kind of quality checks are done AFAIK (see [https://github.com/JuliaLang/METADATA.jl/issues/6761#issuecomment-253893450](https://github.com/JuliaLang/METADATA.jl/issues/6761#issuecomment-253893450)). Also, in my experience questions will come up if similar packages already exist.

That said I am guessing you are talking about reviewing how well and efficient a package solves its goal, in which case I do see your point.

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [October 9, 2017, 1:24pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/6 "2017-10-09T13:24:17Z")

</div>

While obviously what gets maintained will depend on people’s availability, I do think it would be a good idea to maintain a highly visible list of packages that are _known_ to be maintained. [JuliaObserver](https://juliaobserver.com) does this to some extent, it might be a good idea to have a link to it on the main Julia website and github.

---

<div class="post-metadata">

**Author:** ![dfdx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dfdx/32/120_2.png) [@dfdx](https://discourse.julialang.org/u/dfdx)\
**Post date:** [October 9, 2017, 2:51pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/7 "2017-10-09T14:51:52Z")

</div>

I don’t really think that quality assurance of all registered packages will ever work. The only people who can really asses package quality are its users, and there’s very little chance that one of them will be in a review team.

I also fill somewhat uncomfortable when I have to wait for several days when my package gets registered / new version is approved to include it into requirements of a dependent project. Instead in practice I keep many changes untagged for a long time so users have to checkout master of several packages to make things work. What’s worse, I see the same pattern on many other packages, so perhaps it’s not just me.

Having said that, I support the idea of a list of high-quality and actively maintained packages that newcomers may use without risk of getting negative first impression.

---

<div class="post-metadata">

**Author:** ![ptoche](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ptoche/32/23554_2.png) [@ptoche](https://discourse.julialang.org/u/ptoche)\
**Post date:** [October 9, 2017, 3:44pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/8 "2017-10-09T15:44:27Z")

</div>

> I support the idea of a list of high-quality and actively maintained packages that newcomers may use without risk of getting negative first impression.

Yes particularly for plotting. When I leave Julia for a month or two as I get caught up in life, I can never remember which plot package to use…

---

<div class="post-metadata">

**Author:** ![ExpandingMan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/expandingman/32/866_2.png) [@ExpandingMan](https://discourse.julialang.org/u/ExpandingMan)\
**Post date:** [October 9, 2017, 3:51pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/9 "2017-10-09T15:51:50Z")

</div>

To be fair, both Plots.jl and Gadfly.jl have seemed to be quite well maintained for at least the past year or so.

---

<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:** [October 9, 2017, 4:45pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/10 "2017-10-09T16:45:43Z")

</div>

> [@ptoche](#):
>
> I can never remember which plot package to use…

It has been quite easy to decide this for a while:

> **[GitHub - JuliaPlots/Plots.jl: Powerful convenience for Julia visualizations...](https://github.com/JuliaPlots/Plots.jl)**
>
> Powerful convenience for Julia visualizations and data analysis - GitHub - JuliaPlots/Plots.jl: Powerful convenience for Julia visualizations and data analysis

---

<div class="post-metadata">

**Author:** ![ptoche](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ptoche/32/23554_2.png) [@ptoche](https://discourse.julialang.org/u/ptoche)\
**Post date:** [October 9, 2017, 8:09pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/11 "2017-10-09T20:09:52Z")

</div>

Yes, I probably meant ‘I can never remember which Plots backend to use…’

😉

---

<div class="post-metadata">

**Author:** ![shorty66](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shorty66/32/3254_2.png) [@shorty66](https://discourse.julialang.org/u/shorty66)\
**Post date:** [October 13, 2017, 6:21pm UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/12 "2017-10-13T18:21:57Z")

</div>

me neither, but thats the beauty of plots: Just write `gr()` or `plotly()` etc. and try a different backend without changing any other code.

Sadly, plots doesn’t work with 0.7.0 at the moment, but i am trying to help with that.

---

<div class="post-metadata">

**Author:** ![ptoche](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ptoche/32/23554_2.png) [@ptoche](https://discourse.julialang.org/u/ptoche)\
**Post date:** [October 15, 2017, 10:53am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/13 "2017-10-15T10:53:42Z")

</div>

Really? Sounds great. The last time I tried, the syntax for each backend was different.

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [October 15, 2017, 11:10am UTC](https://discourse.julialang.org/t/should-a-sort-of-quality-assurance-program-introduced-for-julia-packages/6346/14 "2017-10-15T11:10:18Z")

</div>

Absolutely not 😂
