I’ll add my $0.02 here, FWIW: I’ve been keeping an eye on Julia for some years now, though after taking a look at it quite early on (not sure which version but it was 0.4 or earlier), I saw that for my immediate purposes it wasn’t likely ready/stable enough so I let it go for awhile. My interest picked up again around the 0.6 release and I now see Julia as potentially very interesting, and (dare I use the somewhat cliched term) disruptive, though for its larger eventual audience not likely so for a few more years.
I think it’s important to think about a target audience for Julia not only in terms of what domains may benefit but also which types of users will benefit at any given stage of the language’s development. Pre-1.0 (or whatever its equivalent is in a project not following semver), it would seem to me that the target audience should include only users of the ‘consenting adults’ kind, in that they are fully aware that the syntax is unstable and that code they work on in today’s version will likely require a fair bit of updating to continue working in tomorrow’s; that many of the niceties of a mature language like debuggers and a rich package ecosystem where most packages themselves are stable will arrive someday, should the language become popular, and so on.
But this doesn’t happen overnight, of course. For an open source project like Julia early adopters (and what I’ll call late-early adopters such as myself) have to remember that the language (and packages) development is largely a volunteer effort and as such it is necessary to exercise patience, which includes not demanding that developers always hit milestones, bugs may appear to languish for longer than one would hope, etc.
What I’m getting at is that I’ve seen many reports of “I tried to introduce Julia in my classroom/workplace and it was not 100% successful” and each time I wonder how many potential future users of Julia were turned off by the experience and now will be “once bitten, twice shy” when it comes to the language. I’m not trying to tell anyone what to do but I’ll suggest that if this happens then you might have misjudged the target audience for your tutorial/class resulting not only in something counterproductive for yourself but potentially also for the growth of the community and the speed of the language’s adoption, which I think it’s likely that many if not most on this form are hoping for.
Again, not trying to judge anyone, just offering some thoughts which I’ll add are somewhat informed by experience: A younger more naive version of myself was also very excited by a new language called Python, somewhere between 1.0 and 2.0 IIRC (I remember being quite excited by the list comprehensions that were added in 2.0). A few years later in my first job after undergrad I found myself in a MATLAB shop where, despite not being formally trained in the area I was aghast at the many crimes against software engineering that I witnessed. No amount of version control was even being used whatsoever (I pushed to use CVS which was basically the best available open source solution at the time)! MATLAB was also particularly ill-suited to being a general-purpose language back then and what would eventually become NumPy (I believe at that point it was still called Numeric) was coming on the scene. Being a young impetuous know-it-all sort I proceeded to rewrite much of my team’s MATLAB scripts in Python. In the end I think the product was a significant improvement over the pre-existing MATLAB code, though now as a more mature (hopefully!) engineering manager I look back and wonder whether I could truly justify the ROI. In particular I think my colleagues who were stuck with my language decisions probably found it frustrating to have to deal with the language changes that were happening while this migration was happening, all the while thinking “I already know MATLAB and it works well enough, why is this guy wasting our time with this Python nonsense?”.
I regret nothing (that’s never a good policy anyway), and think in the end it probably resulted in both better tools for my group and a number of engineers who got an early start on Python/NumPy which I hope has served them in their subsequent careers. But I had several years of working closely with them in which to help nurture this.
So there are parallels I can see with Julia – it feels as though Julia is at a similar stage to Python 1.x + early NumPy (not sure what version number to assign, but pre-breakout into popular use), and those of us who are excited about the potential of Julia should consider how we expend our finite time and effort accordingly. I don’t want to tell others what to do but for myself in my current role that means limiting my Julia ‘evangelism’ to individuals who I feel are able to properly grasp the maturity of the language and correctly judge its appropriate uses; becoming active in this community and (slowly) getting up to speed on using Julia for personal things; and where I have the opportunity to look ahead towards planning how future projects at work will be executed, keeping Julia in mind while knowing that it is difficult to extrapolate exactly how mature it will be very far into the future.
Whew. That was more like $0.20 and thanks for reading this far if you did!
tl;dr: Know your audience, not just in terms of their domain knowledge but whether their immediate use of Julia would be appropriate in the context they would be using it. If it wouldn’t, consider spending the time contributing more directly to the community, in any one of the many ways that is possible.