For the past few days I am trying to comprehend why / how this blockchain even gained it's recent popularity. From the perspective of a seasoned programmer I can see all the flaws it has and how painful it is to set-up for new developers. Even I am struggling.
Let's dive into the problems deeper:
1. Who the f**k decided to use Rust as a main language for Smart Contracts?
Coming from Ethereum background this one really does not spark joy. Rust is an idiotic language. Not really hard to learn but not really widespread as well. It's compilation time is atrocious and you will constantly bump into problems with "cargo" package manager. To be fair, I spent most of the last few days dealing with cargo dependency conflicts instead of coding.
2. Pain in the ass for newcomers
It has NO remix-like software like ETH / EVM chains have. And no, beta.solpg.io where you can not even inject your own wallet does not count. If you want to onboard new devs you need to make your software more accessible and not pain in the ass to set-up and work with.
3. Their naming is a joke
Solana team somehow wants to be different at all costs so they invented their own words. They don't call Smart Contracts contracts, no, they call them "Programs". Contract address is "Program ID" and god forbit calling contract-derived wallet a wallet. It's PDA now. Why? Because Ethereum Foundation came up with a name Smart Contract so you need to be different at all costs? This just spreads confusion. When I was reading documentation (and yes, I read it all and had a migraine from that) I was constantly confused and needed to traceback to previous pages to check what they mean by various special terms they invented. Just why? Stick the norm for god sake!
4. Their documentation is a joke
After you spend a significant chunk of time with installing stupid cargo packages and finally decide to run / build some examples they provide on their github you start to run into constant problems. Those examples does not build with a simple command. You will joggle packages here and there and install some third-party shady packages from people's recommendations on stackoverflow while hoping it will solve dependency issues.
Most of their JS examples does not work at all, miss requires, sometimes there are even spelling errors so variable "amount" is later "_amount" so it could never compile and you need to figure out why on your own. CLI examples tend to work, but only if you are on Linux-based system. If you try to do all that on windows you will soon bump into a wall of errors which has no good solution. You are FORCED to use linux-based OS.
5. Their online explorer is confusing
Speaking about their own online explorer https://explorer.solana.com/
- It is hard to distinguish between normal accounts and Smart Contracts, when both are just "accounts" (not even wallets, we are different here).
- Transactions are hard to read if not impossible to read.
- Smart contract state-changes are non-existent (sorry, PDA state-changes or how you guys call it) or hard to read. I never actually bothered to dig into it and got lost when clicking on addresses in explorer.
- Heck it is even impossible to tell which calls have been made in smart contract and if account has more than 100 tokens or more than XXX transactions you can not see the full history at all because god knows why. (caching or too big query to db? Cmon.. it's 2024)
- Smart Contracts have no option to be "verified" like they do on etherscan. This space needs more transparency, not less.
6. No meaningful errors
Or sometimes no erorrs at all. I was trying to send TX from local build 1.16.25 to online cluster 1.17.12 and instead of getting a meaningful error it just kept loading indefinitely until hash expired. At the time I did not know I had mismatch of versions so I started digging through the internet finding one guy at the end of the world on stackoverflow who pointed me to right direction. This is also where I learned that 1.17.12 is not available for windows, forcing me to spin-up Ubuntu instance and basicly start over.
Also errors like "ErrNoAcc" or "Program failed: custom program error: 0x7dc8348c" are not really nice to debug...
Recommendations:
If you guys want to make your chain more popular / easy to work with, you need to implement the following:
1. It is industry standard to use Solidity and you need to support Solidity. I know you are implementing Solang which is fine but so far it is unstable and unusable for anything else than Hello world program.
2. Re-write documentation so it uses normal words, no more Programs, TPU, TVU, PDA and shit like that. It all has names so just use those names. Do not confuse people just because you can.
3. Ditch the stupid Cargo package manager or maintain your git repositaries so it is easy to download / setup / work with. It should not print errors on first build.
Closing thoughts
From developer's point of view this is a small disaster waiting to happen. All those problems prevent new devs coming to space villingly. You guys are basicly preventing people from using your chain.