firmata / protocol

Documentation of the Firmata protocol.
995 stars 151 forks source link

Obsolete Client Libraries should be marked as such #123

Closed jeffkarney closed 3 years ago

jeffkarney commented 3 years ago

TLDR... I think the listing of clients should be updated to inform people they are out-of-date, non-functional or abandoned. I'd be happy to help with this. But would like the opinion of others before I dig in.

At least the Go and PHP client libraries fail to work and for the most part haven't been updated in years.

The listed Go library has several issues with recent versions of Go and straight up doesn't work without modification. It also has other issues related to connection detection and resetting which require manually resetting the serial connection when trying to run more than once. It also doesn't support more than 64 pins making it fail on things like the the Atmega2560. Some forks exist that have fixed the issues for a specific person, but none of those seem to be from anyone that is maintaining them on an ongoing basis.

The PHP library, specifically https://github.com/ThomasWeinert/carica-firmata ... Well first of all the link to the library is broken. But it also will not work as is. The code tries to include libraries that don't exist or have different namespaces than what is in the code.

Over the past 2 days, I have attempted to create an application to simply turn on and off 16 relays with an Atmega2560. I decided on Firmata because I knew it has been around for a while and I assumed it would just take be a few mins (or at most a few hours) to grab a client library and write a few lines of code. Unfortunately it has been a nightmare. This is by no fault of Frimata itself, but the client libraries that exist (in Go and PHP) are either poorly written or unmaintained.

So anyways, I was looking for opinions on if it makes sense to detail these shortcomings on the client library listings. I would be happy to help test with the languages I am familiar with. I only see Firmata (or something similar) getting more popular as things move more and more to Web Based interfaces that simply call out to some hardware API for control. Or maybe we work with the community to get some "official" client libraries under the Firmata vendor that can be passed on to new maintainers as needed.

soundanalogous commented 3 years ago

A lot of Firmata client libraries are more or less "weekend projects" that seem to fizzle out quickly. The ones that survive have large communities backing them like firmata.js and johnny-five.js (which uses firmata.js under the hood). I remove references to broken libraries when I encounter them (which is rare these days). If you find a broken link or a library just doesn't work anymore, please submit a pull request to fix the link (if the library is still maintained by the link was broken) or to remove the reference to the library if it's no longer maintained and clearly broken.