Page tree
Skip to end of metadata
Go to start of metadata

Abstract

Solang is the compiler for the Solidity language which is used to write smart contracts for fabric and ethereum. A Language server for Solidity language will be developed that can help the developers with providing proper code compilation messages along with features like code formatting, syntax coloring and much more.

Mentor and Mentee

Mentor: Sean Young 

Timezone: UK

Rocketchat(Hyperledger): seanyoung

Mentee: Shivam Balikondwar

Timezone: IST

Rocketchat(Hyperledger): sbalikondwar

Mail: cha0sk1ng101010@gmail.com

Communication channel: Jitsi + Rocketchat + Github

repo: https://github.com/hyperledger-labs/solang-vscode

Deliverables

  • VScode extension that can be installed in VScode IDE( later in other IDE's ).
  • Language Server for Solidity using above extension.
  • Tests for the above implementation.
  • Documentation of the Language Server and extension.
  • *Extension published on the VScode store for use by larger community.

Milestones

Eval 1:

  • VScode extension(basic functionality) + Syntax highlighting.
  • Implement Rust server to receive and send JSON-RPC responses from VScode client.

Eval 2:

  • Code compilation of Solidity language through Solang backend using VScode extension.
  • Tests and Documentation for same.

Eval 3:

  • Symbol definition for Solidity variables and functions.
  • Tests and Documentation for same.
  • *Code formatting (initial work).

Eval 4:

  • Code formatting for Solidity language.
  • Test and Documentation for same.
  • *Publish the extension on VScode extension store.
  • *Any additional feature requirement if time permits.

Timeline

WeekTask/PlanStatus
May 25 - May 29Mentee intro with the mentor. My case I am already communicating with the mentor(Sean)  Done
June 1 - June 14Implement basic functionality of VScode extension. Syntax highlighting of Solidity language. Done
June 15 - June 28 Rust server for receiving the incoming requests from VScode clients.Done
June 29 - July 5 Buffer period to complete the remaining work and co-op with difficulties during implementation.Done
July 6 - July 12

Complete tests and documentation of the Rust server impl.

Eval on July 10: Provide reports for first quarter to the program organisers.

Done

Ready for eval

July 13 - July 26Work on the code compilation of Solidity. Prepare the backend to process incoming code.Done
July 27 - August 9Work on diagnostics, fixing Range issues and fixing minor bugs.Done
August 10 - August 16Buffer period to complete the remaining work and co-op with difficulties during implementation.Done
August 17 - August 23

Complete tests and documentation of the diagnostics implementation.

Eval on August 21: Provide reports for the second quarter to the program organisers.

Done

Ready for eval

August 24 - Sept 6Work on the symbol definition feature. List out all possible grammar definitions and start implementing.
Sept 7 - Sept 20Follow up on the work.
Sept 21 - 27

Buffer period to complete the remaining work and co-op with difficulties during implementation.

If everything is under schedule, start implementing code formatting feature.


Sept 28 - Oct 4

Complete tests and documentation of the implementation.

Eval on Oct 2: Provide reports for third quarter to the program organisers.


Oct 5 - Oct 18Work on the code formatting feature.
Oct 19 - Nov 1

Publish the first version on the VScode extension store.

*Work on additional features.


Nov 2 - Nov 8 Buffer period to complete the remaining work and co-op with difficulties during implementation.
Nov 9 - Nov 13

Complete tests and documentation of the remaining implementation.

Eval on Nov 13: Provide final reports for fourth quarter to the program organisers.



Diagram

Methodology

I follow the “Design-Code-Test-Document​” methodology.

My first step while developing the software is to design the process flow by understanding its inner workings. During the initial mentorship, I with my mentor did some planning of the implementation and set important milestones for same. The schedule for the work(given above) for the respective feature. Once I develop each feature, I will write tests for the implementation to make sure whatever I wrote is working correctly. At the end of the tests, I will document its implementation. I will be using​ GIT​ for version control with reviews taking place on Github( we are yet to finalize the repo's ).

I believe in constantly sharing my progress with the mentor and the community, a ​weekly​ update regarding my work is shared with mentor as a weekly meet. The VScode extension uses typescript for client side scripting and the server side implementation will be in Rust.

The work has been interesting and I happy that me and my mentor have established good communication. You can usually find me discussing the project related queries on the solang channel of Hyperledger Rocketchat.


Note: * - As it is a rough estimate about the project for now, some things can change according to the priority and time of the project requirements.




  • No labels