Bill Hart
unread,Apr 13, 2022, 3:08:26 PM4/13/22Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to flint-devel, William Stein
Dear all,
As many of you know, I previously announced that I would be stepping
down as maintainer of Flint. What I did not announce at the time is
that this will be happening in about August this year (approximately 4
months from now).
My understanding is that Dan Schultz is planning on a career change as
well, not long after I leave.
Technically, Fredrik Johansson will take over as maintainer. However
one doesn't need too much intelligence to see that the amount of time
he has for this in addition to all the other projects he maintains is
asymptotically zero.
I should make some parting comments, which may be useful to the next
generation of computer algebraists.
Firstly, I am stepping down because I have not published since 2017.
University hiring is centralised in most places now and
senior/permanent positions always require evidence of a recent
research track record at a high level.
I have always been a pioneer. I developed Flint because of perceived
shortcomings in Open Source computer algebra software in 2006, and I
developed Nemo because in 2010 I believed our industry should take
advantage of Jit compilation for generics and other advantages of
modern, general purpose languages that came about as a result of
breakthroughs in type theory.
In 2015 I began to recognise a shift towards the cloud and towards
GPU/TPU, machine learning and exascale technologies. With few
exceptions, our industry has not adapted.
However, in the mean time I find that my career has evolved into "lab
assistant" and it is a universal fact everywhere that lab assistants
are not encouraged to be pioneers!
I was able to be a pioneer for a while longer with my contributions to
the Oscar project, especially in the early phases of that project, but
that is now long since up and running and I found myself looking for
something new to pioneer. I very much wanted to get back to
mathematical research or at least to work on something to a ridiculous
level of obsessive detail that one cannot afford as Research Software
Engineer or as a lab assistant. I needed tenure which I did not have.
(Young researchers take note!)
I made some last ditched attempts to step back into research
mathematics, but this hasn't been successful. University HR
departments either blocked my application or in other cases the lack
of a recent research track record prevented me from applying, even
where individual academics have the will.
I am voluntarily stepping down, not only as Flint maintainer, but
leaving my career. As such, I believe I am entitled to some parting
comments about Flint and the future of computer algebra which might
inspire a younger person to take up the cause (though hopefully one
who has tenure)!!
I strongly believe that it is clear that Cloud deployment of software
is the future. In fact, based on job advertisements the world over, I
would say that it is the present reality (who would have guessed that
Prof. William Stein was right about the future twice)!
We should be (or rather should have been) deploying to the Azure
Cloud, AWS, Google Cloud Platform or all of the above.
I still believe a successor to Flint should have generics based on Jit
compilation, but I might choose a Jit compiler with less latency than
Julia and more web focused if I were planning a successor to
Flint/Nemo today. (However it's difficult to identify a language with
sufficient mindshare, with the superior features of Julia, but a Jit
compiler of this kind. Some language development might be in order.)
In the case of the Flint library itself, Dan Schultz has convinced me
that (some sane subset of) C++ is a requirement for a successor to
Flint. Flint deals poorly with exceptions and cleaning up when a
computer algebra system hits an exception in the Flint subsystem. This
can only be effectively handled with C++ exception handling.
[It's also a disadvantage to Flint that it doesn't have a C++ wrapper
based on modern C++, but this is a separate issue.]
Fredrik Johansson has convinced me that much of Flint could be handled
generically. He has recently started a "generics in C" library which I
fully expect will be a massive success. Flint is over 600,000 lines of
code, with a further 200,000 lines in Arb which Fredrik has built on
top of Flint, and so on. Yet a good deal of Flint is handled
effectively using generic algorithms implemented for specific rings.
The savings with Fredrik's approach in development time and lines of
code for future developers is obvious.
I continue to maintain that GPU-like devices scale better than CPUs at
the silicon level going forward, and that machine learning and AI are
super important for the future (just look at Software Engineering
positions in industry in the UK to see just how important this
currently is).
However, I don't see any obvious applications of AI to a library like
Flint or a successor of Flint, and as for GPUs one can only write
kernels for highly performance dependent operations based on current
GPU technology where possible. (We recently introduced BLAS into Flint
ostensibly for this purpose.)
Exascale technology is also becoming increasingly important, and
academic research in our field has avoided this direction because of
the high barrier to entry in terms of required expertise and cost of
computing. Areas of pure mathematics, like algebra, simply don't have
the funding or resources to make inroads in this direction. I believe
this is a significant risk for computer algebra going forward, and I
don't have any easy solutions, other than to pursue funded research
projects in this direction where possible.
Social media is also hugely important, and we are not doing enough to
promote computer algebra projects publicly using those tools. There is
almost a complete disconnect with the next generation as a result.
Feel free to blog about (if you are old enough to know what a blog
is), write tweets on and make TikTok videos on what I've written here!
(But I draw the line at Beat Sabre!)
As for computer algebra more generally, there is a serious problem
with axiomatisation of the field. One would expect this to be a focus
of academics, but the modern world places such demands on the lives of
academics that nobody has time to place the field on a solid
theoretical footing. Given the increasing difficulty in hiring
talented young people due to the aggressive hiring practices of modern
technology companies, this problem is becoming more and more
pronounced. I personally believe it is an existential threat to the
field of computer algebra.
Anyway, those are my outgoing comments, and I hope they prove useful to someone.
Obviously my comments are my own and do not reflect the opinions of my
employer, my colleagues or even my Flint coworkers (except where
noted). I hope the comments will prove valuable to younger computer
algebraists looking for a challenge and especially those who want to
write the successor to Flint.
Thanks to everyone who supported me and the Flint project over the
years. I will be involved in one final Flint release and after that I
will hand the reins over to Fredrik. I hope everyone will continue to
support him in the direction he takes the project over the coming
years to the extent that he finds the time.
As of recently I believe Flint is used in Sage, Nemo, Hecke, Oscar,
Arb (and in that context in Mathematica), Calcium, Antic, E-Antic,
Singular, Macaulay 2, many individual research projects, and if I
understand correctly is currently under consideration for more
widespread use in Polymake. Flint has been and continues to be
enormously successful, but now is as good a time as any for future
pioneers to either get on board or to think about what features a
successor would have. I hope I have given some worthwhile hints above.
All the best,
Bill Hart.