Although this is my first blog post, many people may already know me as the person behind Solidity. I recently took over the leadership of the C++ team and would like to share my vision for future development.
Ethereum is a free software project that anyone can use and improve. From what we have seen in our conferences and meetings, there are a lot of people working on projects other than Ethereum, but we only have a small team working on the actual platform. Ethereum should be an open project that invites anyone to propose improvements, implement them, and get them accepted.
As the leader of the new C++ team, I will do my best to make the barrier to entry as low as possible, not only for users (DApp developers) but also for developers (Platform developers). This is a necessary step, and I am convinced that this is the way software should be developed, especially software that is intended to be beneficial to humanity as a whole.
Of course, the community can only support us, we can’t ask anyone to develop an important feature with a deadline in their spare time. That’s why the core team will focus on key software components and many other things will be optional. We will leave any duplicate work between the Go and C++ teams unless it is essential to find consensus bugs and work hard to remove the invisible “language barrier” and bring the teams closer together to work as a cohesive team.
This means our priorities will be Solidity and Mix (the smart contract IDE and debugger), while the C++ implementation of ethereum/web3 (“eth”) will align its interface with the Go Geth implementation, so the interfaces Existing tools like Mist, the Ethereum wallet, the Geth console, and other tools can be connected to both backends without change.
On the other hand, this means that we cannot support developing the C++ AlethZero UI into a full DApp browser and would be happy to see its unique features (mainly the blockchain explorer) integrated as a DApp in Mist.
From a more technical point of view, our current roadmap is as follows, while most of the items for eth depend on our ability and perhaps how much help we get from outside contributors.
If you want to help, please read our contributor guide or contact us at grid.
Solidity:
The general idea is to make Solidity more flexible and allow the implementation of generic data types.
Expected specific features:
- anonymous functions to be used in internal callbacks for functions like map, reduce, sort, and others, but also for cross-contract (or cross-chain) asynchronous callbacks
- write templates, especially for libraries to allow reusable data structures
- online assembly
Inline type and assembly templates together are expected to speed up the implementation of other features.
Mix:
Mix’s unique feature is its source-level Solidity debugger. We plan to extend it so that you can also debug existing contracts. Furthermore, we want to integrate existing solutions for package management and testing (dapple, truffle, boarding, …).
Specific characteristics:
- debug past transactions live or in a test chain
- run javascript unit tests directly from the IDE
- github integration (upload from/save to repository, upload libraries directly from github)
- why3 integration (formal verification)
eth:
We will make eth more flexible and interoperable with other components of the Ethereum ecosystem. This allows us to remove features that are already implemented elsewhere, making eth easier to build and maintain. Also, we can more easily target embedded devices and different platforms. We also want to make the just-in-time compiler available for other implementations.
- reduce external dependencies if possible, improve build process
- replace eth console with nodejs app (will remove v8 as dependency) or “get attach”
- quick sync
- improve just-in-time compiler on small numbers
- state pruning
- thin client
- embed flu executable from private chain/consortium into normal executable (depending on capacity)