Project Plan - Make the Solidity Language Server functional

Abstract

Solang project currently hosts a very basic Language Server for Solidity language. The aim of this mentorship is to make the language server much more complete, will make developing Solidity code using this language server will be a much greater developer experience.

Mentor and Mentee

Mentor: Sean Young

Timezone: BST

Discord: seanyoung

Mentee: Govardhan G D

Timezone: IST

Fork of official repository for this project: https://github.com/chioni16/solang

Deliverables

As part of this mentorship, the following features are planned to be added to the existing Language Server:

  • Markdown formatting of hovers
  • Do not require you to save the solidity file
  • Drop diagnostics when closing solidity file with errors
  • Go to definition
  • Go to declaration
  • Go to implementation
  • Go to type definition
  • Go to/find all references
  • Format code 
  • Rename
  • Code completion

Timeline

Date

Deliverables

Status

01.07 - 14.07

Markdown formatting of hovers

Drop diagnostics when closing solidity file with errors

Tests + Documentation

14.07 - 27.07

Do not require you to save the solidity file

Tests + Documentation

28.07

1st Quarter Mentee Evaluation

29.07-08.08

Go to definition

09.08-15.08

Go to declaration

16.08-22.08 

Go to type definition

23.08-30.08

Tests+Documentation

31.08 

Midterm mentee evaluation

01.09-07.09

Go to implementation

08.09-26.09

Go to/find all references

27.09-10.10

Rename

11.10-19.10

Tests + Documentation

20.10 

3rd quarter mentee evaluation

21.10-27.10

Format code

28.10-19.11

Code completion


20.11-29.11

Tests + Documentation


30.11

Final mentee evaluation


Methodology

  • Based on the discussions with my mentor, a plan is formed, detailing the best possible way to tackle the task at hand.
  • After this, the solution will be coded.
  • The comments and suggestions given by the mentor during code review are addressed.
  • Later, tests and documentation for the deliverables are created. 

Discord is used for regular conversations with the mentor. Weekly calls are held to discuss the progress made.