Do we have decisions to make for "standards"; Flask vs Bottle vs Django, or whatever. Use a Digital Ocean droplet or someone's web host?
I don't think we need to make standards, but I also think that there are some standards that would be helpful. My goal in these standards are NOT that everyone do the same thing, but rather that different people not be slightly different for no good reason. If two people want to do different things, then they will, and that's fine. But if they want to do the same thing, then standards should help them interact.
I think that there are two ways to write programs in the modern world. You can have programs that run on one computer. They are "classic" programs. You have a library that does something, you have a GUI that the user sees, and they work together. The big questions here are what OS, what language and what GUI system you use. The second system is you have a server and a client which are often on different machines. These are generally web sites of some kind. The big question for these systems are what is the interface to your server, and how do you present this information to the user.
So with that as prolog, here are some of my thoughts:
* I think that standards are most important for communication, data interchange, and (maybe) user interface. Conversely, I think that things like server software and web host don't really need to be standardized. As an example, lets say that I create a web server based on Bottle, and you create one based on Flask. Who cares? People can easily use your service or mine, or both. I can use your's. It just doesn't matter.
* For classic programs, the important standardization issues are OS, language, and GUI, and to be honest I don't want to discuss those. I don't think it a good idea (or possible) to convince someone to use a language, an OS or a GUI that they don't want to use. So everyone should use what they want, and that limits their sharing, but there is no way around it. The Python folks can share libraries, and so on.
* But for server/client programs the important standardization is the communications layer between the server and the client. And if you standardize (at least a little) then it means that every person who writes a client can take advantage of every server: and that is very beneficial!
* Also, it means that I can write my server in any language I want and run it on any OS, and everyone can take advantage of it. Indeed, one client can get information from many different servers.
* So I would try to come up with some guidelines or standardization for server interfaces.
I'm running out of time to write this, so I'm going to be very brief about the standardizations I'd like to see:
1. Start out with a list of all servers of Traveller data on the web. That alone would help people avoid duplication and quickly create new clients based on existing servers. This would be strictly descriptive. No rules. Just one place to go to see what is out there.
2. I think that REST is the best server interface system, so I'd have a guideline that servers of Traveller data should have REST interfaces.
3. A REST interface must return data in some format. I can see two ways to move forward here: (a) I think the best data format is json, so I would recommend that servers of Traveller data should return data in json format. (b) another option to say that all servers should take one URL argument which specifies what data format should be returned. So people could add "format=xml" or "format=ini" to their URL and get their data in whatever format they want. Obviously, these can be combined where json is the default but other formats can be specified.
4. It would be useful to have a standard place to go for a human readable description of the server. So maybe we have a guideline that for each server of Traveller data, there should be a web page "/help" off that server which describes the services provided by that server.
5. It might be nice to have some standard arguments for servers. Maybe something like "count=N" to tell the server how many items to return. Obviously, that would not make sense in some cases, but the idea is that servers would not use "number" or "repeat" or "num" or anything else. If you supported many return values, then you would use the "count" argument and nothing else.
You can see some of these ideas here:
http://joshualevy.pythonanywhere.com
take a look at these URLs:
http://joshualevy.pythonanywhere.com/help
http://joshualevy.pythonanywhere.com/yt?format=json
The "human readable" version of this server is here:
http://joshualevy.pythonanywhere.com/yt?format=htmlPage
http://joshualevy.pythonanywhere.com/yt?format=html
Joshua Levy