A.L.E.C wrote:
We use Framework already in two external programs. I put files under lib/Roundcube there and modified autoloader
[...]
So, now we're able to create a separate package with Roundcube Framework (with location in e.g. /usr/share/php/Roundcube) and not duplicate the code for every dependent project. What do you think about doing the same in Roundcube? If so, what should we do with clisetup.php, iniset.php, rcube_bc.inc and rcmail.php. Move them to program/lib/ (or program/) and get rid of program/include/ directory?
What about moving framework classes/files to program/framework and keep the Roundcubemail app related classes and files in program/include?
I think both, the framework and the include directory, should have an iniset.php (you can rename it to bootstrap.php if you want) which does the necessary setup to use either the framework or the Roundcube application. program/include/iniset.php would most likely include program/framework/iniset.php to effectively load the framework to be used within the application.
clisetup.php is part of the application but maybe the included functions could be moved to framework/rcube_cli.class
rcube_bc.inc should remain in program/include and help keeping up backwards compatibility for the numerous plugins for Roundcube. Whoever wants to use the framework only should not use deprecated function calls.
~Thomas