Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

๐ŸŒ‹ E|F โžพ Michelson Developer Support #1495

Open
8 of 20 tasks
hu3man opened this issue Nov 15, 2022 · 0 comments
Open
8 of 20 tasks

๐ŸŒ‹ E|F โžพ Michelson Developer Support #1495

hu3man opened this issue Nov 15, 2022 · 0 comments
Assignees
Labels
feature New feature or request investigation Tickets detailing investigation work for planning or POC purposes

Comments

@hu3man
Copy link
Contributor

hu3man commented Nov 15, 2022

Product Board Link

Product Board Ticket

๐Ÿšฅ Status

  • ๐Ÿ”ฎ Product/Feature Design
  • โœ๐Ÿป Architecture/Implementation Planning
  • ๐Ÿ—๏ธ Under Construction
  • โ›ณ Feature Complete
  • โ›ต GTM / Release

โœ… To Do

  • Implement MVP of generator and integrate with Taqueria VsCE (d: @ archaephyrryx)
  • Investigate feasibility of using an LSP server (oOcaml implementation) which reads a Michelson smart contract and allows the user to provide initial storage and then step through the code execution with a graphical display of the stack contents (debugger)
  • Investigate and discover what features an LSP server would enable
  • Investigate morley debugger (vsce plugin)
  • Investigate the difficulty and lift required to onboard @jchenche with Coq formal verification and what Taqueria support for this might look like

Sequencing of Work:

  1. Iterate on Michelson syntax highlighting till full coverage
  2. Add additional features for tooltips and highlighting via an LSP server
  3. Implement a Michelson debugger

https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide

Determine Between:

  • Fastest option: script-based parser/processor outputting a text file (MVP) - would require script to be working but wouldn't be fully featured at first, iterative approach
  • Best approach: Integrating the processor into the compiler - higher upfront cost but would be usable in production when done

Both options will result in the same end result, difference is in development methodology

Notes

  • Possible to programmatically generate syntax/grammar definition file with rich context (history, deprecations, etc)
  • Will generate a set of keywords based on the current implementation of the protocol
  • Need a machine/instance set up which will do the generation of grammar files (ideally triggered and included as part of CI or release)
  • Setup (linking) is non-trivial
  • Lexical rules can be used for syntax highlighting (constructors, types, instructions)
  • Deprecation and kind/type can be generated based on real-world knowledge
  • Determining operator specifics would need to be done by hand as there's no semantic approach for determining the difference between two operators
  • Primitives.ts file can be used to provide insights into what tokens are primitives (tooltip hints)
  • Can capture the historical changes in types, operators, instructions - deprecations, name/behaviour changes, etc and provide context for what changed and when

Michelson Debugger

There's a web based Michelson debugger thingy here: https://try-michelson.com/
The source code for that web front end is here: https://gitlab.com/nomadic-labs/try-michelson
That front end relies on the "tezos-lang-server" here: https://gitlab.com/nomadic-labs/tezos-lang-server/

๐Ÿ“ Feature Description

This epic covers all the work required to provide first-class support for Michelson developers in Taqueria

๐Ÿšฉ Problem or Use Case

Taqueria needs to have first-class support for working with Michelson files. This applies both to developers writing Michelson directly, but also to those who may have less experience and want to play around with and explore existing Michelson contracts

This is also a M3 deliverable

โš–๏ธ Acceptance Criteria

โœจ Features:

  • Users can add Michelson contracts to /contracts and have Taqueria understand how to edit and originate it
  • Taqueria supports static analysis of Michelson files
  • VsCE provides syntax highlighting for Michelson files
  • VsCE provides tooltip hints describing protocol defined types and functions (Typedoc style)
  • Support for autoformatting of michelson source code
  • Users can interact with deployed Michelson contracts (Micheline editor)
  • Users can easily specify initial storage for a Michelson contract upon origination (extension of Micheline editor)

๐Ÿ“š Docs:

  • Conceptual doc covering the high level Michelson development workflow
  • Docs for each feature above

๐Ÿ”ญ Scope

๐ŸŽ๏ธ In Scope:

  • ...

๐Ÿ™…โ€โ™‚๏ธ Out of Scope:

  • ...

๐Ÿ”— Related Issues and Subtasks

๐Ÿฆ„ Sizing

37

Code of Conduct

  • I agree to follow this project's Code of Conduct
@hu3man hu3man added feature New feature or request triage Requires triage labels Nov 15, 2022
@hu3man hu3man self-assigned this Nov 15, 2022
@alexzbusko alexzbusko moved this to ๐Ÿ“ซ Inbox in ๐Ÿ“ฌ Inbox and Triage Nov 15, 2022
@hu3man hu3man moved this from ๐Ÿ“ซ Inbox to โœ… Selected for Design/Dev in ๐Ÿ“ฌ Inbox and Triage Nov 17, 2022
@hu3man hu3man moved this from โœ… Selected for Design/Dev to ๐Ÿ“ก Planning in ๐Ÿ“ฌ Inbox and Triage Nov 22, 2022
@hu3man hu3man added investigation Tickets detailing investigation work for planning or POC purposes and removed triage Requires triage labels Nov 22, 2022
@hu3man hu3man moved this from ๐Ÿ“ก Planning to ๐Ÿฅ‡ Refinement in ๐Ÿ“ฌ Inbox and Triage Nov 22, 2022
@hu3man hu3man moved this from ๐Ÿฅ‡ Refinement to ๐Ÿšง Epic in Development in ๐Ÿ“ฌ Inbox and Triage Nov 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request investigation Tickets detailing investigation work for planning or POC purposes
Projects
None yet
Development

No branches or pull requests

2 participants