On Thu, Aug 6, 2015 at 12:25 PM, Thomas Mueller <[email protected]> wrote:
> Bertrand wrote:
>>...in Sling we are only testing very few combinations,
>>actually just one combination per release.
>
> Good to know! I still don't quite understand why you have many projects
> then... what is the driver to create smaller and smaller projects?...

To give two concrete examples:

https://issues.apache.org/jira/browse/SLING-3529 - the Sling launcher
contains code to detect if the current instance is a fresh one or an
upgraded one. There's currently no way to use just that startup mode
detection feature without using the full launcher, so we need to
extract it to make both things (launcher and startup mode detection)
reusable independently, when running Sling with other launchers like
Karaf for example.

https://issues.apache.org/jira/browse/SLING-4694 - Sling has a module
to detect media types based on filenames, and someone needed an
extension to also take the file contents into account. Creating that
extension in a separate module means that no changes were done to the
existing commons.mime module (which is a good indication of its
stability), and we don't bloat Sling with stuff that people might not
need - they can just decide to use the new bundle or not. Clean
separation between what's stable and what's in flux.

When I started with OSGi I was kind of afraid of having too many small
modules, as it felt harder to manage. We still ended up with more than
150 different modules released at
http://sling.apache.org/downloads.cgi, so having 100, 200 or 300 or
them does not matter much, and the benefits are obvious to in terms of
clearly differentiating what's in flux and what's stable.

I'm not saying Oak should have 300 modules...but maybe more than one ;-)

On Thu, Aug 6, 2015 at 1:37 PM, Davide Giannella <[email protected]> wrote:
> ...I always struggle navigating through the Sling codebase but indeed I
> never really dedicated that much time....

In a highly modular system you might need someone (or a debugger) to
help you find out where to look for something, but once you find that
the scope is much much smaller and it's much easier to make sure you
don't break things that you don't understand. IMO for a long-lived
project that's a huge benefit - and I always take
http://httpd.apache.org/ as a great example for that - very small
core, everything is a module.

-Bertrand

Reply via email to