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

I have a more general question about how people are intended to discover julia packages. 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 , 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?

2 Likes

I usually

  1. search on Github,

  2. look in curated list by svaksha,

  3. check announcements,

  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.

2 Likes

Something like Go doc 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?

2 Likes

Yea, I don’t know how you could use Julia Observer 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)

1 Like

That could be amazing, looks really cool.

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 library)

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

About a year ago I did this as a proof of concept for Genie:
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

4 Likes

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

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 :tada:

2 Likes

Yeeee! I’m glad that it helped! :grin:

1 Like

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”?

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.

I think it’d be really useful :slight_smile: 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.

Try and check @pfitzseb 's new documentation search: EMUlator - Lots of GSoC Progress

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

1 Like

Can it find:

  • alpha shapes

Or would you have to search:

  • alpha_shapes

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

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?

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

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