RIOT-OS/RIOT/examples vs RIOT-OS/applications

Hi everyone,

I was about to add a PR for a RIOT application (a client for i2ot, a gateway to connect sensor boards with cloud services), but I'm not sure which repository I should add it to.

There's of course RIOT-OS/RIOT/examples which shows you how to add shell commands, do basic networking etc., and I think it's a very good idea to ship this with the RIOT OS source code.

Then there's RIOT-OS/application, which contains a sniffer, some openwsn stuff, and a microcoap example.

Imho specific purpose applications should go in the latter, and general purpose stuff (such as the gnrc_networking example) should go in the former. Is there a policy/rule/wiki entry that distinguishes the purposes of the two?

The reason I'm asking is that for a few weeks now, both repos contain a CoAP server based in the microcoap library. Both are pretty generic, so you could argue that it should go in RIOT-OS/RIOT/examples, but do we really want examples of every library RIOT supports in that folder?

My application, the i2ot client, is of course rather specific, so I think it should go in RIOT-OS/applications. But because of the current situation, I decided to ask and perhaps resolve this matter for future PRs.

Best, Lennart

Links:

https://github.com/RIOT-OS/RIOT/tree/master/examples https://github.com/RIOT-OS/applications https://github.com/i2ot

Hi Lennart,

thanks for bringing up this question here on the list.

Imho specific purpose applications should go in the latter, and general purpose stuff (such as the gnrc_networking example) should go in the former. Is there a policy/rule/wiki entry that distinguishes the purposes of the two?

So far, there's no particular documentation about this, but I think the distinction you made, makes sense and is quite aligned with my understanding of the repositories. I think it is important to have all (crucial) RIOT features demonstrated by an according code example inside RIOT's repository.

The reason I'm asking is that for a few weeks now, both repos contain a CoAP server based in the microcoap library. Both are pretty generic, so you could argue that it should go in RIOT-OS/RIOT/examples, but do we really want examples of every library RIOT supports in that folder?

I think it makes sense to demonstrate how to work with microcoap on RIOT with a simple example here. One could think about having a more complex CoAP example based on microcoap in the application folder, too. But I agree, currently both applications seem quite similar and I would vote for removing the one in the applications repository which is probably a bit outdated anyway.

My application, the i2ot client, is of course rather specific, so I think it should go in RIOT-OS/applications. But because of the current situation, I decided to ask and perhaps resolve this matter for future PRs.

As far as I understand your purpose, I would agree with your conclusion.

Cheers, Oleg