Using Chainshot for Coding Project


#1

One of the goals for the coding project has been to build a website which has an in-browser IDE for coding + testing, user accounts, progress tracking, and auto-saving of files to user’s accounts. Here’s some discussion about how we were planning to do create this site: New Lectures Repository

But then…something amazing happened! A few days ago, I met the Chainshot founders, who are literally building EXACTLY what we need. I’ve been playing around with their Chainshot Builder for the past couple of days, and although there’s a few kinks that they’re working out in the next couple of weeks, it’s worked really great so far. Also, there’s built in support for both Javascript projects (most of the current coding project), Solidity, and Vyper contracts (Chapter 5 Plasma/ Layer 2 sections)

Check out the “Build a Blockchain” lesson in https://www.chainshot.com/lessons for an idea of how our course would look.

I think it would be a good idea to build the Cryptoeconomics.study coding project on Chainshot and turn https://github.com/cryptoeconomics-study/code/ into a Chainshot Content Repo (similar to this). This entails a good amount of changes to the repo, so I wanted to open up for discussion. What do you guys think? :smile:

@karl @burrrata @jinglebells @yaliu14


#2

Looks cool, but does it generalize?

  • How would you incorporate visualizations?
  • Does the framework allow for arbitrary JS code so you could actually build a blockchain demo from scratch, or are you limited to solidity type contract programs?
  • Are you thinking to build on the Chainshot platform and incoroporate content into their lessons, or fork the builder and just use the framework as an interface to interact with Cryptoeconomics.Study lessons within the context of a book that also has videos and long form blog style explanations of concepts?

#3

Currently can’t incorporate the visualizations, but they’re trying to build it out in the next couple of weeks. See their “UI Stage” Docs- “A flexible stage that can be rendered with particular React elements”, which is exactly what we need. I’ve also walked them through what we’re trying to build and it’s clear they’re trying to make it possible for us to add the visualizations in.

Yep! Allows for arbitrary JS code. I’m building a test lesson right now entirely in Javascript here.

Not all of their platform is open-source, so don’t think forking is possible at the moment, so we’d be hosting on their platform. They’re currently building a version where we can have a custom-branded “Cryptoeconomics.study” section with all of our lessons - possibly could also change the domain to something like project.cryptoeconomics.study in the future. We can have users interact with both the videos and book inside of the Chainshot course - If you create an account and go to - https://www.chainshot.com/content/chainshot-test, you can see my test example for section 1.1 (it’s not actually working, but you can get an idea of the UI).


#4

Hmmm - I tried it out a little, it’s a good tool for people who are less comfortable with programming, and the UI is friendly (I remember having to run a client node and then run Solidity code when working with this book: https://github.com/ethereumbook/ethereumbook/ - definitely more difficult to work with but good experience though). Perhaps we continue having a github repo to manage the lesson code development, and use Chainshot as parts become more polished?


#5

If it’s not FOSS, then it’s not interesting. Hate to say it, but if we learned ANYTHING from “web2” it’s that building on other people’s centralized platforms is a road to ruin. Why would we do that? I thought we were trying to build an open community to support an open ecosystem of p2p decentralized FOSS that creates new techonologies that solve the problems caused by centralized systems? I’m interested in contributing to Free Open Source Software that empowers anyone to learn and contribute, not yet another convenient yet centralized service. If you want to do open source hmu, otherwise best of luck.


#6

I keep thinking about this and it just doesn’t make sense. It feels wrong. Why would a project that’s all about cryptoeconomic p2p decentralization want to build on a b2c centralized platform? Am I missing something? Am I going crazy? The thought keeps nagging at me… Maybe I woke up in an alternate universe where the words decentralized and centralized were reversed? Maybe it was a dream all along? Anything’s possible ¯\(ツ)/¯ and I’ve been wrong before, often even… so how do I know? There’s only one way to find out, so I did the only thing left to do: I went to Cryptoeconomics.Study and watched the intro video right on the homepage just to be sure. Lo and behold… to my delight it said that Cryptoeconomics.Study is about building p2p decentralized systems and communities! How would we do that building on someone else’s closed source centralized platform? @karl Am I just crazy? Did I miss something here?

Edit: I missed something. See comments below lol


#7

Hey @burrata!

Wanted to join this discussion as I’m working on building out ChainShot. Happy to answer any questions you might have along with the ones you brought up.

We started this project out of an ETH global hackathon so naturally we’re excited about both decentralization and open-source. All content on ChainShot is open-source as well as the IDE that builds it. We don’t want to own the content, it’s up to content creators to host it on Github. And in fact, the tutorials that are created could be run on your own local machine and are meant to be standalone resources. With some additional effort a CLI could make this a very smooth process where you take the tutorial on your own machine. This is one of our goals for 2019.

What isn’t open-source at the moment is the repository which runs the main site and holds user account data and the servers that execute the code. This part is a centralized service, indeed. We’ve created the project this way because we want to engage users that aren’t necessarily familiar with web3 just yet and using Metamask for signins or a CLI for taking a tutorial is unfamiliar and not particularly user friendly. Instead, a web UI where you can sign in via email and begin taking a code tutorial without installing any dependencies is very friendly and easy way to get started with Solidity/web3 programming. If I had the resources I’d be happy to turn this into a project where every team was a DAO and all code execution time was paid for via some kind of token mechanism. That’s a bit of a pipe dream as at ChainShot we have a team of 2 working at full capacity and don’t plan to run any sort of ICO especially considering the landscape of failed ICO projects.

So certainly we hope you’ll choose to use the open-source IDE, host your content on Github and invite users to take the tutorials through the web interface we’ve worked hard on. Additionally I’d be happy to invite you to help work on the initiative to create a CLI that will allow users to take the tutorials on their own machine instead of using a server environment to execute the code, which would be slightly more work on the users part but would allow the process to be 100% open-source.


#8

Oh wow! This warms my heart greatly and I’m so glad that I was wrong. Thank you for sharing this additional information :slight_smile:

GREAT :slight_smile: That’s my biggest pain point with centralized services so if your goal is to set the data free then I’m happy.

Speaking of data…

Is there a place where ideas/solutions to this are being discussed or worked on? Thinking an upgrade path so that users could maybe start with a centralized account, then move to a web3 system when they feel comfortable? I really like how with FreeCodeCamp you can just start coding, and if you want to save your progress you can sign in to create an account (a natural place to do so because there’s a real desire/need from the user). It would be great if ChainShot did something similar, but also with the option to create an account with MetaMask and/or to upgrade an account from a GitHub/Email managed account to a web3 account. From there the user would have an onramp to the web3 ecosystem, which would be great since at that point they would naturally be wanting to explore. Not sure what that would require for backend infrastructure, but in general I think that’s a design pattern that would benefit the ecosystem at large in addition to ChainShot. A modular library that does this would be amazing.

I’m curious about this. Seems like another design goal that could benefit the community at large. Maybe something like https://webtorrent.io/ where users who are online support the execution of other users, or a blockchain system where you earn “uptime credits” by leaving a browser tab open in the background to run other people’s code while you’re watching youtube or checking email or something? Kind of like cryptojacking, but consensual. Dani Town had some interesting ideas on this regarding LiteMining: https://dani.town/dani/lite-mining. Do you guys have a discussion group, subreddit, or anywhere to discuss these ideas if people want to join in and build prototypes?

Cool :slight_smile: Curious though, how are you guys funded and what’s your endgame?

I’ve actually been thinking about transitioning my current project Rusty Cryptoeconomics towards a CLI tutorial with a testnet for anything beyond the first 3 chapters. The reason is that explaining concepts and creating small examples a browser based environment like mdBook or GitBook makes sense, but in order to run and modify even toy blockchain demos it gets unwieldy pretty fast. Not sure if that aligns with the goals of ChainShot, but I think there’s a few overlapping similarities like figuring out how to sustainably host/run code as well as how to create intuitive and empowering upgrade paths that allow users to take on as much or little responsibility and ownership of their data as they want. Right now Rust (and maybe WASM) is my main focus so I dunno if that would be of much help, but I’m happy to jam on ideas and prototypes :slight_smile:


#9

Awesome glad it was helpful :slight_smile:

Oh that’s great I didn’t realize FreeCodeCamp does this! We actually have a similar feature on our content. For instance, if you went to this Merkle Tree Lesson without being signed in, your progress would be saved to a temporary user in our system for a week until you choose to create an account and claim that unsaved progress.

We are currently working on a re-design of the main ChainShot site which will include taking down the login wall completely. Up until last week it wasn’t possible for people to create their own content on ChainShot. Now that we’re releasing the Builder IDE our plan is to make it easy for content creators to find Content git repositories to collaborate on and for users to find tutorials/follow content creators that suit their interests.

Yup right on, this is what I was thinking. Naturally it could turn into a pretty complex system so we’ve been reluctant to begin the project that way. Happy to discuss it further. We’ve been communicating with the community mostly through our Slack Channel. It seems like you all have done a great job collaborating on here though, would definitely be interested in starting a similar forum site for ChainShot.

We’re funded through community grants and bootstrapped capital. We’re proud to be recipients of a $25k Stable Fund grant and Eth Prize has graciously awarded us two $10k bounties for content we’ve created. Ideally our end goal is to be self-sustainable because that’s where we’ll make the biggest impact and give back the most value.

We’re working to ensure all content created has it’s own standalone value whether or not we continue to exist as a company. Concurrently we intend to offer paid services that will take the open-source tutorials and drive better user experiences. Services like embedding content and a live classroom/workshop app. These services will have an associated subscription cost that will help fund our development while the open-source content integration will always be free.

Woah this is awesome! Love the live code snippets. Now I finally have a good impetus to learn Rust :wink:


#10

Yeah I really like the Rust ecosystem because by default you get live code books (mdBooks), docs (anything three backslashes automagically compiles to docs whenever you build a crate/library), and formatting (Rust fmt formats everything to a standard so there’s no ambiguity like in JS). This means that once you get used to the format/flow, every Rust project you encounter will have similar docs/books and it’s easy to find and apply information. There’s also a really friendly community :slight_smile: If you’re curious the best place to start is the Rust Documentation page.

I’ve pretty much stopped using slack. It’s a great tool, but for crypto there’s the problem of rampant scammers/misinformation. Also, it’s just generally noisy whereas on a forum like Discourse it’s much easier to find the information you want have longer form asynchronous posts that don’t get lost in a sea of noise. Much better for research/code type stuff imho. From what I can tell it’s what a lot of cool projects are doing as well:

There’s always Reddit too ¯\(ツ)/¯ which is nice because it lowers the barriers to participation whereas Slack/Discourse require creating new profiles. Might be a feature or a bug depending on if you want a filter/moat or not lol

Also super cool that you guys have a temp saving setup that requires no login :slight_smile:


#11

@Dan-Nolan - Thanks for such a thorough response! I really appreciate the clarification.
@burrrata - sorry if I poorly explained the intended relationship with Chainshot - It’s a number one priority to always keep Cryptoeconomics.study free and open-source and avoid platform risk or censorship. I think Chainshot’s commitment to keeping the platform for hosting open-source lessons free and their long-term commitment to make the entire platform open-source aligns closely with our philosophy and will create a healthy partnership going into the future!