I've finally published v0.0.1 of zencan to crates.io.
After a big push back in June to get to something that more or less worked, I published zencan on github and then proceeded to lose momentum for a while. My attention wandered to other things, and I've been traveling a lot. But in the meantime, it has been out there, and I can tell that at least a few people have been trying to use it, because some of them have reached out to me about it. The project even picked up a second contributor: Ettiene provided some examples for the esp32, as well as fixing some bugs. I can also see from the search traffic that people are out there searching for "rust canopen". All of this is good motivation to put more work into the project.
I put off publishing the crates initially because I was hoping to resolve some changes to a dependency I had forked. After radio silence from the maintainer1, I ended up working around that easily enough. Beyond that, it has just been a nagging sense of perfectionism -- there are more features I should implement or better docs to write before it was worth publishing a crate. Somehow pushing the crate feels more symbolic than throwing some code onto a github repo. It feels like more of a statement that "this is actually good enought to use".
But I decided it will be fine, and I think the practice of releases, writing changelogs, considering breaking changes more, etc will be good for the process.
Also! The timing is good now because rust v1.90 stabilized multi package publishing! One of the authors of this feature wrote a good blog post about it. Zencan is broken up into many crates, so this made the releasing process a lot easier.
Now there are more features to work on. Top of the probable list are:
- CAN-FD support
- Refactoring the device config / object dictionary management code, and adding EDS export
- SDO Client Updates- blocking client support
- no_std client support
 
- SYNC support (client and node)
- Not trying to throw any shade. I have been in that position, and will likely be again. Publishing some open source code doesn't obligate someone to support it for randos like me forever.↩