Dear Firedrakers,


This is just a reminder that Firedrake is about to transition from Python 2.7 to Python 3. The core developers will be undertaking the work next week.


What does this mean for Firedrake users?

  1. You'll need to reinstall Firedrake. The install mechanism won't be changing, and we'll send another email telling you when to update.
  2. You may need to make a few changes in your own code that uses Firedrake in order to be Python 3 compatible. These changes are typically very small and our upgrade email will provide pointers to documentation which helps.

Why is this happening?
Python 2.7 was released in 2010 and is effectively end of life. The latest release of iPython no longer supports Python 2.7, so we took that as our cue that 2.7 is really dead and we need to move. There are new features of recent Pythons that we'll also get to use. The first one that some Firedrake users will notice is that we'll switch from the third party virtualenv to Python 3's inbuilt venv. This will get rid of the irritating and confusing need to run the install script twice on some new computers. (At a lighter level, you can also now use all the Unicode letters as variable names, so if you want to write your test functions as ö and ø, you now can!)

Why aren't we supporting both Python 2.7 and 3?
While it is possible to write code which is compatible with both versions, this would just be a brief delaying of the inevitable demise of Python 2.7. More importantly, it would create a situation where users and developers were running on significantly different platforms with different bugs. This is a recipe for confusion and additional work for both users and developers. We're therefore going to swap in one clean move.

Regards,

David