First, I will make my apologies. I am not saying below that anyone
needs to work smarter or harder, for I don't think I have ever come
across a community that is as smart or hardworking as the Julia
community, but perhaps in a slightly different way.
I have followed with interest the recent exchanges about Julia and
The thing that struck me as odd were the directions from Tim on how to
look at the coverage. I thought that shouldn't you just be able to
point me to the CI url with your coverage summaries? Shouldn't we all
have eyes on the same set of results from the same setup and run? It
has been my experience through the years that if you rely on
developers to run coverage you will be (mostly) disappointed. You can
have it a priority, there will be a flurry of activity, but then it
will gradually fall by the wayside. It absolutely needs to be part of
the CI system.
I am not familiar with Travis, but have used Jenkins quite a bit and
assumed that Travis to be similar to that, so I took my first look at
the Travis results for Julia. The only thing I see is a consecutive
list of builds and clicking into one of them brings up the build log
file. Is there more to the story that I am missing? Usually the log
file is the last thing I want to be rummaging around in to find out
what's wrong.
There is a huge difference when _everything_ is available as a
dynamically updated url: an overall status dashboard, performance
tracking history, current coverage of all the source code (where you
can click into the files and see line by line coverage), artifact
promotion, etc. Again, we can all look at the same thing at the same
time. I am not saying that Jenkins is the only solution. Perhaps all
of this can be done with Travis, but the effort level is probably the
same.
Searching back through the dev mailing list, I see that the opinion on
Jenkins is that "it seems to be enterprisey bloatware". I believe you
have missed the mark on that one. In my last company with ~12
developers, one buildmeister and one QA, we could not have moved the
code base (C++ and Python) from a University project to a commercial
endeavor without Jenkins, and if you ask _anyone_ on the team, their
opinion would be the same. Yes, it is work to get what you want but
you do not have to get it all at once and the work is highly leveraged.
On the issue of technical debt, are there unit tests for the C code
and the lisp front end code? It wasn't obvious to me where they might
live. Do you have coverage numbers for that code base? If not, what
are the plans here? Yes, coverage is a flawed metric for code
quality. But until the coverage numbers are in a non-embarrassing
range (approaching 80%) then it is senseless to have a debate about
it. Coverage is best had by unit tests written concurrently with the
code. I am not just saying that but have lived it.
So what is to be done? First I applaud Tim Holy's call to action in
want to consider a little coordination there in order to avoid a
smash bros. melee.) Second, invest more in Travis (if feasible) or
move and invest in Jenkins (there is a "FOSS Free" program for hosted
Third, encourage (or enforce) the habit of no code gets checked in
without coverage.
I would just like to end by saying that I am absolutely amazed at the
accomplishments of this group and congratulate you all for that. I
hope to be using Julia for many years to come and look forward to the
time when I can do that in production code.
Don