We could make this the basis for a new release, almost as is. I'd need to create some JIRA issues to capture the changes. This would include Secure serialization, which is a step towards secure IoT.

However I'm also tempted to break up the codebase into modules and release each separately; a further step along the pathe of the secure IoT theme, from the root of the dependency tree.

The qa test suite would remain a separate ant build.

Regards,

Peter.

On 12/11/2016 12:18 AM, Bryan Thompson wrote:
Sounds reasonable.

Would there be a release that was just this refactor?

Or would then next release be a step along the path of the secure IoT theme?

Bryan

On Thursday, November 10, 2016, Peter<j...@zeus.net.au>  wrote:

Thinking about how to proceed with code and repo...

* I want to bring code in from an existing git repo and keep commit
history (I'm the only committer).  Branched off a recent version of River
trunk.
* We want to change to using a git repo for River.
* Start building maven style modules from the ground up, starting with
JERI at low level.
* Separate out the qa test suite (integration tests), which is an ant
build that only depends on jars from river build.
* Where should jtreg test suite ( unit and regression tests) go?  Maybe
with each relevant module?
* junit tests with appropriate module...

Thoughts / suggestions?

Regards,

Peter.

Sent from my Samsung device.

   Include original message
---- Original message ----
From: Peter<j...@zeus.net.au<javascript:;>>
Sent: 06/11/2016 08:23:06 pm
To: dev@river.apache.org<javascript:;>
Subject: Re: River revamp

Yes same pattern, some details are different for security reasons,
additional support is required for lower level protocols as object
endpoints.

Also, for example, devices were on a 6LowPAN network, different types of
devices would subscribe to different multicast groups, to minimise their
responses, since some devices may rely on battery power, we don't want
them to announce their presence or respond unnecessarily as that wastes
power.

There are a number of new IoT protocols being developed, I think we'll
need to provide some support for some to start with.

AMQP is another interesting protocol.

On the discovery side, in order to make a connection, the multicast
response will need to contain the application layer name, transport
layer name, contact address and port, eg:  MQTT, TCP, IP address:port.
Typically the nework layer will define the method of multicast.

Cheers,

Peter.

On 6/11/2016 1:05 PM, Niclas Hedhman wrote:
Ok, so this is more or less classic "surrogate" setup with JINI, right,
with some additional SEC stuff, right?

And that is a cool way to achieve interoperability with smaller devices
without ability to run a JVM, especially the original
dream where devices
don't know about each other ahead of time (except by some interface)

I also see value where "IoT Service" doesn't bother with "Service
Registrar" in the "Jini sense" and the "IoT Device" only participate in
"Discovery" and then get a secure/trusted channel, onto which a
light-weight protocol, such as MQTT or CoAP, can be funneled in either
direction.



On Sat, Nov 5, 2016 at 2:26 PM, Peter<j...@zeus.net.au<javascript:;>
  wrote:

Hmm lets try Ascii, hope line wrapping doesn't wreck it.


              |<----------------------| Multicast request
Multicast   |                       |
response    |---------------------->| Connection&   auth
              |                       | to discovered address
RPCSEC_GSS  |<----------------------|
auth        |---------------------->| RPCSEC_GSS Auth
              |                       | success, request
              |                       | bytes containing
              |                       | service proxy
              |      Register service |
              |    proxy&   attributes |------------------
->| Registration
              |      Mange reg lease  |<-------------------|
              |                       |                    |
              |                       |             Match
|<-----------------| Lookup
              |                       |
|----------------->|
              |                       |                    |
    | Authenticate Iot Service
              |                       |                    |
    | with bootstrap proxy
              |                       |                    |
    | Grant permission to download
              |           Auth client |<----------------
----------------------|
and deserialize service proxy.
              |  Return service proxy |-----------------------------
--------->|
              |                       |                    |
    | Prepare service proxy
              |<------------------------------------------
--------------------|
execute RPC function call
   Function   |-------------------------------------------
------------------->|
with constraints
              |                       |                    |
    |
         IoT Device             IoT Service         Service Registrar
Client




On 5/11/2016 3:48 PM, Peter wrote:

Ok, will come back to the ascii art, I'll first attempt
to attach a png.
There's an existing Java RPC implementation LGPL, with
a maven build tag
=>   oncrpc4j-2.6.0

https://github.com/dCache/oncrpc4j

The implementation above supports /RPCSEC_GSS/ for security, although
there's a client side bug at present, but fixing it
will be a lot less work
than reimplimenting it.

Basically RPC is the C equivalent of Java RMI.

Cheers,

Peter.

On 5/11/2016 10:32 AM, Niclas Hedhman wrote:

Sorry, I get the feeling that too much detail thinking
is still in your
head. Hard for me to follow your thought process.
A simple picture (ascii
art would do) would go a long way...

Niclas

On Sat, Nov 5, 2016 at 8:04 AM, Peter<j...@zeus.net.au<javascript:;>
   wrote:
Thinking about C and power constrained devices,
how about the following:
* Write an ONC RPC java compiler, to create java code (instead of C)
client stubs.

* Provide support for TLS and constraints.

* Provide an IPv6 constrained device announcement (C) and discovery
(Java)
utilities.  Create a standard so other languages can be supported by
others.

* Write a java utility and service that manages proxies, registers
discovered constrained devices with a lookup service
and manages it's
lease.  This utility can generate attributes (from
Configuration) and
provide a bootstrap proxy (service) to allow
clients to authenticate and
obtain the smart proxy used to communicate directly with the device.

* Provide an interface for clients to notify the
utility service when a
device is down.

Regards,

Peter.

Sent from my Samsung device.

     Include original message
---- Original message ----
From: Zsolt Kúti<la.ti...@gmail.com<javascript:;>>
Sent: 03/11/2016 05:37:45 pm
To: dev@river.apache.org<javascript:;>
Subject: Re: River revamp

A small footprint implementation of Jini's
lookup service written in C,
fully JCK compliant.
http://www.psinapticcom/link_files/PsiNapticTelematics.pdf


A few years ago being involved in developing a
streelighting management
system I tried to access them to no avail.

On Thu, Nov 3, 2016 at 8:09 AM, Peter<j...@zeus.net.au
<javascript:;>>    wrote:
I've been conaidering that.  It should be possible
to implement service
discovery in C, any serialized java bytes
required for a proxy could be
stored on the device.

So these devices are services, but not clients.

Will respond with more soon

Regards,

Peter.

Sent from my Samsung device.

     Include original message
---- Original message ----
From: Niclas Hedhman<nic...@hedhman.org<javascript:;>>
Sent: 03/11/2016 12:39:33 pm
To: dev@river.apache.org<javascript:;>
Subject: Re: River revamp

"IoT" is a term that for this discussion is a bit too wide. The
"thermostat" runs with a kB-sized microcontroller and is

struggling to get

security features in at all, and the "home router"
is typically (still)
running from a 4-8MByte flash, which is
impossible to even get a Java
ME
onto, so there is a lot of challenges when using "IoT"

as a blanket term.

So, I think a couple of concrete, do-able, use-cases
need to be highlighted
as examples, maybe a kind of "blue print" paper on how to
do it with River.

I totally agree that the "mothership" model is
outrageous from a consumer's
perspective, a nasty vendor lock-in, that all vendors are

pushing for and

all consumers/users need to fight the best we can.

A very active home automation project is called "
OpenHAB", a flurry of
activity, connecting just about everything from
your thermostat to your
dog's toys. I have not looked closely at it, don't
even know if it is a
Java project as such, but it is one of the most
active projects in the
field of Home IoT.

Cheers
Niclas

On Wed, Nov 2, 2016 at 10:41 PM, Patricia Shanahan<p...@acm.org
<javascript:;>>
wrote:

I think for this to work it is necessary to find out
where IoT people hang

out, and discuss it there Do they already have a plan for a secure
framework?

As a potential IoT user I'm looking for two things:

1. Security.

2. Server independence.

I don't want my thermostat to stop working if
a server I don't control
goes down or is taken out of service for any reason.

I think River may be a good basis for those features.


On 11/2/2016 7:22 AM, Bryan Thompson wrote:

I look at this as open source for secure IoT.  The
need for security in
IoT
has been aptly demonstrated by recent DDOS

attaches based on compromised
devices.
I do feel that interop is critical to success here.

Do we have any lurkers from the IoT manufacturing

space here?  People or
companies willing to invest time and resources for
a secure IOT platform?
Bryan
On Wednesday, November 2, 2016, Peter<j...@zeus.net.au
<javascript:;>>    wrote:
Utilising most of the existing discovery code, we could use ipv6

multicast, for an exported remote object (service).

Then create a new class called RemoteDiscovery
to discover a service
dynamically, based on a name

So you export a service and it becomes dynamically discoverable.

It's not going to step on any Jini discovery lookup

stuff and it's going
to be easily deployed by new users.
Then once users realise there's more on offer they

can take advantage as
their understanding develops.
Cheers,

Peter.

Sent from my Samsung device.

     Include original message
---- Original message ----
From: Niclas Hedhman<nic...@hedhman.org<javascript:;>
<javascript:;>>
Sent: 02/11/2016 05:31:26 pm
To: dev@river.apache.org<javascript:;><javascript:;>
Subject: Re: River revamp

To put a bit more meat on Peter's condensed list...

I put forward a proposal to sever the ties between

River and Jini itself,
and instead re-focus River to be a a secured
network transport, with
optional discovery. Starting point is of course the JERI
module and Peter's
work to secure this transport, but in the longer

term look at alternative
transport formats and eventually bindings to other
languages, which I think
will be the major hurdle for long term
acceptance (no one is Java-
only
nowadays).
Jini's services, Reggie and so on, carries a lot of

negative connotation
among people who were around back then, and except
for where it has been
adopted, I doubt that there will be any new uptake,
so instead of making
Jini (and its specs) the focal point of River, make it
to "Examples of what
River can be used for".

Another example of what can be done with River could

eventually include
connectors for popular platforms, such as Zookeeper,
which could open
avenues for new blood coming to River
Concrete things; Apache Karaf is also a very small
community, yet they have
managed to put together a very exciting
website, and I think River
community could "borrow" a lot of that work, making itself more
appealing,
promoting the new focus. I don't think much coding is

needed to get this
going, but packaging might be "fixed" to make
consumption of the core
functionality as easy as possible, preferably easier than that.
Once that is up-and-running starting the "reach

out" to other projects,
individuals and press releases.
I hope that this will inspire some to more action.

Niclas





On Wed, Nov 2, 2016 at 2:25 PM, Peter Firmstone<
peter.firmst...@zeus.net.au<javascript:;><javascript:;>

wrote:
A discussion recently ignited on river private
about revamping the project.

For the benefit of the wider developer community
can we restate the
suggestions here, feel free to reword, correct, reject or

suggest  It was
along the lines of:
* Website revamp
* Remove Jini focus, with a historical section...
* Focus on new security features.
* Make getting started simple, with just the bare

bones basics, Extensible
remote invocation with secure serialization.
* Services, Javaspaces etc, become examples of what

can be done with
River, not what River  is.
Regards,

Peter.



Sent from my Samsung device.




--
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java




--
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java






Reply via email to