I frequently leave the Main module in a library, but the code therein is either to test the pubic routines or to send two thousand volts through the user's keyboard should they try to run it.
A library is just a gambas project that gets "installed" in ~/.local/share/gambas3/lib when you make its' executable, and is thus available to
you when running one of your projects that refers to it (by adding it to the Libraries tab in the Project properties popup). The foremost purpose of a library is to share code across your projects. At runtime it also allows you to share data among your class objects by referring to the public library objects.
This .local constraint is a problem if you have multiple users on your machine and they all need to use it but this is surmountable.
Somewhat similarly, no matter what the help says, a Component is just another gambas project with a couple of extra pairs of underpants. A component has to be "installed" and when it is some stuff ends up in /usr/lib/gambas3 and some in /usr/share/gambas3. Thus making it usable by any of your local users. This is very handy, for example we have all our database access enclosed in a component called "phDB20" so all the users can run gambas programs accessing the database without the hassle of setting it up for each user.
Getting back to your original post though. It's not an OOP/procedural thing it's just a shared library (in the Unix shared library sense). So if arithmetic.add() isn't working are you giving it some biscuits to work with like arithmetic.add(2,2)?
Finally, just for fun try running /usr/lib/gambas3/gb.form.terminal.gambas in a console. See, even Benoit and the other gambas coders leaves their test routines hanging around!
regards
bruce
p.s. @Bruce S: re
http://gambaswiki.org/edit/doc/library?ht=library MY GAWD! It is so many years since I wrote that! It may not be entirely correct to the nTH level nowadays. The best bit is the precedence order for the location searches. It took me several megadays of reading the gbx(probably gbx2 at that stage!) C code to decipher what was actually happening.
Have you ever noticed that software is never advertised using the adjective "spreadable".