Some notes on backward compatibility: River 2.2.3 and 3.0.0 break compatibility (with River 2.2.2 and Jini 2.1), the former after removal of Activation and JRMP exporter, the latter with the com.sun.jini -> org.apache.river namespace change.
I've chosen deprecation over removal, module segregation and a compatibility layer, where appropriate. I've created a jini 2.1 compatibly layer module to provide some parts of the com.sun.jini namespace, at this stage based on Rio's usage (perhaps Bryan might be able to assist with Blazegraph testing?). We also need to consider that released versions of jsk-lib-dl.jar depend on parts of the com.sunjini or org.apache.river namespaces not present on some platforms, which may break compatibility at runtime. I think there are two cases to consider: 1. Complete migration and deployment to the next version of River. 2. Partial migration and deployment, mixed versions services / clients / River. For JGDMS, the SafeServiceRegistrar and associated interfaces are included in jsk-lib-dl.jar or its equivalent. The input validating serialization io classes reside in platform.jar, because it's low level. The platform.jar will need to be added to the downloaded codebase annotations for compatibility with earlier platforms to provide absent org.apache.river package dependencies. All existing River releases duplicate classes to varying degrees in jar files, hence problems with codebase annotation loss were mostly addressed with PreferredClassProvider Modular code doesn't duplicate classes or split packages, the latter because package private access won't work accross ClassLoader boundaries and ClassLoaders are generally utilised for Modularity, with the exception of jigsaw. Modular environments like Maven or OSGi solve a number of headaches with version management. Jigsaw doesn't provide support for versioning because the jvm doesn't break backward compatibility. Regards, Peter. Sent from my Samsung device. Include original message ---- Original message ---- From: Bryan Thompson <br...@blazegraph.com> Sent: 12/01/2017 02:29:34 am To: <dev@river.apache.org> <dev@river.apache.org> Subject: Re: Summary of my external work I do not have a huge problem with detached development. The work could always be brought into a branch for review and commentary. In general, I think the broader question is status quo vs active development. I think that there is some consensus around the need for river to evolve, especially in directions that (a) do not break existing applications; and (b) simplify river making it more readily consumable both as source code (modularization) and for emerging domains (e.g., the secure IoT theme). Bryan On Wed, Jan 11, 2017 at 8:17 AM, Patricia Shanahan <p...@acm.org> wrote: > How do you envisage the future of this work? > > Personally, given the volume of changes outside svn, without any review or > commit messages, I am not sure I would vote for an Apache release based on > this code. Do you have a quorum of PMC members who do feel comfortable with > this process? > > On 1/11/2017 3:43 AM, Peter Firmstone wrote: > >> Forked from River trunk just before 3.0 release. >> >> * Security focused: >> >> o Supports updated modern cyphers, support for vulnerable >> cypers removed. >> o Reimplementation of serialization, includes input validation >> and defensive programming. >> o Additional SafeServiceRegistrar interface with lookup method >> that allows clients to authenticate services prior to >> downloading. >> o ServiceDiscoveryManager configured to use new lookup method, >> without changes to API. >> o proxy jar files can contain META-INF permissions.perm files >> with advisory permissions (same format as OSGi local >> permissions). >> o New secure multicast discovery providers that dynamically >> grant download and deserialization permission for >> authenticated lookup services. >> o Phoenix now supports using TLS sockets for Registry. >> o LookupLocator now supports https unicast discovery for >> firewall/proxy traversal. >> * IPv6 Multicast discovery support >> * Better support for Java 9, no longer accessing sun jvm >> implementation packages >> o Phoenix uses RMI Registry now instead of RegistrySunExporter >> o KerberosServerEndpoint reflectively accesses >> com.sun.security.jgss.GSSUtil.createSubject, but only when >> using client token delegation. Delegation not supported on >> other vendors jvm's. >> * Deprecated: >> o RegistrySunExporter >> o SunJRMPExporter >> o ProxyTrust >> >> Currently working on a Modular Maven based build. >> >> * Uniting packages and removing some dependencies to assist OSGi >> developers (like some package changes for non api org.apache.river >> namspaces). >> o org.apache.river.reggie.proxy >> o org.apache.river.reggie.service >> * OSGi bundles with package based dependencies >> >> >> Looking forward to donating this code to River. >> >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Reactor Summary: >> [INFO] >> [INFO] JGDMS Project ...................................... SUCCESS [ >> 0.712 s] >> [INFO] Module :: JGDMS Collection ......................... SUCCESS [ >> 18.139 s] >> [INFO] Module :: JGDMS Jini Platform ...................... SUCCESS >> [01:17 min] >> [INFO] Module :: JGDMS Loader ............................. SUCCESS [ >> 18.179 s] >> [INFO] Module :: JGDMS Extensible Remote Invocation ....... SUCCESS [ >> 45867 s] >> [INFO] Module :: JGDMS Resources .......................... SUCCESS [ >> 0.099 s] >> [INFO] Module :: JGDMS URL providers and Integrity ........ SUCCESS [ >> 17804 s] >> [INFO] Module :: JGDMS Activation Platform ................ SUCCESS [ >> 23.309 s] >> [INFO] Module :: JGDMS Service DL Library ................. SUCCESS [ >> 18373 s] >> [INFO] Module :: JGDMS Lookup Discovery Providers ......... SUCCESS [ >> 17.094 s] >> [INFO] Module :: JGDMS Service Library ..................... SUCCESS [ >> 22.786 s] >> [INFO] Module :: JGDMS Service Starter ................... SUCCESS [ >> 27.622 s] >> [INFO] Module :: JGDMS SharedGroup Destroy ............... SUCCESS [ >> 22.416 s] >> [INFO] Module :: JGDMS IIOP .............................. SUCCESS [ >> 13.330 s] >> [INFO] Module :: JGDMS JRMP ............................... SUCCESS [ >> 13.663 s] >> [INFO] Module :: JGDMS Service DL Library UI Factory ...... SUCCESS [ >> 21.488 s] >> [INFO] Module :: Jini 2.1 compatibility .................. SUCCESS [ >> 16.572 s] >> [INFO] Module :: Outrigger ................................ SUCCESS [ >> 0.017 s] >> [INFO] Module :: Outrigger Service Download classes ...... SUCCESS [ >> 15.488 s] >> [INFO] Module :: Outrigger Service Implementation ......... SUCCESS [ >> 27.113 s] >> [INFO] Module :: Outrigger Snaplogstore ................... SUCCESS [ >> 16.609 s] >> [INFO] Module :: Lookup Service ........................... SUCCESS [ >> 0.014 s] >> [INFO] Module :: Reggie Service Download classes .......... SUCCESS [ >> 14.048 s] >> [INFO] Module :: Reggie Service Implementation ............ SUCCESS [ >> 23.095 s] >> [INFO] Module :: Mahalo .................................. SUCCESS [ >> 0.014 s] >> [INFO] Module :: Mahalo Service Download classes .......... SUCCESS [ >> 13.727 s] >> [INFO] Module :: Mahalo Service Implementation ............ SUCCESS [ >> 22.967 s] >> [INFO] Module :: Mercury the Event Mailbox ................ SUCCESS [ >> 0.014 s] >> [INFO] Module :: Mercury Service Download classes ......... SUCCESS [ >> 21.990 s] >> [INFO] Module :: Mercury Service Implementation ........... SUCCESS [ >> 16.790 s] >> [INFO] Module :: Norm .................................... SUCCESS [ >> 0.014 s] >> [INFO] Module :: Norm Service Download classes ............ SUCCESS [ >> 20.415 s] >> [INFO] Module :: Norm Service Implementation .............. SUCCESS [ >> 23.257 s] >> [INFO] Module :: Group .................................... SUCCESS [ >> 0.018 s] >> [INFO] Module :: Group Service Download classes ........... SUCCESS [ >> 12.737 s] >> [INFO] Module :: Group Service Implementation ............. SUCCESS [ >> 16.827 s] >> [INFO] Module :: Fiddler the LookupDiscoveryService ....... SUCCESS [ >> 0.018 s] >> [INFO] Module :: Fiddler LookupDiscoveryService Download classes SUCCESS >> [ 21.747 s] >> [INFO] Module :: Fiddler LookupDiscoveryService Implementation SUCCESS [ >> 20.474 s] >> [INFO] Module :: Tools ................................... SUCCESS [ >> 0.018 s] >> [INFO] Tool :: Check ConfigurationFile .................... SUCCESS [ >> 0.098 s] >> [INFO] Tool :: Check serialversionUid ..................... SUCCESS [ >> 0.105 s] >> [INFO] Tool :: ClassDep ................................... SUCCESS [ >> 0.145 s] >> [INFO] Tool :: Class Server ............................... SUCCESS [ >> 0.084 s] >> [INFO] Tool :: Compute message digest ..................... SUCCESS [ >> 0.115 s] >> [INFO] Tool :: Compute httpmd codebase .................... SUCCESS [ >> 0.144 s] >> [INFO] Tool :: Environment Check .......................... SUCCESS [ >> 0.169 s] >> [INFO] Tool :: Jar wrapper ................................ SUCCESS [ >> 0.100 s] >> [INFO] Tool :: Preferred classes list generator ........... SUCCESS [ >> 0.123 s] >> [INFO] Module :: DebugDyanamicPolicyProvider and SecurityPolicyWriter >> SUCCESS [ 0.109 s] >> [INFO] Module :: Phoenix Activation ....................... SUCCESS [ >> 0.015 s] >> [INFO] Module :: Phoenix Download ......................... SUCCESS [ >> 13.895 s] >> [INFO] Module :: Phoenix Common .......................... SUCCESS [ >> 30.621 s] >> [INFO] Module :: Phoenix ................................. SUCCESS [ >> 19.214 s] >> [INFO] Module :: Phoenix Group ........................... SUCCESS [ >> 22.284 s] >> [INFO] Module :: Phoenix Init ............................. SUCCESS [ >> 12.605 s] >> [INFO] Module :: Groovy Configuration ..................... SUCCESS [ >> 6.050 s] >> [INFO] JGDMS Distribution ................................. SUCCESS [ >> 16.285 s] >> [INFO] Module :: JGDMS Service Browser .................... SUCCESS [ >> 4.288 s] >> [INFO] Module :: JGDMS Extra service utilities ............ SUCCESS [ >> 22.972 s] >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] BUILD SUCCESS >> [INFO] >> ------------------------------------------------------------------------ >> [INFO] Total time: 13:33 min >> [INFO] Finished at: 2017-01-11T21:36:17+10:00 >> [INFO] Final Memory: 38M/173M >> [INFO] >> ------------------------------------------------------------------------ >> >> C:\Users\peter\Documents\NetBeansProjects\river-internet\ >> modularize\JGDMS> >> >> Examples of OSGi manifests: >> >> Manifest-Version: 1.0 >> Bnd-LastModified: 1484132752995 >> Bundle-ManifestVersion: 2 >> Bundle-Name: Module :: Reggie Service Implementation >> Bundle-SymbolicName: reggie-service >> Bundle-Version: 3.0.0.201701111105 >> Created-By: 1.8.0 (Oracle Corporation) >> Import-Package: javax.net,javax.security.auth,javax.security.auth.logi >> n,net.jini.activation;version="[3.0,4)",net.jini.config;version="[3.0 >> ,4)",net.jini.constraint;version="[3.0,4)",net.jinicore.constraint;v >> ersion="[3.0,4)",net.jini.core.discovery;version="[3.0,4)",net.jini.c >> ore.entry;version="[30,4)",net.jini.core.event;version="[3.0,4)",net >> .jini.core.lease;version="[3.0,4)",net.jini.core.lookup;version="[3.0 >> ,4)",net.jini.discovery;version="[3.0,4)",net.jini.export;version="[3 >> .0,4)",net.jini.id;version="[3.0,4)",net.jini.io;version="[3.0,4)",ne >> t.jini.jeri;version="[3.0,4)",net.jinijeri.tcp;version="[3.0,4)",net >> .jini.lease;version="[3.0,4)",net.jini.lookup;version="[3.0,4)",net.j >> ini.lookup.entry;version="[3.0,4)",net.jini.security;version="[3.0,4) >> ",net.jini.security.proxytrust;version="[3.0,4)",org.apache.river.api >> .io;version="[3.0,4)",org.apache.river.api.util;version="[3.0,4)",org >> .apache.river.config;version="[3.0,4)",org.apache.river.constants;ver >> sion="[3.0,4)",org.apache.river.discovery;version="[3.0,4)",org.apach >> e.river.logging;version="[3.0,4)",org.apache.river.lookup.entry;versi >> on="[3.0,4)",org.apache.river.proxy;version="[3.0,4)",org.apache.rive >> r.reggie.proxy;version="[3.0,4)",org.apache.river.reliableLog;version >> ="[3.0,4)",org.apache.river.start.lifecycle;version="[3.0,4)",org.apa >> che.river.thread;version="[3.0,4)" >> Private-Package: org.apache.river.reggie.service >> Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" >> Tool: Bnd-3.2.0.201605172007 >> >> <======================================> >> >> Manifest-Version: 1.0 >> Bnd-LastModified: 1484132485762 >> Bundle-ManifestVersion: 2 >> Bundle-Name: Module :: JGDMS Service DL Library >> Bundle-SymbolicName: jgdms-jsk-lib-dl >> Bundle-Version: 3.0.0.201701111101 >> Created-By: 1.8.0 (Oracle Corporation) >> Export-Package: net.jini.admin;uses:="net.jini.core.discovery,net.jini >> .core.entry";version="3.0.0",net.jini.entry;uses:="net.jini.core.entr >> y,org.apache.river.api.io";version="3.0.0",net.jini.event;uses:="net. >> jini.core.event,net.jini.core.lease";version="3.0.0",net.jini.lease;u >> ses:="net.jini.config,net.jini.core.event,net.jini.core.lease,org.apa >> che.river.api.io";version="3.0.0",net.jini.lookup;uses:="net.jini.con >> fig,net.jini.core.entry,net.jini.core.event,net.jini.core.lookup,net. >> jini.discovery,netjini.io,net.jini.lease,org.apache.river.api.io";ve >> rsion="3.0.0",net.jini.lookup.entry;uses:="net.jini.core.entry,net.ji >> ni.entry";version="3.0.0",net.jini.lookup.entry.jmx;uses:="net.jini.e >> ntry";version="3.0.0",net.jini.lookup.ui;version="3.0.0",net.jini.loo >> kup.ui.attribute;version="3.00",net.jini.space;uses:="net.jini.core. >> entry,net.jini.core.event,net.jini.core.lease,net.jini.core.transacti >> on,net.jini.entry,org.apache.river.api.io";version="3.0.0",org.apache >> .river.admin;version="3.0.0",org.apache.river.landlord;uses:="net.jin >> i.core.constraint,net.jini.core.lease,net.jiniid,net.jini.security,o >> rg.apache.river.api.io,org.apache.river.lease";version="3.0.0",org.ap >> ache.river.lease;uses:="net.jini.core.lease,net.jini.io,net.jini.leas >> e,org.apache.river.api.io";version="3.0.0",org.apache.river.lookup.en >> try;uses:="net.jini.core.entry,net.jini.lookup.entry";version="3.0.0" >> ,org.apache.river.lookup.util;uses:="org.apache.river.api.io";version >> ="3.0.0",org.apacheriver.start.group;version="3.0.0",net.jini.lookup >> .ui.factory;version="3.0.0" >> Import-Package: net.jini.config;version="[3.0,4)",net.jini.constraint; >> version="[3.0,4)",net.jini.core.constraint;version="[3.0,4)",net.jini >> .core.discovery;version="[3.0,4)",net.jini.core.entry;version="[3.0,4 >> )",net.jini.core.event;version="[3.0,4)",net.jini.core.lease;version= >> "[3.0,4)",net.jini.core.lookup;version="[3.0,4)",net.jini.core.transa >> ction;version="[3.0,4)",net.jini.discovery;version="[3.0,4)",net.jini >> .entry,net.jini.export;version="[3.0,4)",net.jini.id;version="[3.0,4) >> ",net.jini.io;version="[3.0,4)",net.jini.io.context;version="[3.0,4)" >> ,net.jini.jeri;version="[3.0,4)",net.jini.jeri.tcp;version="[3.0,4)", >> net.jini.loader;version="[3.0,4)",net.jini.lookup.entry,net.jini.secu >> rity;version="[3.0,4)",net.jini.security.proxytrust;version="[3.0,4)" >> ,org.apache.river.action;version="[3.0,4)",org.apache.river.api.io;ve >> rsion="[3.0,4)",org.apache.river.concurrent;version="[3.0,4)",org.apa >> che.river.config;version="[3.0,4)",org.apache.river.constants;version >> ="[3.0,4)",org.apache.river.logging;version="[3.0,4)",org.apache.rive >> r.lookup.entry,org.apache.river.lookup.util,org.apache.river.thread;v >> ersion="[3.0,4)",org.apache.river.thread.wakeup;version="[3.0,4)" >> Private-Package: org.apache.river.proxy >> Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.5))" >> Tool: Bnd-3.2.0.201605172007 >> >> >>