Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cf-dev] Release Plan for Californium ?

I know there is always this bug about blockwise transfer :/ I think this should be fixed in the 2.0 release but we can do that without refactoring all the stack.

I have some concerns about this change, this is an attractive idea to simplify the stack. But the more I think about it the more I have doubt. Limiting the stack to a request/response handler which don't know anything about blockwise and observe will not be so easy. E.g. when we receive a response for an observe request we don't know if we must return a RST or ACK if we don't know anything about observation. Anyway, this coapstack refactoring seems to be a really impacting task with some risks as we don't really know where we go and if it will really be better. We should maybe put this change on the 3.0.x branch ? and keep focus on security and stabilized observation behind NAT for the 2.0 ?


Le 17/11/2016 à 10:09, Hudalla Kai (INST/ESY1) a écrit :
On Wed, 2016-11-16 at 16:55 +0100, Simon Bernard wrote:
It sounds good to me to put coap+tcp in a more long term branch.

ok, we seem to agree on that.

About the blockwise, we currently use the 2.0.0M2 version of californium
and it seems to works :).
I wish this were true. However, the more complex cases where a client receives
another notification while a blockwise transfer (for the previous notification)
is still ongoing, do not work because we (currently) create a new Exchange object
for each notification received and therefore the ObserveLayer cannot determine
whether it is already conducting a blockwise transfer for the token. It will
therefore always start an additional series of blockwise GETs to retrieve all
blocks. The "older" blockwise transfers will therefore end up intermixing "old"
blocks with "new" blocks and for each notification received the application layer
will receive a Response containing the (potentially erroneously) assembled
payload.

This is just a feeling but I have some doubt about the possibility to
extract the blockwise transfer from the stack without extracting the
observe layer which is upper it.
As a Leshan developper and so Californium user, I also appreciate the
transparent way blockwise is currently handled. How will this change
impact the API ?

I do understand that from a user's perspective it seems desirable to have
Californium handle the blockwise transfers automagically "under the hood".
However, the way this currently is implemented is a maintenance nightmare.
Whenever I change one line of code in the matcher, I spend days trying to get the
blockwise tests succeeding again. My hope is that we can reduce the CoapStack to
its basic functionality of simply sending a request and receiving a response and
let code outside of the CoapStack do the interpretation of observe flags and, in
particular, handle blockwise transfers.

Coming back to your question: I think that this will completely change the API
(at least when doing blockwise transfers) and that is also the reason why we need
to do it as part of a major version change (like 2.0.x ;-))

About fixing the scope or the date, I prefer to fix the scope. This
allow us to know which modification go in the 2.0 banch and which go in
the more long term branch (3.0 ?)

Fine with me. The challenge will be to agree on scope, I guess ...

Le 16/11/2016 à 16:01, Hudalla Kai (INST/ESY1) a écrit :
On Wed, 2016-11-16 at 14:52 +0100, Simon Bernard wrote:
Hi,

     At Leshan, we currently think about releasing a first Leshan version.

     You can see the plan on leshan-dev [1].

     This version of Leshan will be based on Californium 2.0.x as we need
the persistent ObservationStore.

     There is a lot of activity on this branch which is a good point for
californium project but I'm wondering if this is compatible with the
needs to get a stable version of Californium 2.0.x ?

      WDYT  ?

I understand your concerns regarding "convergence" of the 2.0.x branch.
However,
the 2.0.x branch provides the opportunity to make some more radical changes
that
involve breaking the API. This "window of opportunity" will be closed once we
do
a 2.0.0 release and we will then need to create a 3.0.x branch in order to
work
on other changes that will potentially break the API (again). IMHO we
therefore
need to come to an agreement what we think should be part of 2.0.x and what
should be postponed to the next release(s).

The recent developments around the coap-over-tcp-draft have led me to believe
that we will not be able to have coap+tcp support (based on the latest coap-
over-
tcp draft) in Californium any time soon. It also seems like we will need to
do
some more (bigger) changes in Californium to support observations and
clustering
over TCP correctly. Personally, I would therefore like to postpone TCP to a
later
version.

The biggest problem I currently have with the 2.0.x branch is the quality of
the
transparent blockwise transfer behavior. My gut tells me that we should
remove
the Blockwise layer as part of 2.0.0 in order to simplify the core protocol
stack
and make it easier to change things in the stack later on.

I know that I have been talking about this for quite some time now but
haven't
really started to work on it. However, I really would like to get this into
2.0.0.

Maybe we can set a dead-line for work on 2.0.x and at that point simply
release
whatever we then have finished?
Simon

[1] https://dev.eclipse.org/mhonarc/lists/leshan-dev/msg00631.html

_______________________________________________
cf-dev mailing list
cf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe
from
this list, visit
https://dev.eclipse.org/mailman/listinfo/cf-dev
_______________________________________________
cf-dev mailing list
cf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/cf-dev
_______________________________________________
cf-dev mailing list
cf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/cf-dev
_______________________________________________
cf-dev mailing list
cf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/cf-dev



Back to the top