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.