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
