I'd like to make the suggestion of a built-in package manager (think apt-get) that would allow for users of the mod to quickly install large, multi-file programs that would be tedious to put on Pastebin.
This would be useful for new users of the mod (if they want to download some application for their turtle to quickly farm or mine) as well as advanced users (quickly deploying network infrastructure would be easier). A built-in package manager can also serve other purposes, like finding new applications in-game, updating existing applications, installing applications that require dependencies, the list goes on and on.
However, if this is implemented properly, the default computer filesystem would have to be heavily redesigned. For example, programs and non-essential APIs would be put into their own packages that come preinstalled with the computer. The filesystem would change from a single 'rom' directory to a system directory of some type, where inside the package database, programs and APIs would be stored. Hopefully, the 'rom' directory will not exist, and the whole entire ComputerCraft Lua base system would be modular.
Also, repository hosting would also have to be accounted for. Since ComputerCraft programs and other user-distributed files are mostly text, a repository can consist of a file (or files) that consists of a list of package names, versions and Pastebin codes. This solution means that hosting size and bandwidth used would be relatively low, since actual program hosting is done on Pastebin and not the repository server.
Ideally, the default repository would be hosted by the ComputerCraft team, and posting a package to the repository would consist of:
- Going to a package submission page.
- Entering a title, description and possibly other details.
- Adding the Pastebin codes and where they would be installed on the filesystem (maybe in the system directory mentioned earlier.)
- Submitting the form.
- The user receives an access string access string of some type (a 256 char base64?), that can be used to update the package data at a later date.