How to choose from competing libraries

Hello fellow members:

When I search for a library to install (lets use ESPAsyncTCP for example) I’ll get a list that includes (in PlatformIO order…)

“ESPAsyncWebServer-esphome by ESPHome Team”
“ESPAsyncTCP-esphome by Hristo Gochko”
“AsyncTCP by ESP32Async”
“ESPAsyncWebServer by Hristo Gochkov”
“ESPAsyncWebServer-esphome by ESPHome Team”

“WebSockets by Markus Sattler”
many more…

My first question is…
When I select the 1st, and the 5th choices, I can’t tell the differences between them. Is there a difference? If not, why does it show up in the list twice (or more?)

Second question…
Given a random choice, and knowing nothing about the libraries, should I always pick the ESPHome Team vs the Hristo Gochkov or someone else? I assume the different authors will have different features, can I assume one will be more reliable then another?

Third question, Can I get PlatformIO to show the version number in the choice box? I get the number of downloads (pretty useless information) the number of examples, and the platform.

Fourth Question, why does something like “WebSockets” show up at all? I didn’t search for that. Is there a better way to filter the results?

Thanks for any help on this subject, I am thrilled there is an alternative to Arduino.

Thanks, Mark.
Win7 32 bit
VSCode 1.70.3
PlatformIO 6.1.16

One thing first: since there is a problem with opening external links in PlatformIO (Platform IO does not open the external browser for login and links) it is better to query the registry via https://registry.platformio.org/ directly.

If you want to use ESPAsyncWebServer, please search for “ESPASyncWebServer”, not for “ESPAsyncTCP”. This will give better search results:

mathieucarbou/ESPAsyncWebServer
Asynchronous HTTP and WebSocket Server Library for ESP32, ESP8266 and RP2040. Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.

25·TOP 100·109·Published a month ago

me-no-dev/ESPAsyncWebServer
Asynchronous HTTP and WebSocket Server Library for ESP32, ESP8266 and RP2040. Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.

47·TOP 100·6·Published 23 days ago

esp32async/ESPAsyncWebServer
Asynchronous HTTP and WebSocket Server Library for ESP32, ESP8266 and RP2040. Supports: WebSocket, SSE, Authentication, Arduino Json 7, File Upload, Static File serving, URL Rewrite, URL Redirect, etc.

74·TOP 100·66·Published 5 days ago

esphome/ESPAsyncWebServer-esphome
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32

8·TOP 100·81·Published 4 months ago

ottowinter/ESPAsyncWebServer-esphome
Asynchronous HTTP and WebSocket Server Library for ESP8266 and ESP32

26·TOP 100·81·Published 4 months ago

At the bottom you will See “Published xxx ago” So you can see which one is outdated and which one is actively maintained.


A short story about ESPAsyncWebServer:

me-no-dev/ESPAsyncWebServer is the “original” one. But was not maintained for years.

A few months’s ago, mathieucarbou forked the repository from
yubox-node-org/ESPAsyncWebServer which is a fork of me-no-dev/ESPAsyncWebServer and continued the work. He registered this library as mathieucarbou/ESPAsyncWebServer .

In between me-no-dev & mathieucarbou started to work together an moved their work to ESP32Async/ESPAsyncWebServer - See here:

Project moved to ESP32Async organization at GitHub - ESP32Async/ESPAsyncWebServer: Async Web Server for ESP32

So in my opinion, ESP32Async/ESPAsyncWebServer is “the one” to use.


Now the answer to your questions 1 to 3:
Please search for “AsyncTCP-esphome” PIO-Home / Libraries. You will get 2 entries:
AsyncTCP-esphome by Hristo Gochkov (562,622 Downloads)
AsyncTCP-esphome by Hristo Gochkov (212591 Downloads)

Now do the same search via the registry website:

esphome/AsyncTCP-esphome - Published 5 months ago
ottowinter/AsyncTCP-esphome - Published 4 years ago

Here you can see, both libraries are registered by different users.
If you follow the github links you’ll see

ottowinter forked AsyncTCP from me-no-dev
esphome forked AsyncTCP from ottowinter

So you have to read a bit more detailed about the libraries, how old they are, what’s their latest version etc to find the “best” for you.

Following the link via the registry brings you to links2004/WebSockets

In the description you can read “ESPAsyncTCP is required”. So there is a relation between links2004/WebSockets and ESPAsyncTCP and that’s why the search engine showed links2004/WebSockets as a result.

1 Like

Thank you sivar for all this research. I will follow some of those rabbit holes you suggested. It is good all this is open source, it means there is a lot of people working on improvements, but that comes with a price. Namely, the workload of finding the best solution for me. Lately, it is taking me longer to research these libraries then actually write code to do my work. M.

The alternative is write everything yourself :slight_smile: