[GENERAL] Name and surname of main applicant
Evgenii Lisitskii
[GENERAL] Are you delivering this project as an individual or as an entity (whether formally incorporated or not)
Individual
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
12
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language
No
[GENERAL] Summarize your solution to the problem (200-character limit including spaces)
DE-UPLC: A Visual Studio Code extension that provides a debugger and visualization tools for Plutus bytecode, enabling developers to efficiently debug and comprehend their smart contracts.
[GENERAL] Does your project have any dependencies on other organizations, technical or otherwise?
Yes
[GENERAL] If YES, please describe what the dependency is and why you believe it is essential for your projectâs delivery. If NO, please write âNo dependencies.â
Visual Studio Code - as host for debugger
Alien-uplc - plutus VM as a code executor
[GENERAL] Will your projectâs output/s be fully open source?
Yes
[GENERAL] Please provide here more information on the open source status of your project outputs
The entire project, including the source code, documentation will be released under the Apache-2.0 license on GitHub.
[SOLUTION] Please describe your proposed solution
DE-UPLC is a Visual Studio Code extension designed to enhance the development experience for Plutus smart contracts. The extension will provide a debugger and visualization tools specifically tailored for Plutus bytecode (UPLC).
Key features of DE-UPLC include:
- Debugger: Developers can set breakpoints, step through the bytecode, inspect variables, and monitor the execution flow of their Plutus smart contracts within the familiar VS Code environment.
- UPLC Visualization: The extension will offer a visual representation of the Plutus bytecode, making it easier for developers to understand the structure and logic of their smart contracts.
By providing these features, DE-UPLC aims to streamline the debugging process, improve code comprehension, and ultimately boost developer productivity when working with Plutus smart contracts.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
DE-UPLC will have a significant positive impact on the Cardano developer community by:
- Accelerating smart contract development: With the debugger and visualization tools, developers can identify and resolve issues more quickly, reducing the time spent on debugging and troubleshooting.
- Improving code quality: The ability to step through the bytecode and visualize its structure will help developers write more efficient and optimized smart contracts.
- Lowering the entry barrier: By providing a user-friendly debugging environment, DE-UPLC will make it easier for new developers to start working with Plutus smart contracts, potentially attracting more talent to the Cardano ecosystem.
- Enhancing collaboration: The Visual Studio Code integration will enable developers to collaborate more effectively by sharing debugging sessions and visualizations, fostering knowledge sharing and teamwork.
[CAPABILITY & FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?
Evgenii Lisitskii, the main applicant, has extensive experience in developing developer tools and working with the Plutus programming language. His background in software engineering and familiarity with the Cardano ecosystem make him well-suited to lead the DE-UPLC project.
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
UI/UX Design and Architecture
Objective: Establish the foundation for DE-UPLC by designing the user interface, user experience, and overall architecture of the extension.
Activities:
- Create wireframes and mockups for the debugger and visualization components
- Define the architecture and technical requirements for integrating with VS Code and the Aiken-uplc project
- Establish the development environment and project setup
Acceptance Criteria & Evidence:
- UI/UX design documents and mockups
- Architecture diagram and technical specification document
- GitHub repository set up with initial project structure
Debugger UI Implementation
Objective: Implement the user interface components for the Plutus bytecode debugger.
Activities:
- Develop the UI components for setting breakpoints, stepping through bytecode, and inspecting variables
- Implement the user interactions and navigation flow for the debugger
- Integrate the debugger UI with the underlying debugger engine (to be developed in Milestone 4)
Acceptance Criteria & Evidence:
- Functional debugger UI components
- User interaction and navigation flow implemented
- Integration with the debugger engine (placeholder functionality)
- GitHub pull request with the implemented debugger UI code
UPLC Visualization UI Implementation
Objective: Implement the user interface components for visualizing Plutus bytecode (UPLC).
Activities:
- Develop the UI components for displaying the bytecode structure
- Integrate the visualization UI with the underlying bytecode parsing engine
Acceptance Criteria & Evidence:
- Functional UPLC visualization UI components
- Integration with the bytecode parsing engine (placeholder functionality)
- GitHub pull request with the implemented UPLC visualization UI code
Debugger Engine Implementation
Objective: Implement the underlying debugger engine for the Plutus bytecode debugger.
Activities:
- Develop the debugger engine to support setting breakpoints, stepping through bytecode, and inspecting variables
- Integrate the debugger engine with the Aiken-uplc
- Implement the communication layer between the debugger UI and the debugger engine
Acceptance Criteria & Evidence:
- Functional debugger engine
- Integration with the Aiken-uplc
- Communication layer between the debugger UI and engine
- GitHub pull request with the implemented debugger engine code
Visual Studio Code Integration
Objective: Integrate the DE-UPLC extension into the Visual Studio Code environment.
Activities:
- Implement the necessary extension points and APIs to integrate DE-UPLC into VS Code
- Set up the extension packaging and distribution pipeline
- Implement user settings and configurations for the extension
Acceptance Criteria & Evidence:
- DE-UPLC extension successfully integrated into VS Code
- Extension packaging and distribution pipeline set up
- User settings and configurations implemented
- GitHub pull request with the VS Code integration code
Testing and Documentation
Objective: Conduct thorough testing and create comprehensive documentation for the DE-UPLC extension.
Activities:
- Develop and execute a comprehensive test plan to ensure the stability and reliability of the extension
- Create user documentation
- Prepare the extension for public release and gather user feedback
Acceptance Criteria & Evidence:
- Comprehensive test plan and test results
- User documentation,
- Extension prepared for public release
- GitHub repository with the final codebase, documentation, and test reports
[RESOURCES] Who is in the project team and what are their roles?
Evgenii Lisitskii (Main Applicant)
- Role: Project Lead, Architecture, Development
- Responsibilities: Overseeing the project, designing the architecture, and contributing to the development of the extension.
Additional team members required:
- UI/UX Designer
- Role: User Interface and User Experience Design
- Responsibilities: Designing the user interface and user experience for the debugger and visualization components.
- Front-end engineer
- Responsibilities: Implementing the integration of DE-UPLC into the Visual Studio Code environment.
- Rust engineer
- Responsibilities: Implementing rust codebase for debugger
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
Milestone 1: UI/UX Design and Architecture
- UI/UX Design: 15,000 ADA
- Architecture Design: 15,000 ADA Milestone 1 Total: 30,000 ADA
Milestone 2: Debugger UI Implementation
- UI Development: 20,000 ADA
- Integration with Debugger Engine: 10,000 ADA Milestone 2 Total: 30,000 ADA
Milestone 3: UPLC Visualization UI Implementation
- UI Development: 20,000 ADA
- Integration with Bytecode Parsing and Rendering Engine: 10,000 ADA Milestone 3 Total: 30,000 ADA
Milestone 4: Debugger Engine Implementation
- Debugger Engine Development: 25,000 ADA
- Integration with Plutus Toolchain and Runtime: 15,000 ADA Milestone 4 Total: 40,000 ADA
Milestone 5: Visual Studio Code Integration
- VS Code Extension Development: 25,000 ADA
- Extension Packaging and Distribution: 5,000 ADA Milestone 5 Total: 30,000 ADA
Final Milestone: Testing and Documentation
- Testing: 20,000 ADA
- Documentation: 20,000 ADA Final Milestone Total: 40,000 ADA
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The DE-UPLC project represents excellent value for money for the Cardano ecosystem due to its potential to significantly improve the productivity and efficiency of Plutus smart contract development. By providing a powerful debugging and visualization tool, DE-UPLC will enable developers to:
- Save time and reduce costs: With the ability to debug and visualize Plutus bytecode directly within their development environment, developers can identify and resolve issues more quickly, reducing the overall time and cost of smart contract development.
- Improve code quality: The debugger and visualization features will help developers write more robust and efficient smart contracts by providing insights into the bytecode execution and allowing for easier identification of performance bottlenecks and optimization opportunities.
- Lower the entry barrier: By offering a user-friendly and integrated development experience, DE-UPLC will make it easier for new developers to start working with Plutus smart contracts, potentially attracting more talent to the Cardano ecosystem.
- Foster collaboration and knowledge sharing: The Visual Studio Code integration will enable developers to collaborate more effectively by sharing debugging sessions and visualizations, promoting knowledge sharing and best practices within the community.