-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for other protocols (gopher, spartan, ...) #33
Comments
Another thing I forgot, should we also consider having multiple chroot? e.g. |
Hi, I agree with this overall sentiment. It's important to remember that If we were to introduce other protocols -- the most practical example right now is For example, you could say (I'm surmising on the syntax here -- I'm not wanting to bikeshed this at all just yet. This is for illustrative-purposes only):
In this example, there is a server block, where the Similarly, one could imagine:
I'm refraining from adding any "metadata" to the Note that, in this way, with a I don't think this assumption is unreasonable. That's how a lot of configs work. With regards to becoming a Were we to introduce another type, it's possible we could add a But the key thing here is that Note that there's a fair amount of refactoring work I can do as an almost prerequisite to any thing else proposed here. That's precisely what I intend to do. |
I think this is very reasonable.
Yes, I agree, otherwise I wouldn't have created this issue to discuss :) That was the past me worrying, but I've changed my mind and pragmatically speaking I believe it's fine to make this move. I just need to slightly change the topic for gmid from "gemini server" to "smol internet server" or something like this.
instead I'd like to bikeshed this a bit! :P Or, phrasing it better, to brainstorm a possible grammar. I was thinking of something around these lines:
|
Right... yeah. I think this likely what I see
OK, that's interesting. Rather than having multiple I think this looks good to me! |
Great, I'm happy that you like the current status of the proposal. (i said to not care about backward compatibility at this stage, but we could assume an implicit Do we want to support per-protocol chroot and prefork settings? If so, each protocol will need to have its own set of "server" processes. it could also be interesting to split each protocol handler in its own libexec executable, so that for e.g. we don't have to link the gopher libexec with libtls. |
Yeah, that makes sense.
Yes -- exactly that. Perhaps that didn't come across well enough in my last reply, but doing this would make it easier for libexec helpers which makes sense. |
Perfect, so we're on the same page on this. |
In the past I've discarded the feature requests to add support for other protocols, since I saw gmid only as a gemini server. The idea was that if there was the need for a gmid-style server for spartan or gopher, a new server could be written (eventually borrowing from gmid.)
However this doesn't seem much viable practically speaking, and with also #19 there is some room to discuss adding other protocols to gmid. I'm fearing in part that we'd become a kitchen sink, but there is also some value in speaking a few adjacent protocols: the code won't explode in size and the service is nice.
This feature has to be planned carefully however. The protocol(s) implementation may be trivial, but the configuration changes have to be planned.
For example, gopher doesn't have (AFAIK) the notion of virtual hosts, so the
server
block makes little sense. On the other hand, stuff like the TLS settings makes sense only for gemini. On the third (?) hand, some options will need to be handled per-protocol (index
comes to mind).Titan (see #19) could also be "plugged" this way.
One way to handle this could be by introducing a
protocol
block. I still fear that we'd have to treat each protocol as it were a tiny snowflake in the configuration syntax anyway. We shouldn't be limited by the backward compatibility: at least initially let's try to design something that makes sense; we'll deal with the backward compat only when we have a nice design.The milestone is temporary 2.2 (don't want to delay 2.1) but it could also be 3.0. Titan may be moved from 2.1 to this milestone.
Thoughts?
The text was updated successfully, but these errors were encountered: