[Gambas-user] User components in Gambas 3

Benoît Minisini gambas at ...1...
Tue Apr 20 22:40:02 CEST 2010


Hi,

I post this mail on both mailing-lists: please answer on the developer 
mailing-list if possible, as this is related to the development version!

I'm currently thinking about how user components should work in Gambas 3, as I 
dislike the way it was designed in Gambas 2.

In Gambas 2, user components work the same way as normal components made with 
Gambas, except that they are symbolic located in the home directory that point 
at the real executables.

That design lead to many problems: you can't make packages of user components 
easily, and if the real executable moves, the symbolic link is broken while 
the IDE think the component is there.

So, for Gambas 3, I propose a different design:

- There are no "user" components anymore.

- Instead, a project will be able to depend on other projects.

- The list of associated projects will be defined in the IDE project option 
dialog.

- That list will be just a list of project *names*.

- At design time, these project will be search inside one or more directories 
that will be defined as a IDE global option.

- At run time, the associated projects will be searched by using the $PATH 
environmental variable, as any other executables.

Consequently:

- The IDE global option will tell where you store the projects you want to use 
as components.

- These projects will be packaged separately and installed like any other 
Gambas projects.

- They should have a special name, because they are not real executables, but 
some sort of "Gambas" libraries instead.

- So the project executables should be in the $PATH. And so the main project 
will find them easily.

- When creating the main project packages, it will be easy to add a dependency 
on the associated project packages.

I need to find a good term for these "associated" projects. I'd like to find 
something different than "component". 

Even if internally the interpreter will use the same code to load them, I want 
the user to understand easily that they do not work the same way.

Maybe "library" would be a good term...

What do you think about the new design?

-- 
Benoît Minisini




More information about the User mailing list