plutus icon indicating copy to clipboard operation
plutus copied to clipboard

Plutus Playground with simple startup examples needed

Open besiwims opened this issue 1 year ago • 9 comments

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/)

besiwims avatar Aug 26 '24 04:08 besiwims

@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!

aleeusgr avatar Aug 26 '24 11:08 aleeusgr

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

zliu41 avatar Aug 26 '24 15:08 zliu41

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

effectfully avatar Sep 01 '24 16:09 effectfully

Thank you all for your information, will wait patiently.

besiwims avatar Sep 01 '24 18:09 besiwims

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.

effectfully avatar Sep 03 '24 16:09 effectfully

@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.

zliu41 avatar Sep 04 '24 15:09 zliu41

@marshada do you know if anything is happening with regards to this issue?

effectfully avatar Feb 11 '25 12:02 effectfully

@besiwims and @effectfully I don't see us building an IDE. After discussing internally, It's not practical at this time given the amount of work needed to both build it and maintain it. Our teams don't have that kind of capacity. I think this needs to be backlogged. @besiwims We can perhaps consider creating startup example(s) if you can describe something specific.

marshada avatar Feb 11 '25 18:02 marshada

I want to bring Github Codespaces to your consideration

GitHub Codespaces provides cloud-powered development environments for any activity - whether it's a long-term project, or a short-term task like reviewing a pull request. You can work with these environments from Visual Studio Code or in a browser-based editor. ... GitHub Codespaces are fully customizable on a per project basis. This is accomplished by including a devcontainer.json file in the project's repository, similar to VS Code Dev Containers development.

What we can do is to provide a customized codespace template where all plutus tools are installed and configured such that smart contract developers can spin-up their own instance of it with once click.

VSCode can then work with such codespace backend either as a desktop or as a browser-based IDE.

Unisay avatar Feb 12 '25 12:02 Unisay

Nothing has happened and given

I don't see us building an IDE. After discussing internally, It's not practical at this time given the amount of work needed to both build it and maintain it.

I'm going to close this issue.

effectfully avatar Aug 13 '25 23:08 effectfully