These are excellent points (imho, of course) meriting further discussion.
Taking up the container issue, I agree that it would be very helpful to have a way to encapsulate models into objects that could shared, archived, processed by servers, etc. Given the existence of glpk.js, I'd suggest a JSON based container required fields
-- .mod model file corresponding to .mod [required]
-- problem name [required]
and optional fields
-- description (markdown syntax?)
-- zero or more data files
The data files might also be be JSON objects with two fields
-- type (corresponding to .dat, .csv, or table)
Certainly this could be extended in important ways, such as solver options, and solution information, but the above fields would provide basic functionality for model specification.
I'd like to see a simple syntax for a run file, but that's a far more ambitious project.