I was reading up on the bundling possibility the other day as well. I like the idea from release standpoint. And if someone wants to use a different version they can always recompile it themselves. As Stefan pointed out, the main issue I see is the one of how licensing plays out with this.
-Jeremiah > On Mar 21, 2018, at 9:49 AM, Eric Evans <eev...@wikimedia.org> wrote: > >> On Wed, Mar 21, 2018 at 8:04 AM, Stefan Podkowinski <s...@apache.org> wrote: >> >> There's also another option, which I just want to mention here for the >> sake of discussion. >> >> Quoting the Oracle Support Roadmap: >> "Instead of relying on a pre-installed standalone JRE, we encourage >> application developers to deliver JREs with their applications." >> >> I've played around with Java 9 a while ago and also tested creating a >> self contained JRE using jlink, which you can bundle and ship with your >> application. So there's a technical solution for that with Java 9. Of >> course you'd have to clarify licensing issues (OpenJDK is GPLv2 + >> Classpath exception) first. >> >> Bundling a custom JRE along with Cassandra, would be convenient in a way >> that we can do all the testing against the bundled Java version. We >> could also switch to a new Java version whenever it fits us. Like e.g. >> apache-cassandra-4.0.14_openjdk11u321 and two months later release >> apache-cassandra-4.0.15_openjdk12u123. History has shown that planing >> and timing new releases isn't always working out for us as expected. I'd >> rather prefer not having to tightly coordinate our own releases together >> with OpenJDK releases, if it can be avoided. At the same time I'd like >> to avoid having users updating to incompatible JREs (think about >> 8u161/#14173), or have them constantly ask which JRE version to use for >> which Cassandra version, always with the risk of automatic updates >> causing unexpected issues. Bundling the JRE may help us with that, as it >> would become more a matter of testing and getting CI turn green, before >> we're ready to bundle the next major JRE update, without getting the >> user involved at all. >> >> If you would prefer using a global system JRE, that should still be >> possible by installing an unbundled Cassandra version, but you'd have to >> pay attention which Java version to use for which Cassandra release, >> possibly having to provide patches and do some testing for more recent >> Cassandra versions, in case of compatibility issues. If we update 3.11 >> to Java 13 in mid 2019, we'd have to provide release candidates that can >> be used for testing for such incompatibilities by LTS users and have >> them provide patches, which then have to fully work with Java 13 of >> course. Otherwise I can't see how to make Oracle/Redhat/IBM/Azul LTS >> releases work, except on this best effort basis without official support >> guarantees by us. >> >> I'm not too enthusiastic about this perspective. But I wouldn't >> completely dismiss it either, without talking about all the other >> options first. >> > > Personally, I don't like the idea of vendoring like this at all. Wasn't > portability supposed to be one of the big selling points of Java? Wouldn't > our efforts be better directed at being portable to within a few releases > of the JDK, than to tightly couple it to once specific version? > > >>> On 20.03.2018 22:32, Ariel Weisberg wrote: >>> Hi, >>> >>> Synchronizing with Oracle LTS releases is kind of low value if it's a >> paid offering. But if someone in the community doesn't want to upgrade and >> pays Oracle we don't want to get in the way of that. >>> >>> Which is how you end up with what Jordan and ElasticSearch suggest. I'm >> still +1 on that although in my heart of hearts I want to only support the >> latest OpenJDK on trunk and after we cut a release only change the JDK if >> there is a serious issue. >>> >>> It's going to be annoying once we have a serious security or correctness >> issue and we need to move to a later OpenJDK. The majority won't be paying >> Oracle for LTS. I don't think that will happen that often though. >>> >>> Regards, >>> Ariel >>> >>> If that ends up not working and we find it's a problem to not be getting >>>> On Tue, Mar 20, 2018, at 4:50 PM, Jason Brown wrote: >>>> Thanks to Hannu and others pointing out that the OracleJDK is a >>>> *commercial* LTS, and thus not an option. mea culpa for missing the >>>> "commercial" and just focusing on the "LTS" bit. OpenJDK is is, then. >>>> >>>> Stefan's elastic search link is rather interesting. Looks like they are >>>> compiling for both a LTS version as well as the current OpenJDK. They >>>> assume some of their users will stick to a LTS version and some will run >>>> the current version of OpenJDK. >>>> >>>> While it's extra work to add JDK version as yet another matrix variable >> in >>>> addition to our branching, is that something we should consider? Or are >> we >>>> going to burden maintainers even more? Do we have a choice? Note: I >> think >>>> this is similar to what Jeremiah is proposed. >>>> >>>> @Ariel: Going beyond 3 years could be tricky in the worst case because >>>> bringing in up to 3 years of JDK changes to an older release might mean >>>> some of our dependencies no longer function and now it's not just minor >>>> fixes it's bringing in who knows what in terms of updated dependencies >>>> >>>> I'm not sure we have a choice anymore, as we're basically bound to what >> the >>>> JDK developers choose to do (and we're bound to the JDK ...). However, >> if >>>> we have the changes necessary for the JDK releases higher than the LTS >> (if >>>> we following the elastic search model), perhaps it'll be a reasonably >>>> smooth transition? >>>> >>>> On Tue, Mar 20, 2018 at 1:31 PM, Jason Brown <jasedbr...@gmail.com> >> wrote: >>>> >>>>> copied directly from dev channel, just to keep with this ML >> conversation >>>>> >>>>> 08:08:26 <snazy> Robert Stupp jasobrown: https://www.azul.com/java- >>>>> stable-secure-free-choose-two-three/ and >> https://blogs.oracle.com/java- >>>>> platform-group/faster-and-easier-use-and-redistribution-of-java-se >>>>> 08:08:38 the 2nd says: "The Oracle JDK will continue as a commercial >> long >>>>> term support offering" >>>>> 08:08:46 also: http://www.oracle.com/technetwork/java/eol-135779.html >>>>> 08:09:21 the keyword in that cite is "commercial" >>>>> 08:21:21 <exlt> Michael Shuler a couple more thoughts.. 1) keep C* >>>>> support in step with latest Ubuntu LTS OpenJDK major in main, 2) >> bundle JRE >>>>> in C* releases? (JDK is not "legal" to bundle) >>>>> 08:23:44 <spodkowinski> https://www.elastic.co/blog/elasticsearch- >>>>> java-9-and-beyond - interesting read on that matter >>>>> 08:26:04 can't wait for the infra and CI testing implications.. will be >>>>> lot's of fun ;( >>>>> 08:42:13 <snazy> Robert Stupp Not sure whether stepping with Ubuntu is >>>>> necessary. It's not so difficult to update apt.source ;) >>>>> 08:42:43 CI ? It just let's your test matrix explode - a litte ;) >>>>> 08:46:48 <exlt> Michael Shuler yep, we currently `def jdkLabel = 'JDK >> 1.8 >>>>> (latest)'` in job DSL and could easily modify that >>>>> >>>>> On Tue, Mar 20, 2018 at 9:08 AM, Kant Kodali <k...@peernova.com> >> wrote: >>>>> >>>>>> Java 10 is releasing today! >>>>>> >>>>>> On Tue, Mar 20, 2018 at 9:07 AM, Ariel Weisberg <ar...@weisberg.ws> >>>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> +1 to what Jordan is saying. >>>>>>> >>>>>>> It seems like if we are cutting a release off of trunk we want to >> make >>>>>>> sure we get N years of supported JDK out of it. For a single LTS >>>>>> release N >>>>>>> could be at most 3 and historically that isn't long enough and it's >> very >>>>>>> likely we will get < 3 after a release is cut. >>>>>>> >>>>>>> Going beyond 3 years could be tricky in the worst case because >> bringing >>>>>> in >>>>>>> up to 3 years of JDK changes to an older release might mean some of >> our >>>>>>> dependencies no longer function and now it's not just minor fixes >> it's >>>>>>> bringing in who knows what in terms of updated dependencies. >>>>>>> >>>>>>> I think in some cases we are going to need to take a release we have >>>>>>> already cut and make it work with an LTS release that didn't exist >> when >>>>>> the >>>>>>> release was cut. >>>>>>> >>>>>>> We also need to update how CI works. We should at least build and >> run a >>>>>>> quick smoke test with the JDKs we are claiming to support and >>>>>>> asynchronously run all the tests on the rather large matrix that now >>>>>> exists. >>>>>>> >>>>>>> Ariel >>>>>>> >>>>>>>> On Tue, Mar 20, 2018, at 11:07 AM, Jeremiah Jordan wrote: >>>>>>>> My suggestion would be to keep trunk on the latest LTS by default, >> but >>>>>>>> with compatibility with the latest release if possible. Since >> Oracle >>>>>>>> LTS releases are every 3 years, I would not want to tie us to that >>>>>>>> release cycle? >>>>>>>> So until Java 11 is out that would mean trunk should work under Java >>>>>> 8, >>>>>>>> with the option of being compiled/run under Java 9 or 10. Once Java >>>>>> 11 >>>>>>>> is out we could then switch to 11 only. >>>>>>>> >>>>>>>> -Jeremiah >>>>>>>> >>>>>>>> On Mar 20, 2018, at 10:48 AM, Jason Brown <jasedbr...@gmail.com> >>>>>> wrote: >>>>>>>> >>>>>>>>>>> Wouldn't that potentially leave us in a situation where we're >>>>>> ready >>>>>>> for >>>>>>>>> a C* release but blocked waiting on a new LTS cut? >>>>>>>>> >>>>>>>>> Agreed, and perhaps if we're close enough to a LTS release (say >>>>>> three >>>>>>>>> months or less), we could choose to delay (probably with community >>>>>>>>> input/vote). If we're a year or two out, then, no, we should not >>>>>> wait. >>>>>>> I >>>>>>>>> think this is what I meant to communicate by "Perhaps we can >>>>>> evaluate >>>>>>> this >>>>>>>>> over time." (poorly stated, in hindsight) >>>>>>>>> >>>>>>>>>> On Tue, Mar 20, 2018 at 7:22 AM, Josh McKenzie < >>>>>> jmcken...@apache.org> >>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Need a little clarification on something: >>>>>>>>>> >>>>>>>>>>> 2) always release cassandra on a LTS version >>>>>>>>>> combined with: >>>>>>>>>>> 3) keep trunk on the lasest jdk version, assumming we release a >>>>>> major >>>>>>>>>>> cassandra version close enough to a LTS release. >>>>>>>>>> >>>>>>>>>> Wouldn't that potentially leave us in a situation where we're >> ready >>>>>>>>>> for a C* release but blocked waiting on a new LTS cut? For >>>>>> example, if >>>>>>>>>> JDK 9 were the currently supported LTS and trunk was on JDK 11, >>>>>> we'd >>>>>>>>>> either have to get trunk to work with 9 or wait for 11 to resolve >>>>>>>>>> that. >>>>>>>>>> >>>>>>>>>>> On Tue, Mar 20, 2018 at 9:32 AM, Jason Brown < >>>>>> jasedbr...@gmail.com> >>>>>>> wrote: >>>>>>>>>>> Hi all, >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> TL;DR Oracle has started revving the JDK version much faster, and >>>>>> we >>>>>>> need >>>>>>>>>>> an agreed upon plan. >>>>>>>>>>> >>>>>>>>>>> Well, we probably should has this discussion this already by now, >>>>>> but >>>>>>>>>> here >>>>>>>>>>> we are. Oracle announced plans to release updated JDK version >>>>>> every >>>>>>> six >>>>>>>>>>> months, and each new version immediate supercedes the previous in >>>>>> all >>>>>>>>>> ways: >>>>>>>>>>> no updates/security fixes to previous versions is the main thing, >>>>>> and >>>>>>>>>>> previous versions are EOL'd immediately. In addition, Oracle has >>>>>>> planned >>>>>>>>>>> parallel LTS versions that will live for three years, and then >>>>>>> superceded >>>>>>>>>>> by the next LTS; but not immediately EOL'd from what I can tell. >>>>>>> Please >>>>>>>>>> see >>>>>>>>>>> [1, 2] for Oracle's offical comments about this change ([3] was >>>>>>>>>>> particularly useful, imo), [4] and many other postings on the >>>>>>> internet >>>>>>>>>> for >>>>>>>>>>> discussion/commentary. >>>>>>>>>>> >>>>>>>>>>> We have a jira [5] where Robert Stupp did most of the work to get >>>>>> us >>>>>>> onto >>>>>>>>>>> Java 9 (thanks, Robert), but then the announcement of the JDK >>>>>> version >>>>>>>>>>> changes happened last fall after Robert had done much of the work >>>>>> on >>>>>>> the >>>>>>>>>>> ticket. >>>>>>>>>>> >>>>>>>>>>> Here's an initial proposal of how to move forward. I don't >> suspect >>>>>>> it's >>>>>>>>>>> complete, but a decent place to start a conversation. >>>>>>>>>>> >>>>>>>>>>> 1) receommend OracleJDK over OpenJDK. IIUC from [3], the OpenJDK >>>>>> will >>>>>>>>>>> release every six months, and the OracleJDK will release every >>>>>> three >>>>>>>>>> years. >>>>>>>>>>> Thus, the OracleJDK is the LTS version, and it just comes from a >>>>>>> snapshot >>>>>>>>>>> of one of those OpenJDK builds. >>>>>>>>>>> >>>>>>>>>>> 2) always release cassandra on a LTS version. I don't think we >> can >>>>>>>>>>> reasonably expect operators to update the JDK every six months, >> on >>>>>>> time. >>>>>>>>>>> Further, if there are breaking changes to the JDK, we don't want >>>>>> to >>>>>>> have >>>>>>>>>> to >>>>>>>>>>> update established c* versions due to those changes, every six >>>>>>> months. >>>>>>>>>>> >>>>>>>>>>> 3) keep trunk on the lasest jdk version, assumming we release a >>>>>> major >>>>>>>>>>> cassandra version close enough to a LTS release. Currently that >>>>>> seems >>>>>>>>>>> reasonable for cassandra 4.0 to be released with java 11 (18.9 >>>>>> LTS) >>>>>>>>>>> support. Perhaps we can evaluate this over time. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Once we agree on a path forward, *it is impreative that we >> publish >>>>>>> the >>>>>>>>>>> decision to the docs* so we can point contributors and operators >>>>>>> there, >>>>>>>>>>> instead of rehashing the same conversation. >>>>>>>>>>> >>>>>>>>>>> I look forward to a lively discussion. Thanks! >>>>>>>>>>> >>>>>>>>>>> -Jason >>>>>>>>>>> >>>>>>>>>>> [1] http://www.oracle.com/technetwork/java/eol-135779.html >>>>>>>>>>> [2] >>>>>>>>>>> https://blogs.oracle.com/java-platform-group/faster-and- >>>>>>>>>> easier-use-and-redistribution-of-java-se >>>>>>>>>>> [3] >>>>>>>>>>> https://www.oracle.com/java/java9-screencasts.html?bcid= >>>>>>>>>> 5582439790001&playerType=single-social&size=events >>>>>>>>>>> [4] >>>>>>>>>>> http://blog.joda.org/2018/02/java-9-has-six-weeks-to-live. >>>>>>>>>> html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ >>>>>>>>>> StephenColebournesBlog+%28Stephen+Colebourne%27s+blog%29 >>>>>>>>>>> [5] https://issues.apache.org/jira/browse/CASSANDRA-9608 >>>>>>>>>> >>>>>>>>>> ------------------------------------------------------------ >>>>>> --------- >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >>>>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> ------------------------------------------------------------ >> --------- >>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >>>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org >>>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------ >> --------- >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >>>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >>> For additional commands, e-mail: dev-h...@cassandra.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >> For additional commands, e-mail: dev-h...@cassandra.apache.org >> >> > > > -- > Eric Evans > eev...@wikimedia.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional commands, e-mail: dev-h...@cassandra.apache.org