Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ANSWER] Which LWM2M version Wakaama Client supports? #729

Open
rpolitex opened this issue Oct 4, 2023 · 24 comments
Open

[ANSWER] Which LWM2M version Wakaama Client supports? #729

rpolitex opened this issue Oct 4, 2023 · 24 comments

Comments

@rpolitex
Copy link

rpolitex commented Oct 4, 2023

Hi,
It's Roman, CTO in the embedded dev team Sinai RnD.

Intro

We have wide plans to use the Wakaama Library as the base for the solution we are creating for our Client.
I see several times that people ask questions like "Is Wakaama compliant with LWM2M v.1.1 (or v.1.2)?".

To answer this question we have performed an analysis of the gap between the current Wakaama and LWM2M specification.
I'm happy to share our results with the community and receive feedback.

Basics

Some considerations:

  • this analysis has a preliminary nature, so mistakes are possible, no guarantees
  • we are focused only on the Wakaama Client and do not know anything about the Server/ Bootstrap Server functionality
  • Wakaama version under analysis 11662338

How to read the table

The Analysis is formatted as a table. It consists of 2 parts separated by a double vertical border.
The first part describes which version of the LWM2M Protocol Wakaama supports (for every LWM2M feature).
The second part (see in the comment below) shows the evolution of LWM2M features in different Protocol versions (from the introduction to the current state).

There is a color coding in the table:

  • LWM2M ver.1.0 - grey
  • LWM2M ver.1.1 - yellow
  • LWM2M ver.1.2 - green
  • LWM2M ver.1.2.1 - blue
  • no support - red

Analysis result

The full table is accessible in Google Spreadsheets

image_2023-10-04_20-03-47

@rpolitex rpolitex changed the title Which LWM2M version Wakaama Client supports? Which LWM2M version Wakaama Client supports? [ANSWER] Oct 4, 2023
@rpolitex rpolitex changed the title Which LWM2M version Wakaama Client supports? [ANSWER] [ANSWER] Which LWM2M version Wakaama Client supports? Oct 4, 2023
@rpolitex
Copy link
Author

rpolitex commented Oct 4, 2023

Second part of the table
image

@rpolitex
Copy link
Author

rpolitex commented Oct 4, 2023

@LukasWoodtli
Copy link
Contributor

Nice! Thank you for sharing!

@sbernard31
Copy link
Contributor

Probably a detail 😅, but about Core Link I understand that :

Note that :

  • LWM2M v1.2.x also add SenML-ETCH JSON and SenML-ETCH CBOR for Composite Operation. (I don't know this part so much...)
  • LWM2M v1.1.x also add Unsigned Integer Data Type. AFAIK, there isn't new Data Type in LWM2M v1.2.x.

@rpolitex
Copy link
Author

rpolitex commented Oct 5, 2023

@sbernard31 Nice! Thanks for the clarification.

I plan to collect all the feedback from the community and then update the table.

@rettichschnidi
Copy link
Contributor

This looks very informative. Thanks a lot!

I am starting to think we should have this kind of information stored close to the source code, and keep it up-to-date. Maybe this a good reason to start introducing some proper dev docs, e.g. a Sphinx based one, have it hosted somewhere?

@sbernard31
Copy link
Contributor

I am starting to think we should have this kind of information stored close to the source code, and keep it up-to-date. Maybe this a good reason to start introducing some proper dev docs, e.g. a Sphinx based one, have it hosted somewhere?

I agree.

At Leshan we put it in wiki :

but this is maybe not so smart because this information is strongly tied to the state of the code, so probably smarter to put in code repository. Same for documentation. (And we did same error in Leshan putting documentation in wiki too 😁)

@rettichschnidi
Copy link
Contributor

Could we host the rendered documentation somewhere on Eclipse infrastructure? Any experience with this?

@boaks
Copy link

boaks commented Oct 16, 2023

I started in Californium also with Wikis. After some time I moved the version specific information into Markdown along with the source in the modules. In some cases I also collect the version specific information history and put that always on the "main", so that it's easier for users to see the changes.

@sbernard31
Copy link
Contributor

Could we host the rendered documentation somewhere on Eclipse infrastructure? Any experience with this?

The simple way is to write your documentation in Markdown in your code repository and so you can use default github markdown rendering , Iike with current README. Personally I recommend this way.

If you want to do more (which will be probably more work and not sure if there is more benefits), you can eventually host your documentation in the Wakaama website ?

Maybe before to go on that direction, it could make sense to ask some advice to eclipse IT : https://gitlab.eclipse.org/eclipsefdn/helpdesk

@rpolitex
Copy link
Author

I think both ways have its own pros and cons.

  • wiki: more native integration with GitHub infrastructure (e.g. issues), better rendering, collaborative editing
  • MDown: better tie to the code, easier to maintain, keeps doc inside the repo

Seems wiki may be better for Wakaama users; while MDown is better for Wakaama developers.

Bottom line.
I vote for MDown for now, as far as we do not have a lot of external users yet.
If/when the situation changes - we may render MDown-based docs to the Wiki or Web-site or whatever.

@rpolitex
Copy link
Author

@rettichschnidi I hear advice to not use MDown for Docs. And use the reStructuredText text instead.

Like these articles: https://www.ericholscher.com/blog/2016/mar/15/dont-use-markdown-for-technical-docs/ and https://eli.thegreenplace.net/2017/restructuredtext-vs-markdown-for-technical-documentation/
And this discussion on Reddit

This also makes simpler integration with Sphinx in future.

(Personally, I don't have any experience with reStructuredText.)

@boaks
Copy link

boaks commented Oct 17, 2023

That may be a misunderstanding, github renders markdown on viewing via a browser.
The README.md is shown, when browsing the "code". Other ".md" may be referenced or rendered by click on them.

The point with the variants and dialects is easy, you need to stick to the parts supported by github ;-).
And sure, there are limitations, but on the other side, it's pretty easy and works well.

@sbernard31
Copy link
Contributor

sbernard31 commented Oct 17, 2023

@rpolitex thx for sharing this. 🙏

I thought Github was only able to render markdown. 🤦

But Reading : https://www.ericholscher.com/blog/2016/mar/15/dont-use-markdown-for-technical-docs/

Developers prefer it because GitHub supports it, though GitHub supports 9 different markup languages, including Asciidoc and reStructuredText.

So I quickly tested for :

And indeed they seem to be (at least partially) supported too 🤩 .

So I change my recommendation 🙂 :

The simple way is to write your documentation in Markdown any markup language supported by github in your code repository and so you can use default github markdown rendering , Iike with current README. Personally I recommend this way.

About markdown, I already faced some limitation (or rendering issue outside of github because of lack of standard), so I can easily imagine that it could have better choice. (but I didn't test it)

@boaks
Copy link

boaks commented Oct 18, 2023

I had a first impression for reStructuredText.

There may be others with more sophisticated opinion, but for me it looks very similar to markdown. It comes with a clearer structure, but my impression is tables seems to be not the strength.

One pain with that approach (painting in ASCII) is to recommend to use Chrome instead of Firefox.
(At least my Firefox breaks such ASCII paints ;-( ).

@LukasWoodtli
Copy link
Contributor

I vote also for developer documentation in the repo.
As for the markup language I'm fine with Markdown or with reStructredText.

@rettichschnidi
Copy link
Contributor

rettichschnidi commented Nov 1, 2023

IMHO, Tables are pain in both, reStructuredText as well as in Markdown. However, in Sphinx, it is quite easy to include a .csv/.tsv file as table. I found those quite easy to handle using a regular spreadsheet editor (like LibreOffice).

Going this way would require a hosting for the rendered Sphinx documentation however. Something I think is quite easy to do, and totally worth.

@boaks
Copy link

boaks commented Nov 1, 2023

I've collected some asciidoc experience in the past days.
For me that's very promising, see mobile-bienenstock-waage (German only).

@LukasWoodtli
Copy link
Contributor

The syntax of asciidoc looks nice. But I would prefer to be able to use a documentation system like Sphinx even if reStructuredText is not my favorite markup language.

@sbernard31
Copy link
Contributor

I didn't know sphinx and I have no idea if asciidoc is better than reStructuredText but just for completeness, it seems there also tooling with asciidoc :

@LukasWoodtli
Copy link
Contributor

I didn't know sphinx and I have no idea if asciidoc is better than reStructuredText but just for completeness, it seems there also tooling with asciidoc

I don't know about the tooling and ecosystem around asciidoc.
But Sphinx is well known by a lot of developers and widely used. See the (incomplete) list of projects using Sphinx in the documentation: Projects using Sphinx.
There are also a lot of extensions to Sphinx: tooling, plug-ins, themes...

But I'm not hooked to Sphinx. I can live with other solutions, too. I just feel that Sphinx would be a good solution.
I would also not add a lot of tooling from the beginning. We should just start to document things by adding markup files to the repo. But it would be cool if we could use a documentation tool as soon as we have some documentation pages put together.

@LukasWoodtli
Copy link
Contributor

It seems that this discussion here is not directly related to the topic of the issue. I'm going to open a new issue, where we can come to a conclusion.

@sbernard31
Copy link
Contributor

I would also not add a lot of tooling from the beginning. We should just start to document things by adding markup files to the repo.

👍

I just feel that Sphinx would be a good solution.

On my side, I think this is up to active committers to decide and I didn't see any veto about using reStructuredText/Sphinx. 🙂

@LukasWoodtli
Copy link
Contributor

See also #732

LukasWoodtli added a commit to husqvarnagroup/wakaama that referenced this issue Apr 8, 2024
LukasWoodtli added a commit to husqvarnagroup/wakaama that referenced this issue Apr 11, 2024
LukasWoodtli added a commit to husqvarnagroup/wakaama that referenced this issue Apr 25, 2024
LukasWoodtli added a commit to husqvarnagroup/wakaama that referenced this issue Sep 29, 2024
LukasWoodtli added a commit to husqvarnagroup/wakaama that referenced this issue Nov 5, 2024
LukasWoodtli added a commit that referenced this issue Nov 6, 2024
The table is taken from #729.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants