In my networking class in college, our final project was to create a location sensing mesh network of devices running Contiki. The devices would receive a ping from a beaconing device and we had to locate it. We only had to worry about two axes, but the walls still made things difficult. It was a pretty fun project! It made me really interested in networking stuff.
I wish I still had the course material and code but unfortunately I lost the laptop it was on.
The magic source of Contiki is IMHO the use of protothreads as a lightweight concurrency system. Protothreads can also be used to implement synchronous programming models - like this one: https://github.com/frameworklabs/proto_activities
The wiki page says it all, but I'll highlight - Contiki has been written by Adam Dunkels, the one who invented Protothreads (coroutines using Duff's Device), uIP, lwIP and a TCP stack that fits into a single tweet - http://dunkels.com/adam/twip.html
You sure? iirc they were just "stackless" threads with true cooperative switching (so like a true context switch by changing PC but not having to switch SP and keep multiple stacks).
If you would be right I could stop being salty about something I have ever been salty since 15 years or so: I "invented" (no not really, people did this before, but in the context of the raising meshed tiny sensor network hype at that time) in my thesis, then a researcher with connections to SICS took that with him and to this group, and half a year later Contiki appeared with the same approach (just more polished and a much better PR to contend with the much uglier TinyOS).
For my master thesis, 15 years ago, I was working with motes (the component of wireless sensor network) to create a new authentication algorithm and we use Contiki and TinyOS (https://github.com/tinyos/tinyos-main). I am glad to hear that Contiki it's still alive, it was more complex than TinyOS, but also more features rich.
At some point I heard Atari 800 (released in 1979) was the oldest machine ever to connect to the Internet, thanks to Contiki. But a quick google now suggests older DEC machines from mid 70s. Still impressive though.
Contiki has always amazed me. One of my future projects has porting it to some random old system I like and expanding the functionality on it. Maybe even I retire. sigh
I had a teacher during my undergrad who promised us he'd pretty much only use Contiki for a very hands-on IoT course. I was really excited so I fiddled around with it during holiday break in anticipation, going a bit beyond the initial tutorials.
During the entirety of the class however, we ended up just installing the thing and never doing a single example. Only one class had us programming and that was for a surprise Arduino assignment.
To this day though, I wonder how things could've been had he followed on with Contiki. It's nice to see it here on the front page after all that time.
The Contiki-NG project doesn't seem to show much other than the ARM based boards; nothing about the Z80 support can be found, at least in the docs I looked at. Did I miss it?
>"Contiki provides multitasking and a built-in Internet Protocol Suite (TCP/IP stack), yet needs only about 10 kilobytes of random-access memory (RAM) and 30 kilobytes of read-only memory (ROM). [1] A full system, including a graphical user interface, needs about 30 kilobytes of RAM.[5]"
I could have sworn I originally heard of this OS in the context of it running on the C64. Searching for it confirms this with information from the C64 wiki, but it only links to the main site which seems to to have removed any reference to it.
I wish I still had the course material and code but unfortunately I lost the laptop it was on.