@njelich.near [Posted on DevHub](/devgovgigs.near/widget/Post?id=2794) ## Solution: Development Environment Containerization + Browser Based IDE Integration ###### Requested amount: 5000 USDT ###### Requested sponsor: @neardevdao.near ## Overview Hello NEAR community! I am Noah Jelich, and I am excited to propose an enhancement to NEAR that will streamline the development and deployment of Rust smart contracts, as well as reduce the barrier to entry for new developers in the system. The goal of this proposal is the creation of a `.devcontainer` configuration in NEAR repositories that includes the necessary tools for easy online and remote IDE editing and deployment of NEAR Rust smart contracts, including the installation of the near-cli in the custom environment. The primary goal is to provide an ideal starting setup within GitHub Codespaces or alternatives, allowing developers to experiment in the cloud before transitioning seamlessly to a local working environment, without deviating from best development pratices. ## Motivation The motivation behind this proposal is to address concerns raised in previous discussions in the NEAR Tools Community about the limitations of browser-based IDEs, ensuring a more reproducible development environment and better support for testing. This led to the idea of a devcontainer configuration, which offers many advantages and options for developers, some of which include: 1. **Consistent Development Environments**: devcontainer ensures consistency across various development environments. It allows developers to define and share a standardized development setup, minimizing compatibility issues and ensuring that everyone works with the same dependencies and tool versions. 2. **Easy Onboarding for New Developers**: With a devcontainer setup, onboarding new developers becomes a breeze. They can quickly clone the repository and spin up their development environment without worrying about installing dependencies or configuring their IDE. 3. **Reproducible Builds**: By specifying the development environment in a devcontainer.json file, developers can create reproducible builds. This is crucial for maintaining a stable and predictable development process, making it easier to track down issues and collaborate effectively. 4. **Containerization**: devcontainer leverages container technology, providing an isolated environment for development. This isolation ensures that the development environment does not interfere with the host system, and developers can avoid conflicts with their local setup. 5. **Support for Various IDEs**: While initially designed for Visual Studio Code (VSCode), the devcontainer concept is flexible and can be adapted for other IDEs. It opens up possibilities for developers to choose their preferred development environment, including browser-based IDEs or other code editors. 6. **Collaborative Coding in the Cloud**: devcontainer configurations can facilitate collaborative coding in the cloud by integrating with services like GitHub Codespaces or GitPod. This allows developers to work on the same codebase in a shared, cloud-hosted environment, promoting collaboration and easing the onboarding process. 7. **Extension of CI/CD Pipelines**: devcontainer configurations can align closely with Continuous Integration (CI) and Continuous Deployment (CD) pipelines. This ensures that the development environment matches the production environment closely, reducing potential issues during deployment. 8. **Tailored Development Environments for Different Repositories**: Developers can customize devcontainer configurations based on the requirements of specific repositories. This flexibility enables them to tailor the development environment to the unique needs of different projects. ## Deliverables Upon completion, the grant will deliver: 1. **Customized .devcontainer configurations** for the [near-new-project-template repo](https://github.com/near/cargo-near-new-project-template), that can be used with most NEAR smart contract projects. 2. Inclusion of **up-to-date** tooling to provide an ideal starting setup for Rust smart contract development in GitHub Codespaces. 3. **Documentation** on how to leverage the Devcontainers and the GitHub Codespaces environment for NEAR development. 4. Several **Q&A and AMA** sessions where the solution will be presented to NEAR developers. 5. **Minor updates** to the configuration to ensure up-to-date tooling for 3 months. ## Timeline and Funding The estimated timeline for the initial implementation is 2 weeks + 3 months of continued support, with a total funding requirement of 5000USDT, paid at the start of the work. ## Team This project will be led by [Noah Jelich](https://www.linkedin.com/in/njelich/), an experienced member of the NEAR community with a proven track record in similar projects.