Eliminate long compilation time from indigo bootstrap or at least tutorial
Clarification and motivation
As result of #270 (closed) one can get started with indigo
by simply doing something like curl … | sh
.
However, this command takes quite a lot of time to run because it installs all Haskell packages that are transitive dependencies of indigo
. It's not too bad for people who want to use Indigo to write a real-world smart contract, I think these people can spend some time on bootstrapping a tool they are going to use for at least several weeks. However, it's really bad for our tutorial. When you open a tutorial, you want to start executing its commands quickly, rather than wait for a long time.
I think there are two sides of this issue:
- Improve the installation process so that it doesn't compile Haskell code but downloads prebuilt libraries from somewhere. It's a bit complicated, more details will follow in the issue comments.
- Update the tutorial, so that it doesn't require you to install
indigo
(and consequentlystack
andghc
). Even if we resolve the previous item and make the whole installation take less than a minute, there is still a problem that in order to go through tutorial you have to install quite a lot of stuff on your computer. Note that some people can go through the tutorial just to get an idea of what programming in Indigo looks like, they may not want to use it for a long period of time.
Acceptance criteria
I propose to treat this issue as a research issue. We have to figure out how to solve two problems above (improve the installation process and avoid installing indigo
in the tutorial). Also please check how much time the whole installation takes on an "empty" computer (that doesn't have stack
or ~/.stack
) and how much disk space it takes.
Regarding the tutorial, I am not really sure what we can do. One (seemingly popular) approach is to have something like online IDE in the browser. Maybe we can have a REPL directly in the browser that would send commands to our server and our server would interpret them. I am not sure it's a good idea and I have no idea how hard it is to implement. If you have better ideas, please propose them.