Recently a group of Blockchain enthusiasts at the co-working space I occasionally work from decided that it was time we stopped talking about Blockchain and actually learned how to create something based on it. We wanted to create a coin or token for the community to use internally, and whilst the project has stalled for now, I started investigating Ethereum in more depth, and the language it uses for creating smart contracts, . I will cover the language itself in more detail in the future (when I understand it more myself!), but in this post, I will cover some of the tools available for working with the language. Solidity Your Language of Choice Your starting point is , available for all operating systems and in , , , and . All support the full breadth of classes and methods for Solidity and many of the other tools listed here will need them as dependencies. the official Ethereum clients Go C++ Rust Python There is an unofficial client for . The repository I linked to is out of date, but it contains a useful reference to where to now find the libraries you need. JavaScript Remix Mix promised to be a fully-fledged Solidity IDE, but it never materialized and is its the web-based alternative. You can lint, compile, debug, run, and analyze your Solidity code based on different versions of the Ethereum compiler. You can also run your own in the browser, or as a browser extension. Remix local copy of Remix Wallets The official Ethereum applications allow you to deploy contracts to networks, but not much else, so you should make sure your code is finished before using them. wallet and mist JetBrains IDEs If you use any of the IDEs based on the IntelliJ platform, then that supports formatting, snippets, and code completion. there’s a plugin available Eclipse IDE Papyrus is a UML modeling environment for the Eclipse IDE (and the Oxygen XML editor), and is a plugin for Papyrus that lets you convert UML models to Solidity. For experienced programmers who are new to smart contracts, this is a great way to model your ideas in languages that are familiar to you. uml2solidity Atom I am a big Atom fan, so I was delighted to find a selection of packages available with Solidity support. There’s based on coding standards from the , and based on . They take different approaches to configuration, has far more users, and I couldn’t even get to work, so that may make deciding between the two an easy choice. And finally, there’s and that adds support for Solidity and , another language you can use for creating smart contracts. the Solidity linter solc npm package the solium linter the solium project linter-solidity linter-solium autocomplete for Solidity language-ethereum Serpent The lets you compile and deploy Solidity code from the editor, but it’s complicated to setup and you have to know what you’re doing as it requires several Ethereum related tools to already be installed, and working, on your machine. etheratom package Deployment Frameworks You know when the development community has started to accept a language when it starts creating frameworks for it. Unsurprisingly Ethereum has a couple of options. claims to be the most popular option, supporting compilation, testing, deployment, and dependency management. Truffle is similar, and also offers integration with for storage-based solutions and or for communications-based applications. Embark IPFS whisper orbit is a simpler CLI tool for package management, testing, and deployment of smart contracts. Dapp For more enterprise-like projects, offers a full-stack platform for creating private blockchain applications that promise to fit into any of your existing toolchains. BlockApps An Ecosystem of Constant Change The blockchain space is in constant flux and thus a list of tools will not be comprehensive for the foreseeable future. If there’s anything missing from this list, please add it to the comments below. Originally published at dzone.com .