
Hi Christian,
I just want to say hello and tell you what an amazing work you do :). With xpcc you achieved exactly what I tried to to build for the last ~6 years, but I never had the time nor the resources to actually get something useful.
Thanks for your kind words :-D Your yalla project is impressive too, especially with its thorough use of C++11. I found your lib while researching for safe register access strategies. It’s certainly the most beautiful of the solutions I found.
Why is this project not more popular?
Ugh. Here are a few points ;-) 1. Naming. `xpcc` is not a name that connects well to the microcontrollers and C++ combination. Just type `avr c++` or `stm32 c++` into Google and look at the results. We have certainly improved over the last year, with a better homepage, better title (C++ Microcontroller Framework) and better documentation, but it’s still not very visible. We also gave a talk at FOSDEM’14, which didn’t really lead to a higher popularity. 2. We cannot compete with commercial frameworks like Arduino, mbed and various others, which have hired full-time engineers to build platform support and start a community. We are only a handful of students that do the best we can in our sparse free time. 3. That being said, xpcc has incomplete documentation. A lot of concepts are working very well and are somewhat documented in doxygen, but the higher concepts are not well documented. Conceptual documentation is *a lot* of work, but we have started a developer blog (blog.xpcc.io), where we pick certain xpcc features and explain them in detail. 4. We don’t really have a release strategy. This is because xpcc is a side project of us building autonomous robots for the Eurobot competition [1]. We have about 10 other internal repositories of similar complexity just with robot code, which all depends on xpcc. This added internal dependencies you don’t see, but influence xpcc quite a bit. 5. I think there are few developers that approach microcontroller programming from the high abstraction level that xpcc has. We make extensive use of code generation and C++ templates, which is a path that very few other embedded libraries (none?) use. This complexity probably scares off a lot of developers. Just to name a few…
I only stumbled across by chance. I think it deserves allot more attention. Maybe some advertisement in the big µC forums would help?
Perhaps. But let’s not beat around the bush here. I think to say that C++ is a very disputed topic when it comes to its use on microcontrollers is an understatement. Every now and then there are discussions on how to properly use C++ on mikrocontroller.net (you can find them on your own ;-). They usually get stuck in an endless loop when the "experts” battle about the performance of basic C++ features with superficial knowledge. I mean, just ask about when virtual tables are actually generated and watch the wars escalate until the universe implodes. Such toxic discussions are really terrible and probably make a lot of C developers not even consider C++ at all. We are divided whether presenting xpcc in such a forum is going to make things better or worse for xpcc. I don’t want to end up justifying and arguing over the use of C++ in xpcc on the internet [2]. (There are also enough amazingly detailed talks about the efficiency of C++ on microcontrollers, like here [3]). I think such issues can only be solved with thorough documentation and examples, but that’s not a *fast* solution for xpcc. In the mean time, you would have to find the right place or forum to present xpcc, and I haven’t really found it yet.
You will probably hear more from me in next time as I will use xpcc for various projects. I will also gladly contribute my work. For starters I wrote a driver for the PCA9685 PWM controller and I'm just about to create a pull- request.
Done. That was fast… @all: The concepts used in the device drivers (especially our use of Coroutines for cooperative scheduling) are quite new (developed last summer). So until this is properly documented please don’t hesitate to write me an email, if you’re stuck. Cheers, Niklas [1]: http://www.roboterclub.rwth-aachen.de/cms/ [2]: https://xkcd.com/386/ [3]: http://aristeia.com/TalkNotes/C++_Embedded_Deutsch.pdf [4]: https://github.com/roboterclubaachen/xpcc/blob/develop/src/xpcc/driver/inert... [5]: https://github.com/roboterclubaachen/xpcc/blob/develop/src/xpcc/driver/inert...