Yes, I and this idea are coming from Matlab.
Their File Exchange has been criticized here as of low quality.
So why do I wish something similar for Julia? Don’t we have with Julia the best ecosystem?
Yes, the Julia packages, registered or not, are regarded mostly of very good quality. But often of considerable complexity. For someone coming from a Matlab or similar background, even experienced, this can be a real gap, a complexity shock.
A Julia file exchange could fill this gap. It would allow sharing useful, but smaller and more accessible code. It could also be the place for the tools of the trade snippets, otherwise lost between discussions.
Could a Julia file exchange be hosted as a discourse section?
It would then be searchable, taggable, allowing the discussion of the quality, and showing alternatives.
What is the effort to set up such a new section? Anything else that would be needed?
Just put code on Github or Gitlab? Then it would be searchable, tagged, with issues discussing bugs and quality, show up on aggregators like JuliaObserver and JuliaHub that then present alternatives, automatically be able to install via the package manager, be versioned in a Project.toml file, … Putting raw scripts online without version control and not as part of the package management system seems like a definite step backwards IMO
Likewise, https://gist.github.com/ is great for shorter snippets, supports multiple files (just like the file exchange), and is version controlled to boot.
What sounds like second nature to programmers feels more like another hurdle of complexity for the average engineer.
In my big company, for example
IT departments set up the programming environment. (Yesterday I got the green light that Julia will be added)
Configuration managers set up SVN for new projects. The engineer then simply adds code.
So while I use VC on a daily basis, I have not yet submitted code to Github or Gitlab.
Matlab’s success is not only due to marketing but in its very low entry barrier. Yes, in Julia you can start as well with 1+1 or “Hello world!”. But then the complexity gap sets in. That’s the moment where you need simple structured help for the next step. The right command or snippet, not a package. Their File exchange is then often the place to find something “OK, nice, simple!”
In short:
Think of the average Joe, often looking for a coding idea, not a complete package.
Offer a gradual Julia learning experience (mind the gap…), snippets are your friend.
Let’s create a go-to place for Julia code below the package level.
@ToucheSirgist.github.com looks like a simple enough interface. It was not on my radar though.
Something Mathworks have achieved with their File exchange.
How could we promote JuliaGist and integrate it into discourse?
That’s the same for the Matlab File Exchange, isn’t it? It’s for finding packages, not for getting help.
“Matlab packages” in the Julia complexity and quality sense are rather their paid toolboxes.
File exchange is IMHO actually for “ideas”.
I would use Discourse or StackOverflow for this.
I use them both. But wouldn’t it be great to have a unified place under the Julia brand?
Kind of applied marketing, but also serving a large number of Julia novices.
Yes and no. Both File Exchange and Julia packages range from one-liners to complex and large pieces of software.
But perhaps the github package format lends itself to somewhat more carefully thought-through ideas, and require a bit more setup. This is a good thing, but a searchable place dedicated to informal throw-away scripts, ideas and examples, could perhaps be nice, if people want to use it.
Discourse isn’t really set up for this; it’d take significant customization and restructuring to make it feel natural and work well. We do have some long running threads about helpful/fun snippets here (like Fun One Liners) and others have thought about putting collections of snippets directly into a package (like Proposal for Tchotchke.jl – everything but the kitchen sink).
Another new option is in JuliaHub: we’re augmenting published packages with publicly shared Pluto notebooks. Now notebooks serve yet a different purpose, but I think they may fill the gap that you’re after.
GitHub’s gist is indeed a pretty good place to find snippets — there are over 6000 Julia snippets there
Whoa, here we go! So we should promote the gist and make it to the go-to place.
My discussions and probably other’s go like this: you formulate a question, are misunderstood, reformulate, discuss, refine, get or create a solution. We should encourage people to store tangible results there.
Notebooks are definitively worth collecting too, providing context close to the formulas.
The search then is already easy. Perusing related contributions would be nice but requires categories…
How could a “JuliaGist” integration in discourse work? A link, a search box (well…).
Maybe I am a bit obsessed with visibility. From my workplace, I know it counts.
FWIW, for me it would take less time to register on Github and post a gist than type in a 250-word response like yours above. YMMV.
The problem with code snippets is that they can go stale very quickly, usually in a few years.
This can be mitigated when they are part of a book which fixes Julia and package versions and then gets updated from time to time, but figuring out how to update random code snippets so that they work may be quite a hurdle for the users you imagine.
This is not a theoretical problem; users turn up here from time to time running into stale code on SO and similar places. So, for practical purposes, I would treat gists as very nearly ephemeral.
for me it would take less time to register on Github and post a gist than type in a 250-word response
The average Matlab user possibly would neither do one nor the other.
Do we want to win him for Julia?
Agree on the half-life of code snippets, especially for an evolving language like Julia.
Discourse is a very responsive place to ask questions, without it I would be lost.
A quite frequent wish on this forum: How can we better collect and present practical tips?
@Bardo here’s something different: this repo BeautifulAlgorithms.jl is a great place for Julia beginners who have a background in maths/cs and want to start with code that is easy to follow.
Extending this repo could be another good way to go towards what you’re suggesting: have a place for nice and simple snippets of code implementing some classical algorithms or methods and getting familiar with Julia in the process.
While getting contributors is important for the core language and the ecosystem, people who cannot manage making a gist on Github probably don’t qualify, so I am indifferent.
Mathworks is in a different position — they sell Matlab. I am not selling Julia.
I guess that most Matlab users are scientists and engineers who use Matlab to solve their computational problems following the recommended style and best practices for the tool they (or their company or community) have chosen. If for some reason they decide to expand their toolset with Julia language, they certainly have an intellectual potential and willingness to learn the recommended style and best practices for the new language. If they do not have willingness to learn something new, why on Earth would they start with Julia? [I am one of them.]
In general, I like Matlab (and other packages built on top of it), it is a great tool, but I would be really unhappy to see Julia “matlabized”… As pointed out a few times here, Julia and Matlab are products of different eras and not only the languages themeselves but also the styles of work differ. And it is good.
This varies a lot. For some (perhaps those who already use Julia as their main language), language adoption isn’t all that important. For others, a low number of users (not developers) is a problem in and of itself. I can rarely use Julia at work because our customers don’t use or know it.