Why don't we make one? Here's a start -- feel free to try it at home :)
ClearAll[mfvonh, HelloWorld];
Import["http://mfvonh.me/mma/install", "Text"] // ToExpression;
mfvonh[Install, {"Testing", "HelloWorld"}];
HelloWorld[]
Hello, world! -mfvonh
You can distribute any kind of content (definitions, data, docs, etc.) this way. Here's how it works:
I run a webserver at mfvonh.me, and /mma is just a directory containing whatever I need to transfer (text files with definitions, data, etc.). The "install" file looks like this:
Import["http://mfvonh.me/mma/install", "Text"]
=
ClearAll[mfvonh];
mfvonh[dir_, args___] :=
Module[{
BaseURI = "http://mfvonh.me/mma",
ValidDirQ := MatchQ[dir, _Symbol],
ValidArgsQ = MatchQ[{args}, {} | {{__String} .., ___Rule}],
FromMFVONH = Import[#, "Text"] &,
Exec = ToExpression[#] &},
Switch[dir,
Install,
Exec /@ FromMFVONH /@ (StringJoin[Riffle[{BaseURI, ##}, "/"]] & @@@
Cases[{args}, _List])
] /; ValidDirQ && ValidArgsQ
]
So in the example {"Testing", "HellWorld"}
is resolved to the corresponding path on the server, which is also just a file:
Import["http://mfvonh.me/mma/Testing/HelloWorld", "Text"]
=
SetDelayed[HelloWorld[],Print["Hello, world! -mfvonh"]]
The simple way to define dependencies would be to include a reference to them in the install script, and a generic check to see if a package has already been loaded. It would be pretty easy to build out all the features of a decent package manager. Obviously executing code off the internet introduces some security considerations.
I would be willing to take this on as a project if people would use it.