The following article reviews software performing symbolic mathematical computations, focusing on Maxima and SageMath:

- Symbolic mathematics on Linux (LWN.net, January 4, 2017 by Lee Phillips).

The worth-reading article describes features of these (and other) programs based on free licenses, hence well suited for scientific purposes (proprietary alternative such as Wolfram Mathematica, instead, necessarily prevent users from being in control and to properly test their computations).

When the author mentions *Linux*, he actually refers to
operating systems that can operate above the Linux kernel,
such as GNU distributions (Maxima is already available also on
Android distributions). However, the kernel itself is not
relevant in this context and, say, a GNU/FreeBSD user (running
the FreeBSD kernel instead) would witness the same
experience. Furthermore, the programs described can run on
completely different operating systems, too.

Maxima has a long history, it is well documented and it is coded using GNU Common Lisp. Over the years, an extensive number of features have been added. While the terminal based interface is useful for quick computations, WxMaxima provides a friendly graphical interface well suited also for long projects (other graphical interfaces are available as well). Maxima gives an interactive environment that takes single expressions and evaluates them, allowing piece-wise executions of a program. This feature is especially convenient for symbolic mathematics computations, as it resembles more closely a pencil-and-paper calculation.

SageMath is also a powerful resource. Based on Python, it integrates together different software that have been written over the years. For example, among many others, Maxima itself and SymPy can be used for symbolic mathematics, and Numpy or Octave for numerical computations. It can run both from a terminal, or from an interactive and convenient Python notebook interface to be loaded from a browser. SageMath allows the enormous amount of components to interact well together in a single interface and provides new features, too. This makes it a complete tool to perform symbolic and numerical computations for researchers, students and teachers.

Beware of the large amount of space required for SageMath installation, a few GB, and of the numerous install-dependencies. These cumbersome requirements may make it more convenient to favor individual components, if only few are needed. For example, the SymPy module alone can also be launched from an interactive Python notebook similarly to SageMath, allowing several symbolic computations (and, of course, can be trivially integrated within larger Python projects).

For Debian users, as the article is published,
the *sagemath* package is available on the official
Stretch and Unstable repositories. Packaging it was certainly
a non-trivial task, considering its ~180
build-dependencies.