# How does one find a julia package for a specific use?

**URL:** <https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379>\
**Category:** General Usage\
**Tags:** packages\
**Created:** [August 14, 2017, 2:31pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379 "2017-08-14T14:31:35Z")\
**Posts on this page:** 18\
**Page:** 1

<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:** [August 14, 2017, 2:31pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/1 "2017-08-14T14:31:36Z")

</div>

I have a more general question about how people are intended to discover julia packages. [pkg.julialang.org](http://pkg.julialang.org) now has like 1500 packages, and though one can use browser search to search the descriptions, those are often very succinct, and you may need something more specific. A classical approach so far seems to be to just ask on SO, the Gitter or here, which is always useful but possibly will become more difficult as the ecosystems grows.

For example, I am trying to find a package that does [alpha shapes](https://en.wikipedia.org/wiki/Alpha_shape) , which are a generalization of convex hulls and closely related to Delaunay triangles used in geometry and geography. So I found the JuliaGeometry organisation, and tried to github search in the VoronoiDelaunay.j package, and VoronoiCells, then I went to the JuliaGeo organisation and github searched the code of LibGEOS, and finally in the JuliaPolyhedra organization i looked in QHulls.jl and ConvexHulls.jl. The github search on “alpha” didn’t bring up anything, but of course the functionality might still be in there.

I tried searching JuliaObserver, it seems great but it was a bit hard for me to figure out what I was searching in.

Are there any plans for increased disoverability, such as an ability to search in function definitions etc? Is that perhaps the long-term plan for JuliaObserver?

---

<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:** [August 14, 2017, 3:02pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/2 "2017-08-14T15:02:08Z")

</div>

I usually

1. search on Github,

2. look in [curated list](https://github.com/svaksha/Julia.jl) by svaksha,

3. check [announcements](https://discourse.julialang.org/c/community),

4. ask here.

Frankly, sometimes asking here is the best approach. There is Julia code for a lot of stuff, but only a fraction of it is well-tested and maintained.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [August 14, 2017, 6:11pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/3 "2017-08-14T18:11:10Z")

</div>

Something like [Go doc](https://godoc.org/-/about) is probably what you’d like to see? It’s presumably there because, a), Google (their search tech isn’t always useless :)) , and b), completely standardized docs. If the future Pkg3 package manager tapped in to Documenter-generated documentation, something similar might be possible for Julia?

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 14, 2017, 7:57pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/4 "2017-08-14T19:57:20Z")

</div>

Yea, I don’t know how you could use [Julia Observer](https://juliaobserver.com) at this time to search for `alpha shapes` directly.

The only things that get searched right now are name, description & readme (and it already takes a while)

---

<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:** [August 15, 2017, 9:28am UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/5 "2017-08-15T09:28:26Z")

</div>

That could be amazing, looks really cool.

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 17, 2017, 9:05pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/6 "2017-08-17T21:05:42Z")

</div>

Ok. This is interesting.

So in order to do this, you would need to:

- have a copy of every repository you want searchable // do you include unregistered packages?
- use a Go server to easily search it (i.e. use [etsy’s hound](https://github.com/etsy/hound) library)

Does this seem like the right logic? Do you think you would find `alpha shapes` with it?

---

<div class="post-metadata">

**Author:** ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)\
**Post date:** [August 18, 2017, 12:51pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/7 "2017-08-18T12:51:56Z")

</div>

About a year ago I did this as a proof of concept for Genie:  
[http://genieframework.com/packages](http://genieframework.com/packages)

It’s on a small server and I haven’t spent time on it ever since. But if you don’t expect state of art UI or amazing performance, this still works.

Besides the packages from METADATA it also does a GitHub search for Julia packages.

It also comes with a REPL util package (that’s stuck at Julia v0.5 for now):  
[https://github.com/essenciary/PkgSearch.jl](https://github.com/essenciary/PkgSearch.jl)

---

<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:** [August 18, 2017, 1:27pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/8 "2017-08-18T13:27:52Z")

</div>

Nice. No hits for alpha shape, but otherwise I could quickly find some useful things.

---

<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:** [August 18, 2017, 1:33pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/9 "2017-08-18T13:33:18Z")

</div>

And yay, after a short while I found “ConcaveHulls.jl” - which does create exactly the shapes I am looking for. Bingo! That web search is awesome 🎉

---

<div class="post-metadata">

**Author:** ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)\
**Post date:** [August 18, 2017, 4:13pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/10 "2017-08-18T16:13:58Z")

</div>

Yeeee! I’m glad that it helped! 😁

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 20, 2017, 7:22pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/11 "2017-08-20T19:22:44Z")

</div>

This does the same thing as julia observer? // you just memoize the results for a speed boost

* * *

Just repeating, @mkborregaard, do you think a repo search tool would actually be that useful?

I can add it, but I wanted some more input on the use case && implementation decisions

// also, what search terms did you end up using to find “ConcaveHulls.jl”?

---

<div class="post-metadata">

**Author:** ![essenciary](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/essenciary/32/210469_2.png) [@essenciary](https://discourse.julialang.org/u/essenciary)\
**Post date:** [August 20, 2017, 9:30pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/12 "2017-08-20T21:30:06Z")

</div>

Yeah, I suppose - I built it before Julia observer existed.  
It searches a local DB, that is populated by a script, triggered by a cron job.

---

<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:** [August 20, 2017, 10:04pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/13 "2017-08-20T22:04:15Z")

</div>

I think it’d be really useful 🙂 I just searched “hull”.  
To me the main use case is knowing some cool technique I want to use and then working out whether someone implemented that in a Julia package.

---

<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:** [August 20, 2017, 10:07pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/14 "2017-08-20T22:07:19Z")

</div>

Try and check @pfitzseb 's new documentation search: [EMUlator - Lots of GSoC Progress](http://people.physik.hu-berlin.de/~pfitzseb/blogposts/lotsaprogress/)

Something that could do what that’s doing across all packages in the ecosystem would be supercool.

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 20, 2017, 11:04pm UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/15 "2017-08-20T23:04:02Z")

</div>

Can it find:

- `alpha shapes`

Or would you have to search:

- `alpha_shapes`

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [August 21, 2017, 12:44am UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/16 "2017-08-21T00:44:27Z")

</div>

> [@djsegal](#):
>
> you just memoize the results for a speed boost

For me, juliaobserver feels quite sluggish taking 3-4 seconds moving between links. Almost above my limit.

---

<div class="post-metadata">

**Author:** ![djsegal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/djsegal/32/13752_2.png) [@djsegal](https://discourse.julialang.org/u/djsegal)\
**Post date:** [August 21, 2017, 12:56am UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/17 "2017-08-21T00:56:53Z")

</div>

For searching or for everything?

* * *

Edit: this is not your first time raising this concern.

Could you let me know which country youre from and what browser you use?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [August 21, 2017, 1:10am UTC](https://discourse.julialang.org/t/how-does-one-find-a-julia-package-for-a-specific-use/5379/18 "2017-08-21T01:10:18Z")

</div>

Sweden with chromium. I have a 1000 MBit connection but this is probably a latency thing right?

The search is pretty ok. Here is a small recording: [https://media.giphy.com/media/xUNemJgKSxaMaLMTF6/giphy.gif](https://media.giphy.com/media/xUNemJgKSxaMaLMTF6/giphy.gif)

Sorry for bringing this off topic. We can continue somewhere else (in direct message perhaps) if you want me to make more measurements.
