Open Source

Scilab is a free and open source software for engineers & scientists, with a long history (first release in 1994) and a growing community (100 000 downloads every months worldwide).

License

Scilab is available under the GPL License. What does it means? You have the freedom to:

  • use the software for any purpose,
  • change the software to suit your needs,
  • share the software with your friends and neighbors, and
  • share the changes you make.

For more detail, you can refer to the quick guide on the GPL License.

How to distribute an application based on Scilab without violating the GPL License?

The toolbox mechanism of Scilab enables you to develop applications on top of Scilab, while applying your own license (proprietary or free).

Development

Scilab is mainly developed by the Scilab team within Dassault Systemes…
but your participation is welcome !

Scilab development tools are hosted on GitLab.

Our quality process is also based on:

Code quality

  • Coding style is defined for all languages used in Scilab (C, C++, Java, XML, Scilab, Makefiles, …)
  • Checkstyle is available for Java under Eclipse
  • Code must be documented (comments using Javadoc, Doygen, …)

As in the case of new functionality implementation, each modification in Scilab code is reviewed and accepted by another developer.

Tests

  • Unit tests (~1300): each new functionality is only integrated if it has a corresponding test and this test execution runs properly under all Scilab supported platforms,
  • Non-regression tests (~1900): for each bug fix, a test is written to ensure its proper correction and prevent any future regression,
  • Code coverage tools are used to check the tests quality.

Binary version generation

  • Each commit into Scilab GIT repository launches a continuous integration process based on GitLab CI,
  • Daily build of Scilab binary through a nightly build process executes all unitary tests and non-regression tests under all supported platforms,
  • Various compilers are supported (Visual Studio, Intel, GCC, Clang, …).

Community-suggested functionalities

Functionalities can be proposed by the community using the following process:

  • Specifications drafting: SEP (Scilab enhancement proposal),
  • Respect of Scilab coding style for development,
  • Writing of unitary tests are written,
  • Writing of corresponding help page.

The functionality is integrated only after being reviewed and validated by another developer.

Useful for development

Bug Reports:
GitLab issues

Dashboards:
Build chain/Compilation & Test Chain (GitLab CI) 
Coverage/quality analysis (Coverity)

Nightly builds:
Scilab binaries for active development branches (GitLab)

Code management:
Merge Request (GitLab)
Code repository (GitLab)