IntersectMBO / plutus

The Plutus language implementation and tools
Apache License 2.0
1.57k stars 479 forks source link

Plutus Playground with simple startup examples needed #6432

Open besiwims opened 2 months ago

besiwims commented 2 months ago

Describe the feature you'd like

Here's the corrected text with spelling and grammar improvements, while keeping the original meaning intact:


1. Background:

Plutus was introduced with an emulator playground to help beginners grasp the concept. However, this approach had its drawbacks because one could not compile a created validator to cBor, unlike Marlowe (https://playground.marlowe-lang.org/#/), Helios (https://www.hyperion-bt.org/helios-playground/), or Aiken (https://play.aiken-lang.org/). Despite these limitations, it was better than nothing. We used it during the Plutus Pioneer Programs (PPP1, PPP2, etc.).

2. Problem We Are Facing Now:

a) As one developer stated, "I want to deploy a Haskell smart contract, but it seems impossible to find a 2024 guide to deploy a smart contract using the command line. Plutus Playground is down, and I don’t really know what to do. Any help out there?" (source: https://www.reddit.com/r/CardanoDevelopers/comments/1ciskx1/plutus_playground/).

b) The results of the August 2024 developer survey (https://cardanodeveloperadvocate.com/Developer%20Advocate%20Survey%20August%202024v1-Bernard%20Sibanda.pdf), page 6, show that 44.4% of respondents like Plutus Playground.

c) Developers from Ethereum, who are accustomed to the web-based IDE Remix (https://remix.ethereum.org/), find it difficult to work quickly with Plutus.

3. Existing Commercial Alternatives:

We have limited free and commercial starter kits available, such as https://demeter.run/ports. Examples include Gimbalabs (https://plutuspbl.io/live-examples) and audited smart contract services from Maestro (https://www.gomaestro.org/smart-contracts). However, it would be beneficial to have a Plutus web-based IDE.

4. Communication - Documentation Improvement:

The traditional official Plutus documentation (https://developers.cardano.org/), which remains popular, needs to redirect users to the intersectMBO maintainers. This will help address issues more effectively rather than allowing new users to encounter this dead end (https://github.com/input-output-hk/plutus-starter).

5. Feature Request:

There is a significant need for a proper Plutus Playground with examples to help developers get started easily. If it is already in development, clear communication about its expected release would be appreciated. If not, this issue is a request to either get it built or help assemble a team to build one.

Describe alternatives you've considered

Marlowe (https://playground.marlowe-lang.org/#/), Helios (https://www.hyperion-bt.org/helios-playground/), or Aiken (https://play.aiken-lang.org/)

aleeusgr commented 2 months ago

@zliu41 Hi! I see you've been active on this repo lately, thanks a lot!

The comment above seems to potentially be malicious and I am unable to report it. Who can, do you know? Thanks!

zliu41 commented 2 months ago

@aleeusgr People with write access can report them, I think. The comment has now been deleted and I didn't see what it was.

effectfully commented 2 months ago

This issue needs to be triaged again, because

  1. status: triaged and status: needs action from the team are mutually exclusive, there can be only one status label
  2. every issue having status: needs action from the team must be assigned to a member of the team, most likely the person who triaged the issue (this does not mean that said person must work on fixing the issue, only that they should make sure that we're making progress on it)
  3. "priority medium" isn't a thing and I'm going to remove that label completely. The triage process only specifies the "Low priority" label, which is meant to communicate that we do not commit to fixing the issue in a timely manner. "priority medium" doesn't really communicate anything, so it's pointless. We don't have "High priority" either, because in that case one should just use status: needs action from the team, which appropriately communicates the urgency
besiwims commented 2 months ago

Thank you all for your information, will wait patiently.

effectfully commented 2 months ago

Sorry @ramsay-t, but it's still not triaged well. There's still this issue:

  1. status: triaged and status: needs action from the team are mutually exclusive, there can be only one status label

but also now two additional ones:

  1. as per the guide, the Low priority label needs to be explained: "do write a comment making it clear why the issue is considered low-priority"

  2. the guide does not prohibit using Low priority and status: needs action from the team together, but it's a weird mix. Why do we have that red label saying something is needed from the team while considering it a low-priority task?

  3. the guide doesn't seem to tell the reader that an issue labelled as status: needs action from the team should ideally have an explanation of what action is needed, but in practice it's a very reasonable thing to have and the guide does have "In general, explain your actions in the issue"

The job of the triage person isn't to just assign labels, it's to actually understand what bucket the issue fails into, categorize it as such and explain in the issue how it was categorized and why so. If you don't have an educated guess yourself, you are most welcome to ask other team members for advice.

We lift some of that for our internal issues, but for ones reported by the community we really should invest some effort in understanding the issue, categorizing it and elaborating our reasoning.

As for the issue itself, I was going to talk about this stuff within our team and with the Education folks anyway, so I guess I'll just triage the issue myself and assign it to myself.

zliu41 commented 1 month ago

@besiwims Thanks - I'll forward it to our product managers.

Regarding the features desired of a "proper Plutus Playground", it seems you are asking for (1) a web-based IDE for Plutus Tx, where one can write, compile and run Plutus Tx; (2) the ability to produce CBor from a script: (3) some examples. The ability to interact with node/ledger (e.g., build/submit transactions) is not included. Does that sound correct?

I personally think this is definitely useful and a nice addition. However note that both Helois and Aiken are entirely new languages while Plutus Tx is a subset of Haskell. So other than the examples, this would basically be just a regular Haskell playground. The only difference between setting up a Plutus Tx project vs. a standard Haskell project is the requirement to use a specific GHC version, and installing some C libraries, and for those we have the plutus-tx-template repository to simplify the process for users.