

Julia Package Ecosystem Pulse - idunning
http://pkg.julialang.org/pulse.html

======
peatmoss
As primarily an R / stats user, the progress Julia has been making in terms of
libraries has been staggering. I have just enough historic experience with
Python to be similarly impressed if I place myself in that mindset.

I recently attended a Software Carpentry instructor training session and
witnessed a breakout between social scientists using R and natural sciences
people using Python. Julia will have "made it" when orgs like SWC can start
reasonably offering Julia sessions that draw both communities.

~~~
timClicks
That's an interesting statement, because Software Carpentry intentionally
positions itself as a follower rather than a leader in technology. That is,
Python & R workshops are given because of the wide adoption of Python & R.
Julia workshops would need to follow demand.

~~~
peatmoss
Agreed, that was my point if it wasn't clear. At the point where there are
enough people from natural sciences and social sciences looking to learn Julia
at an introductory SWC level, Julia will have made it.

------
Aleman360
I've been giving Julia a shot lately because I really like MATLAB syntax and
IJulia is awesome for analysis reports. There are a few warts though:

1\. I really don't like how the entire standard library is included in the
default namespace. I know this is how MATLAB does it, but my function names
are constantly colliding with built-in ones.

2\. The documentation is hard to navigate. I'm used to MSDN. Compared to that,
providing huge pages of functions with a sentence or two of prose and no
examples is not that helpful.

3\. Plotting tools need work. Gadfly produces beautiful output but
interactivity is weak (you can only zoom in on Y-axis) and it chokes when you
tell it to plot a lot of data. It should downsample based on display
resolution... I should be able to tell it to graph 100,000 points without
crashing my browser.

~~~
StefanKarpinski
Glad you're enjoying Julia :-)

> I really don't like how the entire standard library is included in the
> default namespace. I know this is how MATLAB does it, but my function names
> are constantly colliding with built-in ones.

This may not be obvious, but if you don't use a name from the standard
library, then you are free to use it yourself since bindings imported by
`using` are done lazily. For example:

    
    
        julia> e = "some message"
        "some message"
    
        julia> Base.e
        e = 2.7182818284590...
    
        julia> println(e)
        some message
    
        julia> Base.e
        e = 2.7182818284590...
    

On the other hand, if you don't assign to `e` then you can use the built-in
definition of `e` like so (in a new session):

    
    
        julia> e
        e = 2.7182818284590...
    

If you want to use both your own `e` and `Base.e` then you do need to qualify
`Base.e` – but this is exactly the same in any other language – if you use the
same name from two different namespaces, you have to qualify them. Making the
standard library namespace smaller or more granular wouldn't help in any way.

> The documentation is hard to navigate. I'm used to MSDN. Compared to that,
> providing huge pages of functions with a sentence or two of prose and no
> examples is not that helpful.

I definitely agree that our documentation isn't up to the standards of
Microsoft. Pull requests are always welcomed and are a lovely way to give
back. Over time the documentation will get better – I suspect we're already
doing fairly well given the age of the language.

> Plotting tools need work. Gadfly produces beautiful output but interactivity
> is weak (you can only zoom in on Y-axis) and it chokes when you tell it to
> plot a lot of data. It should downsample based on display resolution... I
> should be able to tell it to graph 100,000 points without crashing my
> browser.

I'm curious what plotting system does actually let you plot 100,000 points
without choking. Automatic downsampling would certainly be a nice advanced
feature, but the mature plotting systems I'm familiar with do not do this. For
example, neither R nor matplotlib do. Is there some Microsoft plotting library
that does?

~~~
tadlan
Bokeh for python does this

~~~
StefanKarpinski
Definitely a nice feature.

------
msravi
I've been using Julia 0.3 for algorithmic trading in production for about 3
months now, and the language is truly, astoundingly productive. The only thing
lacking for me at this point is true multithreading support (so I can fork off
a python thread from within julia) - I currently get around this by using a
socket interface to pass messages to python.

Edit: For anyone who's interested, an indicative problem is this:
[http://stackoverflow.com/questions/21113030/async-thread-
dea...](http://stackoverflow.com/questions/21113030/async-thread-deadlock-in-
julia-when-used-with-pycall)

~~~
tlmr
How would you compare this to using python with an easy JIT like numba?

~~~
curiouslearn
Whenever I have tried to use Numba, I find it is slower than standard python.
OTOH, Julia just works. Gives me the same performance as C.

------
idunning
I should point out the main Julia package listing is at
[http://pkg.julialang.org/](http://pkg.julialang.org/), this is the "executive
summary" page. At the bottom of this "Pulse" page are test results - we run
the tests for every package every night on both Julia stable (0.3) and
unstable (0.4) to make sure everything is still working nicely together.
Although, breakages on 0.4 just mean cool stuff is happening on master.

~~~
jjoonathan
You aren't kidding: Gadfly still takes 30 seconds to import on 0.3, but I hear
there's some sort of binary caching in 0.4 that should fix it.

~~~
ViralBShah
We should have static compilation in 0.4.

~~~
tlmr
Of modules or entire programs?

~~~
one-more-minute
I don't know exactly the current status or roadmap (if there is one), but the
idea is to have both eventually. Packages and files will be cached
automatically so that they load much more quickly, and it will be possible
(eventually) to output standalone executables.

------
jordigh
I was thinking the other day, before 2004, did we ever say "ecosystem" to
refer to a bunch of software packages in a particular domain? I have a feeling
that this book is what convinced us all to refer to our software collections
as an ecosystem, and we have forgotten that it was this book's idea:

[http://www.amazon.ca/Software-Ecosystem-Understanding-
Indisp...](http://www.amazon.ca/Software-Ecosystem-Understanding-
Indispensable-Technology/dp/0262633310)

The word is ubiquitous now, but if you think about it, it's a bit of a funny
way to refer to software, with allusions to predators, prey, producers,
consumers, and population dynamics.

~~~
johnmyleswhite
Looks like the growth curve starts before then:
[https://books.google.com/ngrams/graph?content=software+ecosy...](https://books.google.com/ngrams/graph?content=software+ecosystem&year_start=1990&year_end=2014&corpus=15&smoothing=3&share=&direct_url=t1%3B%2Csoftware%20ecosystem%3B%2Cc0)

~~~
jordigh
Interesting, although the smoothing can be a bit misleading. As I expected,
"open source" does not exist before 1998, when Eric Raymond, Bruce Perens, et
al coined the term:

[https://books.google.com/ngrams/graph?content=open+source&ca...](https://books.google.com/ngrams/graph?content=open+source&case_insensitive=on&year_start=1990&year_end=2008&corpus=15&smoothing=0&share=&direct_url=t4%3B%2Copen%20source%3B%2Cc0%3B%2Cs0%3B%3BOpen%20Source%3B%2Cc0%3B%3Bopen%20source%3B%2Cc0%3B%3BOpen%20source%3B%2Cc0)

However, with data smoothing, it makes it appear is if the term existed before
1998:

[https://books.google.com/ngrams/graph?content=open+source&ca...](https://books.google.com/ngrams/graph?content=open+source&case_insensitive=on&year_start=1990&year_end=2008&corpus=15&smoothing=3&share=&direct_url=t4%3B%2Copen%20source%3B%2Cc0%3B%2Cs0%3B%3BOpen%20Source%3B%2Cc0%3B%3Bopen%20source%3B%2Cc0%3B%3BOpen%20source%3B%2Cc0)

------
transfire
I've written a few small Julia programs and have found it to be a very
productive language, in most respects. Unfortunately its module system is
horrid. If you look at almost all Julia programs, they are essentially one big
file. Any secondary files just get included into a main file wholeclothe. It's
like working with archaic PHP all over again.

~~~
Fede_V
I agree with this. I think in large part this is because the developers
decided to try as much as possible to 'decouple' the concept of module from
the filesystem.

I think this is clever in the abstract, but in practice, it's a lot of
headache for very, very little gain and a lot of added confusion.

The main Julia team is a bunch of incredibly smart and dedicated guys who know
a lot more about designing language than I do, but I think this was a case of
trying to be too clever for your own good.

~~~
CyberDildonics
So what are the module systems you like and what do you like about them?

~~~
Fede_V
I really like Python - I think forcing people into using a certain directory
structure is nice, and it makes browsing code easy.

I think it's largely a matter of taste though! I just think that having a
directory layout that reflects the code structure makes it easy to browse
things at a glance, provided there's not too much magic in the __init__ files.

~~~
StefanKarpinski
That structure makes sense in class-based single-dispatch o.o. languages like
Python and Java. It does not make sense in a classless multiple dispatch
language like Julia.

------
phkahler
The stars seem to indicate popularity but not quality. They should have people
rate it 1-5 and give a histogram like other places do, it's much more
informative.

------
x43b
Any recommendations for books for a Matlab user looking to use Julia? Thanks

~~~
srparish
Not a book, but scipy had a two-part introduction to Julia talk that's worth
watching:

part 1:
[https://www.youtube.com/watch?v=vWkgEddb4-A](https://www.youtube.com/watch?v=vWkgEddb4-A)

part 2:
[https://www.youtube.com/watch?v=I3JH5Bg46yU](https://www.youtube.com/watch?v=I3JH5Bg46yU)

------
antman
Calling julia functions from python would be nice

~~~
ihnorton
All of the basic pieces are available here:

[https://github.com/JuliaLang/pyjulia](https://github.com/JuliaLang/pyjulia)

