Hacker News new | ask | show | jobs
by vertak 1654 days ago
To any Fe developers reading this: please put a non-trivial code snippet of Fe, with code comments that highlight the improvements over Solidity, front and center on the README.

I am a longtime smart contract developer who has been burned by Solidity’s downsides so I am excited about new EVM languages. I’ve read the Fe README, the announcement blog post, and the Uniswap v2 examples, but still have no concrete set of improvements over Solidity that I can point to. Maybe it’s just because things are still early, but from 15 minutes looking at Fe it still seems like Solidity but this a Pythonic syntax. As a Solidity dev, I want to see concretely how Fe improves on my existing smart contract language.

Thank you for pushing the frontier on smart contract development! I feel we’re in the very beginning of smart contract development and languages like Fe can be the path towards preventing tons of these hacks we see every week.

2 comments

Fe founder here. I'm not currently actively working on the project and haven't been for a while. That being said, a useful bit of context is that Fe was also originally conceived as a response to Vyper. In fact, it used to be called "Rust-Vyper." Vyper was just like what you say; a python-looking smart contact language that didn't work much different from Solidity. However, it actually explicitly removed certain features in the name of security. I felt like some of what was removed was actually pretty useful and their removal might have actually decreased security (imports, multiple contracts per file, and so on). So some of what I felt Fe should do was just add those things back in.

Vyper also had other issues such as (IMHO) its choice of implementation language which led to a lot of internal tech debt. Also, at the time I was working on Vyper, it actually used Python's standard parser library and so we often had to shoehorn language features into the Python syntax. Vyper may have corrected those things since then but I don't know. In any case, I eventually just decided to start over in my spare time using Rust as an implementation language.

There was other work planned for Fe such as providing a "strict" compiler mode that would facilitate formal verification of contracts written in Fe (that was basically a goal of Vyper). Also, we planned to provide a thorough specification and semantics for the language also for that purpose. I believe a lot of those plans are still in place but the current team should probably comment.

As you say, I think part of the issue is that things are still very early. The core devs are always figuring out useful things to add along the way that end up differentiating the language from its competitors. I'd say more but I'm on my phone :).

Seconding this. It’s a broader problem I find on open source repos where they bury or leave out the info a first time visitor wants: what does this thing do? Why is that better? What does it look like in practice?