On 12/6/12 6:31 PM, "Jesse Glick" <jgl...@cloudbees.com> wrote:

>On 12/06/2012 08:03 PM, Dean Yu wrote:
>> I'm not a big fan of the shared plugin model. As a user, I've gotten
>> bitten way to many times by compatibility problems this causes.
>
>Then report those problems and drive them to get fixed please! We should
>be moving in the direction of more modularization and a slimmer core.

This is not a technical problem, but a usability problem. As a user, I may
not be aware of the interrelationships between plugins. I could upgrade a
leaf plugin, which requires a newer version of a base plugin, which breaks
compatibility with another leaf plugin. As a developer, I have the ability
to track this down and drive to get this fixed. As a user, all I know is
that I upgraded a plugin and things blew up. As a developer, I don't care
to create another instance of this experience if I am not in control of
all the leaf plugins.

As for "slimmer core", is there even agreement on what that means? You
could define core to mean:

- Remoting
- Scheduling
- Basic execution lifecycle
- Security
- UI

which implies that everything makes makes Jenkins a "CI Server" (test
result parsing, SCM support, etc.) should be factored out. If core is what
makes Jenkins a CI server, then I would take the position that core should
include more models of concept that are part of building software.

Lack of a central model for certain things leads to redundant code in
plugins or inconsistent behaviors. For example, Jenkins has a deep concept
of test results. It's easy to write a plugin to interpret test report
formats and to the end user, they are very consistent in their behavior
and features: historical trends, drill downs, and so forth. Jenkins does
not have a concept of code coverage, and you can see the disparate
behaviors of various code coverage report plugins because of this. The
same is true of SCM plugins and the types of functionality they support,
although this is complicated by the varying version control models that
are out there.

In summary, I think it's important to have proper conceptual models
available for a problem domain, that specific implementations can take
advantage of. That the model should be provided by a "core." But I'd love
to see a formal definition of what that core is.

  -- Dean

Reply via email to