Fōrmulæ is an open source framework for collaborative, symbolic computation


Examples & screenshots »

Tutorial »

How is knowledge abstracted ?

Everything is defined in terms of expressions. Expressions can be visualized, edited and transformed.


How does this project work ?

The are two main kind of actors in this project:

Knowledge implementers: They are researchers, programmers and enthusiasts that define and abstract knowledge. Programmers implement these knowledge in form of code. They provide these code in units called "expression packages". For example, there could be packages for arithmetic, equation solving, programming, plotting curves, etc.

Final users. They use the developed packages. They are researchers, students or even programmers.

Unlike common open source projects, where the collaborators belong to a closed team, in this project you do not have to be part of a central team, you do not even have to be a registered user in order to develop expression packages.

Modular knowledge

Expression packages are written by different persons, at different times, but when they are joined, they are able to cooperatively work with each other.

How can expression packages be used for ?

They can be used in several ways. The following are a few examples:

  • You can use it as a computer algebra system (CAS), much like Mathematica, Mathlab, Maple, etc. (trademarks of their respective owners). Unlike those, you can select and use the packages you need, and you don´t have functionality you will never use.
  • It can be used as a graphics program, in which can draw formulae, diagrams, functions plots, charts etc. and save or export them to other programs.
  • It can be used as a tool for teaching. i.e., for teaching how to program, it can help to build programming structures either by flowchart or indented code. They do not only look good, they actually run.
  • It can be used as a scripting programming language. These scripts are language and platform independent.
  • If you are a programmer, you can use it to dynamically ask the user to introduce formulae and expressions required by your programs. It could be used by a payroll program in order to define (out of code) how the payroll is calculated,
  • Suppose you research on computer sciences, mathematics, numerical algorithms, etc. You can publish your work with an expression package containing the results of your research in order to other persons could immediately use it.