RichardLitt / open-source-protocol

:unlock: Open up web development
https://osprotocol.com
MIT License
44 stars 5 forks source link

Server source vs content source #18

Closed matthewberryman closed 9 years ago

matthewberryman commented 9 years ago

What to do about projects that consist of separate server and page source? For example PetaJakarta currently has CogniCity-server as the server code, which at present serves pages from PetaJakarta-web, which is included in the Cognicity-Server as a submodule (but, using a submodule may not be how everyone handles the separation of code), and the submodule's github page refers back (in the documentation) to the server code. Should os:src then point at the source for the web site, or should it point at the server source? What about cases where a web site is composed of multiple projects, not necessarily where submodules are used?

My current thoughts are as follows: The OS protocol seems implicitly to be for describing web sites, as in the content that renders on the client (it references css), not explicitly the server, which may well not matter, even if it's an open source server (e.g. Apache httpd). Thus, where the server code, either the full server e.g. nodejs, or some server-side code e.g. php, does matter, i.e. the web site relies on making calls to a custom server, have the metadata os:server:src, os:server:repo, etc. in addition to os:src, os:repo pointing at the project that has the pages (html, client side js, css), etc. Where there's just one project with server and client side code (example), should we use os:* and os:server:* ? I would argue yes, as both client side and server side are important. They just happen to be the same in this case. With regards to multiple projects hosted on the one web site, then the metadata for each page should have os:src, os:repo etc. set for the project that page is from. We would leave it up to the user (including robots) to figure out the dependencies by looking at the os:repo and/or os:src for the index page to see if there are any submodules.

RichardLitt commented 9 years ago

Sorry about the delay!

Those are good questions. I would argue against needing to add os:server: if the client and server code are the same - just putting os: should work there, as it is assumed that you are pointing to the code for the site (with an open definition of what code means and the scope of the code). I think that adding an os:server:* field would be smart in cases where the server code is separate, however. If there are multiple projects, I would point to the last port of call for the source code - normally the template repo.

Shall I add os:server:* as an optional tag?

matthewberryman commented 9 years ago

I'm happy with that proposed solution.