Re: OverbiteNX
Greetings.
thank you Cameron for your work. I have discussed the webextension ap‐
proach with the author of surf2, where he needed to write extensions to
handle everything the webkit developers did wrong in the API for we‐
bkit2.
We think the native protocol handler war is lost. There are two ways:
1.) Make some extension to a central point like
proxy.gopherproject.org/%s
This would redirect to official proxies.
(See: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/protocol_handlers)
2.) Teach people how to change the handlers for gopher://. This is not easy
since Mozilla removed the ability to easily add a protocol in the
application configuration. Maybe it can be automated with some simple JSON
extension too.
WARNING: For those who only wanted to read the useful content of my e‐
mail, stop reading now. A rant on feature bloat and web insanity fol‐
lows.
On Sun, 21 Jan 2018 13:53:00 +0100 Ciprian Dorin Craciun <ciprian.craciun@gmail.com> wrote:
> * perhaps it would be best to document the protocol your extension
> uses to talk with the "native process", which most likely is JSON
> based; this way one can simply provide an alternative implementation;
>
> * if going the Python / Perl / Ruby / "other interpreted language"
> way, then it would be nice if it didn't require any external library
> (except the interpreter itself, and hopefully that language is already
> installed on may distributions); if this isn't the case it would be
> nice to have a documented way on how to prepare a "virtual
> environment" so that one doesn't need to juggle RPM / DEB files; (on
> a second thought one could just use NodeJS and the whole "run-time"
> needed is the `node` executable, even on Windows;)
>
> * perhaps, given how simple the Gopher protocol is, one could just
> implement the whole "native process" in Go / Rust, thus it will not
> require any extra libraries; (I excluded C because Go / Rust are more
> "portable", thus easily compilable on OSX / Windows;)
C is the best solution here. It is easy to read. C got its »bad« reputa‐
tion because of people using it wrong. First make the problem small,
then implement. With gopher a simple problem is given, except:
> Now on a different matter: what other opportunities would this
> "native process" open?
This already starts a bad path. Please, this is just about having the
good old gopher support in webbrowsers. Don’t try a revolution. This is
how the web got wrong, everythong got wrong. If you really do it, please
use CORBA or DCOM instead of SOAP.
> For starters I think the main appeal of Gopher is that it "simplifies
> and cleans the Internet", i.e. no jumping adds, no million ways to
> create and navigate a menu, etc. Instead it brings order: menus with
> clear semantic, a search functionality, and the rest are documents.
>
> Thus how about this: instead of the "native process" being just a
> dumb TCP socket proxy, why don't we transform it into the "Gopher
> protocol backend" by doing the following:
No, no, simply now. You are thinking too far. This is the disease of
modern software development. God is not in every problem out there. Once
a problem is solved. Don’t add a church and a religion to everything.
> * specifying in JSON a format for describing the Gopher menus (and
> related) -- it shouldn't be hard as I bet inside the extension there
> is already such a structure; (this also cleans and enables things
> such as headers, etc., which today are twisted and clobbered
> selectors;)
Gopher menus, as a native format, are easier to parse than JSON. JSON is
the tickle down effect of the web. First people of the web should get
MIME right instead of adding more crap.
> So what does all this enables? By replacing the "native process" with
> a different one --- that keeps the Gopher "semantic" --- one can
> provide alternative Gopher protocol implementations; Gopher proxies
> to other non-Gopher-native services without requiring one to run a
> gopher proxy; and other experimental things;
>
> Concrete example: I remember some time ago some discussions about
> Gopher over TLS. This would be easily achievable by changing the
> "native process" without touching the extension itself.
The goal here is to only have gopher support for some really ugly soft‐
ware base (i.e. firefox and chromium). Firefox and chromium need to die
in the long run. Their encapsulation of simple code logic in objects ev‐
erywhere adds unneeded sloc. You are adding yet another layer of indi‐
rection noone will ever use besides the short‐sighted enlightenment in
your mind.
Please, just leave those extensions to only support gopher. Firefox and
chromium already betrayed us too often, by changing their API, abandon‐
ing gopher native protocol support without a good reason etc.. They will
betray us again out of their incompetence. So keep the abstraction layer
simple and perfect. People after you need to maintain this. When it’s
done and has all features, stop and only maintain.
Adding something like TLS will require more clients to be changed. If
this stays a webbrowser‐only change, the small gopherspace is split up
because of the consumerist small‐sighted view of web users. The web is
not the end goal, gopher is. This is not a museum, it's reality.
> And an additional idea: how about the Gopher extension starts using
> actual URL's in its menus instead of two separate host and port
> fields? (This would enable easily implementing "virtual" Gopher
> servers, by intercepting these URL's within the native process.)
Writing your »virtual« gopher server will only bloat logic and waste
precious energy generated out of resources we could have used for colo‐
nizing planets.
Simply do:
geomyidae -b $(pwd)
and you have a »real« gopher server. The JSON‐encapsulation virtual
cloud‐based hyper‐scalable uber‐microservice solution will not be liked
by anyone else. You will only see people vomitting and using it for an
example how to not solve solutions.
> How about it doesn't "choose" the content type of a resource
> beforehand based on what someone wrote in the menu selector, but
> instead uses that as a hint for icon purposes, but when the response
> comes in, it actually "finds-out" (via a `Content-Type` marker in the
> "native process" protocol) about the actual resource type.
If you want HTTP, you know where to find it. Don’t make gopher HTTP. We
already have HTTP and know how it did end.
> This would allow the owner of the Gopher resource to change its type
> (for example from TXT to HTML) without breaking all selectors pointing
> to that resource.
This dream does not work and will never work.
> I hope this opportunity isn't missed by the Gopher community to evolve
> the Gopher universe farther than it's 1990 technical limitations
> allowed --- keeping its semantic roots (simplicity and cleanness), but
> upgrading its antiquated technical-related aspects to 2018 (the
> protocol and all accumulated quirks)!
I hope this »opportunity« is missed and gopher stays at the sane level
it is now.
> I say this, because so far any evolution was "terminated" mainly by
> the "all Gopher browsers would have to be changed and upgraded, thus
> this change is breaking the Gopherspace"; well today the main "Gopher
> browser" is already broken...
You haven’t followed the active gopher community lately. We now have
sacc, clic and more browser evolving out of the gopher principle of its
simplicity. Someone proposed patches for elinks. There are active peo‐
ple who can change the »old« clients. Well, those are the sane clients.
Text interfaces are freedom.
Look at the web where it evolves when you have some undocumented commit‐
tee deciding about too complex standards noone can implement in one day.
Standards should be that simple. This is our freedom. The complexity of
the W3C is now leaning towards an oligopoly of firefox and chrome. The
sourcecode is too complex for anyone sane to propose a change and the
developers are corrupted by their lords paying them their monthly
salary.
Sincerely,
Christoph Lohmann
Reply to:
- References:
- OverbiteNX
- From: Cameron Kaiser <spectre@floodgap.com>
- Re: OverbiteNX
- From: Ciprian Dorin Craciun <ciprian.craciun@gmail.com>