Composable supports open-source linter via grant

Composable Foundation
Composable Finance
Published in
4 min readDec 8, 2022

Disclaimer: Information as of Dec 8. For the most recent updates, dive into our comprehensive documentation here.

Composable is pleased to announce its support for the continuation of Substrace, representing part of our broader goal of improving the user experience for the blockchain space. To help achieve this goal, Composable is providing a grant to the new Substrace team for ongoing maintenance and feature development.

Substrace, an open-source linting tool for Substrate development, was initially ideated, developed, and deployed by our very own CTO, Karel. As Composable’s and Karel’s full attention is on the deployment of our technology and product launches, Substrace is now brought under the responsibility and supervision of a new development team has identified the importance and need for it in the blockchain space. To further the development of Substrace, Composable is happy to provide the new team with an initial grant of $12,500 for the ongoing maintenance and feature development of Substrace.

What is Substrace?

Substrace is an experimental static analysis for projects built with the Substrate framework. More specifically, Substrace serves as a tool for linting Substrate projects for specific gotchas and other errors. Linting refers to the automated checking of source code for errors in program or style. In other words, a lint tool or “linter” like Substrace is a static code analyzer that developers can use to check for known issues.

Developers using Substrace will implement it as part of their continuous integration pipeline on GitHub, to help avoid pushing error-prone code to their repositories. Polkadot and Kusama are powered by Substrate and Rust, thus, our efforts naturally support our Composable ecosystem (given our parachains on both networks), while also enhancing broader DotSama security. The result will be a greatly improved developer experience for the entire Substrate community.

Grant scope

Composable has mapped out the relevant milestones and their respective grant allocations, separated into 3 categories for Substrace:

Infrastructure related

  • [$500] Publish Substrace as a cargo package.
  • [$500] Update Substrace to be compatible with the latest compiler internals.
  • [$500] Provide Substrace as a stand-alone tool independent of `dylint`.
  • [$500] Create Github action for running Substrace (for better CI times).

Product related

  • [$1900] Update `no-panics` lint to perform checks by itself, removing the dependency on `clippy`.
  • [$1900] Add the `missing-transactional` lint for detecting extrinsics without the `#[transactional]` marker.
  • [$1900] Add the `enable-singlepass-benchmarks` lint to verify that benchmarks are compiled and run during unit tests (single pass).
  • [$1900] Add the `xcm-config-check` lint to validate if `pallet-xcm` has been configured properly.
  • [$1900] Add the `extrinsics-reordered` lint and subcommand to detect extrinsic reorderings.

Optional

  • [$1000] Create the `path_gen` library.

In summary, Substrace is positioned to be a useful linting tool with a very basic set of lints initially that shows its potential and which can later be extended. Substrace will be easily implementable to one’s CI, easing development within the Web3 ecosystem all around.

Future work

Further development to Substrace will extend its set of features to encompass more lints and make maintenance partially automated in the future. Ongoing maintenance of Substrace will be necessary to keep it up to date with the latest Rust compiler version since Rust does not yet have a stable API and calls may suddenly change.

Future work also encompasses:

  • Presenting the features implemented in this grant proposal at conferences to garner more funding for guaranteeing continued maintenance and extending the feature set of Substrace.
  • CI integration, extensions for IDEs, and text editors may also be desirable.
  • Automatically crawling Substrate repositories on Github and running Substrace to show more people the power of Substrace.

Conclusion

Ultimately, Substrace will help the Web3 ecosystem be more resilient to human error and malicious intent. We are thrilled that a team has come forward to further maintain and develop this open-source tool for the betterment of blockchain. By helping developers more easily check a pull request or commit for common errors that are contained in the lints, companies can more easily hire new developers that do not yet know about the intrinsics of what these lints try to prevent. We are looking forward to utilizing Substrace within our own projects at Composable, and are doubly excited to see the benefits in store for the entirety of DotSama.

Legal Disclosures & Disclaimers: https://www.composable.finance/disclaimer

For more information about Composable and how it is architecting the unified DeFi landscape of the future and composing DeFi for mass adoption, check out our socials:

Twitter | Telegram | Discord | Website | GitHub | LinkedIn | Youtube

--

--