Cosa: An Object-Oriented Platform for Arduino programming

The more important issues are abstracting and structuring the code base so that drivers, libraries, etc, can be added in a methodological fashion. Also I see a need to abstract IO functionality so that devices can be extended, replaced, etc. The IOStream/Canvas and IOBuffer classes in Cosa help a lot with this.

This won't happen as long as the Arduino company controls the IDE and you fit your stuff into that environment. The average user just won't use Cosa since what they get from Arduino is good enough for hobby use.

I was involved with BSD Unix at Berkeley. The goal of BSD was to replace AT&T Unix, not fit in. The open source Unix evolved into Linux and is the base for OS X and Android.

Open source Uinx happened because AT&T was impossible to deal with. The Arduino company provides a product hobbyists like or at least live with.

I have ported popular open source RTOSs to Arduino but don't see much interest.

I just accept Arduino and build little add-on libraries that may be useful to users.

I do think serious embedded systems need a preemptive priority scheduler. The research in the 1970s on scheduling with the Liu and Layland theorem on rate monotonic scheduling and Horn’s algorithm (earliest deadline first) are key to modern tools and design.

Object-oriented technology is nice but is hardly mentioned in modern courses on embedded system software like this http://chess.eecs.berkeley.edu/eecs149/.

Models of computation with time and concurrency are much more important than object-oriented software methods.