Hey Bob, thank you for proposing this!

Jenkins core delivers JSON-lib under the net.sf package namespace,
consumes it itself, and provides it to many consuming plugins. It
looks like Andres Almiray is still maintaining JSON-lib and EZMorph
over at https://github.com/kordamp/json-lib and
https://github.com/kordamp/ezmorph, but these new versions use the
org.kordamp package namespace and depend on Commons Lang 3 — both of
which go against our goal to avoid increasing core API surface area by
exposing additional third-party libraries.

Ultimately core needs to be able to parse JSON itself, and the Java
Platform does not provide a built-in way to do this. Under the current
architecture, where all core dependencies are exposed to plugins, that
means we can't avoid exposing at least _one_ JSON library to plugins:
the one used by core itself, which is currently JSON-lib under the
net.sf package namespace. Even if we did want to migrate core and
plugins to a newer version of JSON-lib or a different JSON library
(and I'm not sure we do), we'd have to continue to support JSON-lib
under the net.sf package namespace during the transition period at the
very least.

So your idea of cleaning up our old fork of (net.sf-based) JSON-lib to
at least avoid Commons Lang 2 sounds practical indeed in the short to
medium-term. At least that will allow us to proceed with cleaning up
Commons Lang, even if the JSON mess remains — a problem which can be
dealt with separately, if we ever need to deal with it at all. Another
argument in favor of this proposal is that it is no worse than the
current status quo, but a strict improvement in that it decreases
core's API surface area — without any risk of regression. These
advantages are not insignificant when dealing with such an old
codebase.

I could support this plan with one minor tweak. As I wrote in another
thread recently, I think modernizing the build and CI system should be
done before any other changes, because it is difficult to review and
test the other changes without a working build and CI system. In part
due to the success of the Jenkins project, the bar for software
development has been raised throughout the industry such that a modern
build and CI system is now considered table stakes. Accordingly, I
think this should be done first, and then the other changes you have
mentioned. So I would kindly request that you first prepare a PR to
update the build to use the latest parent POM and Jenkinsfile. Without
commit access to the repository in question, you won't be able to test
Jenkinsfile changes on ci.jenkins.io, but I can assist with testing
these changes using my permissions. Here are some other core
components that can be used as a reference:

https://github.com/jenkinsci/bridge-method-injector
https://github.com/jenkinsci/core-annotation-processors
https://github.com/jenkinsci/extensibility-api
https://github.com/jenkinsci/extras-memory-monitor
https://github.com/jenkinsci/jelly
https://github.com/jenkinsci/jenkins-test-harness
https://github.com/jenkinsci/jenkins-test-harness-htmlunit
https://github.com/jenkinsci/lib-access-modifier
https://github.com/jenkinsci/lib-annotation-indexer
https://github.com/jenkinsci/lib-crypto-util
https://github.com/jenkinsci/lib-file-leak-detector
https://github.com/jenkinsci/lib-mock-javamail
https://github.com/jenkinsci/lib-process-utils
https://github.com/jenkinsci/lib-support-log-formatter
https://github.com/jenkinsci/lib-symbol-annotation
https://github.com/jenkinsci/lib-task-reactor
https://github.com/jenkinsci/lib-test-annotations
https://github.com/jenkinsci/lib-version-number
https://github.com/jenkinsci/remoting
https://github.com/jenkinsci/stapler
https://github.com/jenkinsci/winstone

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/CAFwNDjpYPes0AZO-picQnRuGL9_PeASAcCK9h51LFyybG2bv6g%40mail.gmail.com.

Reply via email to