As you say, for compatibility reasons I don't think we can remove them. But that "brand-new way of doing frontend development" that I mentioned touches a related space. It borrows a lot of tooling from NodeJS, such as writing JavaScript in CommonJS modules, using JavaScript template libraries like handlebar, etc. My hope is that that provides a different way of building pages that require high degree of interactivity.
The workflow stage view <http://softwaretest.jp/files/2015/01/CLO-DS-Enterprise-chart.png> is built using this technology. I'll let Tom chime in to talk more about this. 2015-09-24 22:52 GMT-07:00 cactusman <[email protected]>: > I generally agree, but what do you think for jelly and stapler? > > I hope to replace that to make plugin more easily. > > But I understand difficult to seamless upgrade. > > > 2015-09-25 13:53 GMT+09:00 Kohsuke Kawaguchi <[email protected]>: > >> Jenkins is over 10 years old, and it came quite a long way. I still >> remember the first few plugins that I wrote by myself, and now we have >> close to 1100 plugins. What's started as a hobby project that had run under >> my desk today boasts more than 100K installations driving half a >> million-ish build machines. >> >> We collectively came quite a long way. When I started Jenkins, having a >> server building & testing on every commit was a cutting-edge practice. So >> are automatically capturing changelogs and analysing test reports. But now, >> those are tablestakes, and the frontier of automation has moved further. >> Now we are talking about building pipelines & workflows, continuously >> deploying to servers, leveraging containers, and/or testing pull requests >> before they get merged. I'm going to call this much bigger entangled >> automation "Continuous Delivery", to contrast this with more classical >> automated build & test executions (aka "Continuous Integration") that we >> set out to do. >> >> The other thing I'd like to point out is that the adoption of Jenkins >> continues to grow at the incredible pace of 30% year over year. That is, a >> lot of people are starting new with Jenkins, and they are looking for us to >> help them get Continuous Delivery done. Therefore, this is a good time to >> step back and think about whether we are addressing those current user >> demands. >> >> >> For example, despite this advance during the last 10 years and 1000+ >> plugins we've created, messaging in our website hasn't changed much since >> the first version I wrote on java.net. It spends more space talking >> about JNLP and zero mention of Git, pipeline, or Docker. >> >> The fresh installation of Jenkins is not much better. The CVS support is >> available out of the box, but Git isn't. All the cool stuff that the >> community has done and its collective best practices still need be learned >> by each and every new user. It's bit like we are making everyone assemble >> LEGO blocks. That's not doing enough justice to the 30K+ users that will be >> joining us in this year. >> >> So I propose we do Jenkins 2.0 to fix this. >> >> There are three important goals that I see in Jenkins 2.0. >> >> 1. We need to claim our rightful place in Continuous Delivery. We >> have lots of pieces that address these modern needs, but we are not >> communicating this very well. >> >> 2. We need to revisit out of the box experience, so that Jenkins >> itself speaks that story and makes it clear what we are aiming for. Our >> software needs to speak for itself and tell people where we are going, so >> that the community can better focus efforts on the important parts. >> >> 3. And we need to do this while keeping what makes Jenkins great in >> the first place, which are the ecosystem, the community, and the >> extensibility that recognizes that one size does not fit all and let >> people >> do what they want to do. >> >> >> Incrementing the major version sends a clear message to people that we >> are moving forward. That's why I think 2.0 is appropriate for this effort. >> >> >> >> Now, 2.0 can mean a lot of different things to a lot of people, so let me >> outline what I think we should do and we shouldn't do. >> >> It's very important for me to make sure that my fellow Jenkins developers >> understand the motivation and the goal of this proposal, because that >> drives much of what we should and shouldn't do. So instead of deep-diving >> into technical parts, please take time to try to understand why I am >> proposing this. >> >> We need to contain the scope. 2.0 has to have enough in it to justify the >> major version number increase, but it creates a period of pause and >> uncertainty, so it cannot keep dragging on for too long. 2.0 cannot be >> everything everyone ever wanted. >> >> We cannot do massively disruptive 2.0, because it ends up splitting the >> community. If users perceive that the upgrade to 2.0 is risky, enough of >> them will stay behind with 1.x, plugin authors would want to continue >> supporting them, which makes 1.x more liveable, which makes the transition >> slower. I do not want to end up in Python2/3 situation, and nobody wins. >> >> That means we cannot be really breaking plugins. We cannot do >> s/hudson/jenkins/g in the package names because doing that will break all >> the plugins. 2.0 does come with the expectation that it is more disruptive >> than usual 1.630 to 1.631 upgrade, so we have some "disruption budget", but >> we have to use it really wisely. >> >> Simiarly, for me it is an absolute requirement that we keep people's >> $JENKINS_HOME functioning. A lot of sweat, tear, and blood went into those >> right set of plugins and elaborate job configurations. When users upgrade >> to 2.0, they need to continue to work, or else Jenkins 2.0 will be Jenkins >> in just the name only. >> >> Therefore, we cannot make massive internal changes. In many ways, it has >> to be evolutionary instead of revolutionary, when it comes to the code. >> This is not a "let's redo everything from scratch" kind of 2.0. In any >> case, I think it's a pitfall to focus too much on internals. We all have a >> long list of things we want to fix and the technical debt that we want to >> pay down. My cautionary tale here is that of Maven 2 to Maven 3 upgrade. >> The developers of the project spent a lot of efforts redoing all the >> plumbings. Plexus gave way to Guice, and the dependency resolution engine >> got completely rewritten. Then to keep plugins working, more efforts were >> spent on building the backward compatibility layer. After something like 18 >> months, Maven 3 came out, which did more or less the same thing as far as >> users are concerned. I'm sure I'm over-simplifying this, but you get the >> point. >> >> >> >> So given all that constraints, I think 2.0 should have the following 3 >> major pillars: >> >> - Messaging changes, to make sure people coming into the Continuous >> Delivery space will get that Jenkins does what they want. >> - Software that backs up our messages. Out of the box experience that >> caters to Continuous Delivery needs. >> - Targeted internal plumbing changes that enable those goals >> >> I have some concrete ideas in each of these pillars, and I'll describe >> them below. But I also need help from everyone to come up with, discuss, >> and decide what other things will advance those pillars. >> >> Messaging: >> >> - Domain name. It's kind of a problem that we have "ci" baked into >> our domain name jenkins-ci.org. We have acquired http://jenkins.cd/ >> How about we change the domain name? I think it sends another clear >> signal. >> >> - We need more up-to-date feature list page (like >> http://arquillian.org/features/) that talks about things that matter >> to the modern users. >> >> - We need authoritative and curated getting started guide that >> expands on the things listed in the features page and help people >> understand those features, so that we have clearly marked trails. >> >> - This is probably out of scope for the initial 2.0 launch, but in >> the future we want to redo the plugin listing page as well. This is a >> persistent feedback that we hear from users. >> >> - All the above things call for better infra that can handle this. >> Right now we have our web assets are split into Drupal and Wiki, but the >> former can be only touched by a few people and the latter is slow and >> klunky. I think this is the time to switch to some static site generator, >> so that everyone can contribute content through Git and pull requests, >> just >> like how we collaborate on plugins. >> >> >> Out of the Box Experience: >> >> - This work is already in progress, but we really need some initial >> setup wizard. We can use it to install plugins so that new instances come >> up more useful from get-go --- things like git, workflow, pipeline as >> code, >> folders, and so on. These plugins together tell the story of how we want >> users to use Jenkins. >> >> - Another work that's already under way is the UX improvement, >> specifically the config form re-layout. This is the kind of change that >> helps people (literally) see that 2.0 is different. UX in general is >> clearly one of the places we should spend our precious disruption budget >> for. >> >> - To reinforce the message that workflow is the future, CloudBees is >> going to open-source our workflow stage view plugin that was previously a >> part of CloudBees Jenkins Enterprise. >> >> >> Internals: >> >> - Let's define a policy to remove APIs after they are deprecated. We >> have talked about this in FOSDEM, and this could be as easy as "N releases >> after deprecation". Feedbacks from users at the San Jose JAM was that >> things like this is OK, but we need to help people identify plugins that >> will be impacted to give them earlier warnings. >> >> - As a part of the UX rebump effort, Tom et al has been working on a >> brand-new way of doing frontend in Jenkins plugins. His JUC talk has some >> materials. Given that user experience is a major theme in 2.0, I think >> this >> internal plumbing change makes sense. >> >> - Let's use the opportunity to update some of the libraries. I'm >> thinking about things like Groovy, which according to the testing done >> during Copenhagen Hackathon, should be compatible. This shouldn't include >> updates that are known to be compatibility breaking, such as Acegi >> Security >> to Spring Security (which involves package name changes.) >> >> - Time to bump up the system requirement to Java 8 and Servlet 3.0. >> Let's think about what this would enable to users. Again, we talked about >> this a bit in FOSDEM. >> >> >> Finally, timeline-wise, my aspirational timeline is as follows, though >> obviously this is largely dependent on feedback to the proposal: >> >> - Announce the proposal publicly and have discussions to nail the >> details (Sep-Oct) >> - Execution (Oct-Dec) >> - Periodic alpha/beta releases to solicit feedbacks from users >> - PR activities >> - This phase concludes with the release candidate >> - Plugin sweep to ensure key plugins are "2.0 ready". This is the >> opportunity to find issues (Jan 2016) >> - Release (end Jan?) >> - Drop 1.x development as soon as possible to focus on 2.x. >> >> >> There are a lot of things I haven't captured, but this email is aleady >> getting too long. Looking forward to having more conversations about this >> with everyone. >> >> -- >> Kohsuke Kawaguchi >> >> -- >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/jenkinsci-dev/CAN4CQ4zMNF-BJnZ%3DwSxYJiXBkExPvNUnaNU4S5Ru6p-PgJmUbw%40mail.gmail.com >> <https://groups.google.com/d/msgid/jenkinsci-dev/CAN4CQ4zMNF-BJnZ%3DwSxYJiXBkExPvNUnaNU4S5Ru6p-PgJmUbw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > cactusman > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-dev/CAKBnHw-xjXtJHWVUFsZ%2B5vrJQJYfCmw2YNRE6Fb8h2EOotga2w%40mail.gmail.com > <https://groups.google.com/d/msgid/jenkinsci-dev/CAKBnHw-xjXtJHWVUFsZ%2B5vrJQJYfCmw2YNRE6Fb8h2EOotga2w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Kohsuke Kawaguchi -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAN4CQ4wHTY7Obf%3DsiBZTAOfi1ipDkrJepbA-QdeOjcirM9rUKA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
