ATOMS for developers
- How can I have my module included to ATOMS?
- What are the technical expectations ?
- What kind of restrictions is there?
- Will you modify my module?
- I have just a Scilab function/macro and I would like to have it into ATOMS
- I have some modules/toolboxes on the toolboxes center, what will happen to them?
- ATOMS admin created a new version of my module
- From 5.3 to 5.4 family
- Preparing for Scilab 6
- Guidelines while submitting a module
ATOMS is the packaging system of Scilab external modules. Through this tool, it is trivial to install prebuilt Scilab modules.
The idea is similar to the one developed by most of the Linux/BSD distributions. With just one function, a module can be installed including its dependencies.
Most ATOMS modules are available for all supported Scilab platforms - Microsoft Windows, GNU/Linux & Mac OS X. Modules which only contains Scilab macros are available on non-supported operating system.
Some modules may not work on all platforms, however, as they may depend on some libraries only available on some of them. Each module pages lists the platforms on which the module is available.
How to use ATOMS?
Use ATOMS GUI
Scilab includes a GUI to facilitate the use of ATOMS. This GUI is also available through the Scilab menu "Applications".
Search of a module
The function atomsSearch("keywords") allows the search of available modules.
-->atomsSearch("network") ans = !lolimot A fast neural network - LOcal LInear MOdel Tree ! ! ! !metanet Graph and Network toolbox !
The first column is the name of the module.
Install a module
The function atomsInstall("name_of_the_module") allows to install a Scilab module packaged in ATOMS.
On the next start of Scilab, the module will be loaded automatically. To load it manually, call:
For more details, please read atomsInstall
Install a module for all users or for a single user
In some corporate environments, a typical user has no admin rights. But it is still possible to install modules, because Scilab can install them without admin rights.
It is possible to install a module in "user" mode, with the "user" option of the atomsInstall function. The module is then available only for the current user, and not for others.
-->atomsInstall("NISP","user") NISP (2.4.1-1) will be installed in the 'user' section specfun (0.4.1-1) will be installed in the 'user' section apifun (0.4.1-1) will be installed in the 'user' section helptbx (0.4-1) will be installed in the 'user' section Installing NISP (2.4.1-1) ... success Installing specfun (0.4.1-1) ... success Installing apifun (0.4.1-1) ... success Installing helptbx (0.4-1) ... success ans = !NISP 2.4.1-1 user SCIHOME\atoms\NISP\2.4.1-1 I ! !specfun 0.4.1-1 user SCIHOME\atoms\specfun\0.4.1-1 A ! !apifun 0.4.1-1 user SCIHOME\atoms\apifun\0.4.1-1 A ! !helptbx 0.4-1 user SCIHOME\atoms\helptbx\0.4-1 A !
It is also possible to run Scilab in administrator mode, so that we can install Scilab for all the users of the computer. This way, any user who logs on the computer will have the external Scilab module installed. In order to run Scilab in admin mode on Windows, we Shift-Right Click on Scilab's icon, and, if necessary, enter the admin login and password.
In the following session, we have launched Scilab in admin mode and installed the NISP module for Scilab. This corresponds to the "allusers" option of atomsInstall.
-->atomsInstall("NISP") NISP (2.4.1-1) will be installed in the 'allusers' section specfun (0.4.1-1) will be installed in the 'allusers' section apifun (0.4.1-1) will be installed in the 'allusers' section helptbx (0.4-1) will be installed in the 'allusers' section Installing NISP (2.4.1-1) ... success Installing specfun (0.4.1-1) ... success Installing apifun (0.4.1-1) ... success Installing helptbx (0.4-1) ... success ans = !NISP 2.4.1-1 allusers SCI\contrib\NISP\2.4.1-1 I ! !specfun 0.4.1-1 allusers SCI\contrib\specfun\0.4.1-1 A ! !apifun 0.4.1-1 allusers SCI\contrib\apifun\0.4.1-1 A ! !helptbx 0.4-1 allusers SCI\contrib\helptbx\0.4-1 A !
Remove a module
The function atomsRemove("name_of_the_module") allows to uninstall a Scilab module packaged in ATOMS.
For more details, please read atomsRemove
Configure the network proxy
If your internet configuration uses a proxy, it might be necessary to configure the proxy settings, so that Scilab can download the required files. For example, we may use the following settings, with customized values :
atomsSetConfig("Verbose","True") atomsSetConfig("useProxy","True") atomsSetConfig("proxyHost","myProxyHost") atomsSetConfig("proxyPort","myProxyPort") atomsSetConfig("proxyUser","myUserName") atomsSetConfig("proxyPassword","myPassword")
For more details, see the Scilab documentation on atomsSetConfig
ATOMS for developers
How can I have my module included to ATOMS?
Your steps are:
Develop your toolbox following the example of toolbox_skeleton
Register on http://atoms.scilab.org/login
Fill the form on http://atoms.scilab.org/add/
Once it is done, we will process your module shortly (generation of binary versions for available platforms, ...).
Note : if you are posting your sources, don't forget to set its class as "sources of a valid Scilab package".
When you receive a feedback from us, your module will be available for all users.
Once it has been validated, to take this change into account in your local Scilab, update your package list by running:
For more details, please read Voir atomsSystemUpdate
What are the technical expectations ?
To make an ATOMS module from a contribution, we need several things:
follow the module structure of toolbox_skeleton. If your module only contains macros, sci_gateway and src folders are not necessary. However, a .start and a .quit are mandatory in etc folder (to load the module), as well as a builder.sce (to build the module) and DESCRIPTION/DESCRIPTION-FUNCTIONS files (formatted in the same way as toolbox_skeleton).
- it is not mandatory but help pages and tests are most welcome (and may become mandatory in the next releases, so please do not skip them, you will also help your users this way).
- features must be available as functions (.sci with a function in it and not .sce calling straight the feature)
Scilab distribution is providing a skeleton/template for Scilab modules: SCI/contrib/toolbox_skeleton or on the ATOMS website
If you work depends on a third party native library, let us know and please provide as much as information as possible. If you don't want your module to be packaged under a certain OS, please let us know after posting it.
What kind of restrictions is there?
There is no restriction on the kind of modules which are accepted into ATOMS as long as they provide a new Scilab feature (whatever it is).
Since we need to build the module, sources must be available. However, there is no restriction on the license of a module (even if we prefer free licenses).
In any case, do not submit binary files, as they are often not working on different OS or configurations.
Will you modify my module?
Sometimes, we have to patch to make sure that the module builds and runs perfectly. We usually send back the patches for upstream incorporation. Those change are usually :
- wrapping your module in a folder named "yourmodulename"
- adding a yourmodulename.quit in etc folder
- fixing typo/case sensitive problems for building/loading the module (mostly in builder.sce, yourmodulename.start, yourmodulename.quit)
Consider those points before submitting a module, as they are quickly fixed by you and often make us lose a lot of time, which could be used improving ATOMS and fixing its bugs!
I have just a Scilab function/macro and I would like to have it into ATOMS
No problem, just submit it.
I have some modules/toolboxes on the toolboxes center, what will happen to them?
If your work is available on Scilab Toolboxes Center, please migrate it to ATOMS website. Even if you do not want to have your module available in Scilab through ATOMS, please migrate it.
Note : the contribution website ("Scilab Toolboxes Center" not ATOMS website) is now deprecated and is only kept for historic reasons.
ATOMS admin created a new version of my module
This is usually because you set your module as available for Scilab greater or equal to 5.3.0. In order to package it for Scilab 5.4, we need to create a new module, with the same archive and the same code, but in a different version number than 5.3 (you can notice it is set as greater or equal to 5.4). This is mainly due to some change we will bring in Scilab 5.4 way of managing ATOMS modules, in order to make it more precise. Another change like this may appear for Scilab 6.0.
If you package your modules on your own, please note that a working compiled module for 5.3.0 may not be functional for 5.4.x, especially if you are not only dealing with macros but also with C, C++ or Fortran.
From 5.3 to 5.4 family
Due to a change in the compilers for the 5.4 family on windows, modules indicated as available for Scilab >= 5.3 or >= 5.2 might not be available in 5.4. Packagers should make another version of their module setting it as available for >= 5.4.
Preparing for Scilab 6
In Scilab 6, stack-c.h won't be available anymore. It is currently set as deprecated, and should be replaced by api_scilab.h.
Guidelines while submitting a module
- clean your package : do not include binary files (.bin, .lib, .dif, .o, .obj files).
create tests for your package : this way, using atomsTest, we can check much quickier if it works on every platform.
- name you .zip or .tar.gz as nameoftoolbox-x.x-src.zip or nameoftoolbox-x.x-src.tar.gz, where x.x represent the version number.
- create a folder, in the zip/tar.gz file, named nameoftoolbox, in which you put everything.
- while submitting, declare it as sources of a package, not as simple file, if you want it to be compiled by our compilation chain.
- make it coherent : if you named it with special uppercases on atoms, name it with special uppercases in the folders names and in the builders files, at least.
be sure to have a yourtoolbox.start AND yourtoolbox.quit, and that they respect the uppercases of your module. It should match the url of your module, for example http://atoms.scilab.org/toolboxes/Cardiovascular will have a Cardiovascular.start, Cardiovascular.quit, and a TOOLBOX_NAME Cardiovascular, and not CardioVascular.