[spec] mercury highlights ☿️

Petite Abeille <petite.abeille (a) gmail.com>

BACKGROUND
Back in mid-2020, Solderpunk outlined the draft of a minimal subset of 
Gemini, named Mercury:

https://portal.mozz.us/gemini/gemini.circumlunar.space/users/solderpunk/gem
log/the-mercury-protocol.gmi 
<https://portal.mozz.us/gemini/gemini.circumlunar.space/users/solderpunk/ge
mlog/the-mercury-protocol.gmi>

That subset was always good enough for my needs, and that's what I have 
been using since ? instead of Gemini proper.

What follows is my implementation highlights of Mercury ? for the record.


SERVICE DISCOVERY
mercury:// IRIs SHOULD be resolved through DNS service discovery:

# dig +short TXT _mercury._tcp.host.xyz.
multiaddr=/dns/host.xyz/tcp/1958/tls/sni/host.xyz

multiaddr ?
User-agents MUST support tcp.
User-agents MAY support tls.

Default multiaddr /dns4/host.xyz/tcp/1958


REQUEST 4,096 bytes UTF-8 IRI line
mercury://host.xyz/


RESPONSE 4,096 bytes UTF-8 status line 
20 text/mercury;charset=utf-8;
Hello Mercury! ??

=> mercury://host.xyz/license CC0-1.0 
<end of connection> 


STATUS
2 digits code, 4,096 bytes UTF-8 

2x (SUCCESS) 4,096 bytes UTF-8 content-type status line
20[ text/mercury;charset=utf-8;]

3x (REDIRECT) 4,096 bytes UTF-8 IRI status line
30 mercury://host.xyz/

4x (FAILURE) 4,096 bytes UTF-8 status line
40[ DESCRIPTION]


TEXT/MERCURY
text/mercury;charset=utf-8;

Text lines
Any line which is not a link.

Link lines
=> IRI[ DESCRIPTION]

=> mercury://host.xyz/license CC0-1.0 


MERCURI URN
urn:mercury:capa

CAPA REQUEST
urn:mercury:capa

CAPA RESPONSE
20 text/mercury;charset=utf-8;
=> urn:mercury:capa
<end of connection> 

Servers MUST support urn:mercury:capa.


MINIMAL SERVER
# while true; do { echo -e '20\r\n=> urn:mercury:capa'; } | nc -l 127.0.0.1 1958; done

MINIMAL CLIENT
# echo -e 'urn:mercury:capa\r\n' | nc 127.0.0.1 1958
20
=> urn:mercury:capa


That's all folks.


?0?

? https://github.com/multiformats/multiaddr <https://github.com/multiformats/multiaddr>

Link to individual message.

Ben <benulo (a) systemli.org>

Any reason why port 1958 is chosen? I was thinking if it's adjacent to 
Gemini (minus TLS) then why not something like 1964? Not unlike XMPP's 
use of 5222 and 5223.

I imagine *some* currently existing Gemini servers could benefit from 
serving Mercury alongside it just because they may not need encryption 
and it would be faster. (Although, I don't know how much TLS slows down 
the connection process, but on my system Gemini pages seem to take a 
while to open.)

You say you have implemented Mercury. Does that mean you have a working 
client and server?

Ben

-- 
gemini://kwiecien.us/

Link to individual message.

Phil Leblanc <philanc (a) gmail.com>

On Sun, Feb 28, 2021 at 3:40 PM Petite Abeille <petite.abeille at gmail.com> wrote:
>
> That subset was always good enough for my needs, and that's what I have 
been using since ? instead of Gemini proper.

+1

> What follows is my implementation highlights of Mercury ? for the record.
(...)
> REQUEST 4,096 bytes UTF-8 IRI line

Yes. Bumping the request max size may allow e.g. very simple update
schemes. I think this could also apply to the gemini protocol
=> https://lists.orbitalfox.eu/archives/gemini/2020/002045.html

> MERCURI URN
> urn:mercury:capa
>
> CAPA REQUEST
> urn:mercury:capa
>
> CAPA RESPONSE
> 20 text/mercury;charset=utf-8;
> => urn:mercury:capa
> <end of connection>
>
> Servers MUST support urn:mercury:capa.

Why this specific requirement? I didn't find any reference to
"urn:*:capa". What does it mean and what would be the returned values?

Phil

Link to individual message.

Katarina Eriksson <gmym (a) coopdot.com>

On Sunday, February 28, 2021 8:23 PM, Ben <benulo at systemli.org> wrote:
> Any reason why port 1958 is chosen? I was thinking if it's adjacent to
> Gemini (minus TLS) then why not something like 1964? Not unlike XMPP's
> use of 5222 and 5223.


# NASA Project Gemini

Duration: 1961?1966
First crewed flight: 1965
https://en.wikipedia.org/wiki/Project_Gemini

# NASA Project Mercury

Duration: 1958?1963
First crewed flight: 1961
https://en.wikipedia.org/wiki/Project_Mercury

This is where the port numbers come from.  Maybe 1961 would have been a better choice?

--
Katarina

Link to individual message.

Alex // nytpu <alex (a) nytpu.com>

On 2021-02-28 10:53PM, Ben wrote:
> Any reason why port 1958 is chosen? I was thinking if it's adjacent to
> Gemini (minus TLS) then why not something like 1964? Not unlike XMPP's use
> of 5222 and 5223.
The same reason Gemini uses 1965: Project Mercury was created in 1958.
https://en.wikipedia.org/wiki/Project_Mercury

As for the rest of it, I belive it's kind of silly.  Solderpunk didn't
come up with Mercury as some sort of alternative where they're giving up
on Gemini, they posed it as a hypothetical point of comparison between a
very simple protocol like Mercury and something more complex like
Gemini.  It was never meant to be taken as serious new protocol
proposal, they use it as a marker for another possible position on the
"complexity axis" between Gopher and the web.  Gemini is one point on
that "axis," Mercury is another possible point, used as a reference
beacon to help keep Gemini in-scope.

~nytpu

-- 
Alex // nytpu
alex at nytpu.com
GPG Key: https://www.nytpu.com/files/pubkey.asc
Key fingerprint: 43A5 890C EE85 EA1F 8C88 9492 ECCD C07B 337B 8F5B
https://useplaintext.email/

Link to individual message.

Bradley D. Thornton <Bradley (a) NorthTech.US>



On 2/28/2021 11:23 AM, Ben wrote:
> Any reason why port 1958 is chosen? I was thinking if it's adjacent to
> Gemini (minus TLS) then why not something like 1964? Not unlike XMPP's
> use of 5222 and 5223.

Project Mercury ran from 1958 - 1963. Gemini uses port 1965 based on
this same homage to the manned space programs leading up the the Apollo
moon landing.

More info on that here:

https://en.wikipedia.org/wiki/Project_Mercury

And since we're talking port numbers, that brings up another matter.
Stephanie posted (or maybe I just read it  on her page?) about a
collision w/Tivoli on TCP 1965. She referred to  it as a 'serious' conflict.

No offense, but I don't see that as an issue at all. It's a
non-privileged port and there are  several instances where different
types of services use the same ports with respect to UDP or TCP (even in
/etc/services).

I checked /etc/services on Debian Bullseye and Slackware -current just
now and don't see port 1965 or Tivoli even mentioned.

NOTE: This is not to say that it's not relevant or perhaps important to
address, as Stephanie suggests.

Here's something pertinent to that, as well as user accessibility:

 ```: A shitload of gobbledygook (noise) that prolly nobody wants to hear

# From ``Assigned Numbers'':
#
#> The Registered Ports are not controlled by the IANA and on most systems
#> can be used by ordinary user processes or programs executed by ordinary
#> users.
#
#> Ports are used in the TCP [45,106] to name the ends of logical
#> connections which carry long term conversations.  For the purpose of
#> providing services to unknown callers, a service contact port is
#> defined.  This list specifies the port used by the server process as its
#> contact port.  While the IANA can not control uses of these ports it
#> does register or list uses of these ports as a convienence to the
#> community.
#
socks           1080/tcp                        # socks proxy server
socks           1080/udp
proofd          1093/tcp
proofd          1093/udp
rootd           1094/tcp
rootd           1094/udp
openvpn         1194/tcp
openvpn         1194/udp
rmiregistry     1099/tcp                        # Java RMI Registry
rmiregistry     1099/udp
kazaa           1214/tcp
kazaa           1214/udp
nessus          1241/tcp                        # Nessus vulnerability
nessus          1241/udp                        #  assessment scanner
lotusnote       1352/tcp        lotusnotes      # Lotus Note
lotusnote       1352/udp        lotusnotes
ms-sql-s        1433/tcp                        # Microsoft SQL Server
ms-sql-s        1433/udp
ms-sql-m        1434/tcp                        # Microsoft SQL Monitor
ms-sql-m        1434/udp
ingreslock      1524/tcp
ingreslock      1524/udp
datametrics     1645/tcp        old-radius
datametrics     1645/udp        old-radius
sa-msg-port     1646/tcp        old-radacct
sa-msg-port     1646/udp        old-radacct
kermit          1649/tcp
groupwise       1677/tcp
groupwise       1677/udp
l2f             1701/tcp        l2tp
l2f             1701/udp        l2tp
radius          1812/tcp
radius          1812/udp
radius-acct     1813/tcp        radacct         # Radius Accounting
radius-acct     1813/udp        radacct
msnp            1863/tcp                        # MSN Messenger
msnp            1863/udp
unix-status     1957/tcp                        # remstats unix-status
server
log-server      1958/tcp                        # remstats log server
remoteping      1959/tcp                        # remstats remoteping server
cisco-sccp      2000/tcp                        # Cisco SCCP
cisco-sccp      2000/udp
search          2010/tcp        ndtp
pipe-server     2010/tcp        pipe_server
nfs             2049/tcp                        # Network File System
nfs             2049/udp                        # Network File System
gnunet          2086/tcp
gnunet          2086/udp
rtcm-sc104      2101/tcp                        # RTCM SC-104 IANA 1/29/99
rtcm-sc104      2101/udp
gsigatekeeper   2119/tcp
gsigatekeeper   2119/udp
gris            2135/tcp                # Grid Resource Information Server
gris            2135/udp
cvspserver      2401/tcp                        # CVS client/server
operations
cvspserver      2401/udp
venus           2430/tcp                        # codacon port
venus           2430/udp                        # Venus callback/wbc
interface
venus-se        2431/tcp                        # tcp side effects
venus-se        2431/udp                        # udp sftp side effect
codasrv         2432/tcp                        # not used
codasrv         2432/udp                        # server port
codasrv-se      2433/tcp                        # tcp side effects
codasrv-se      2433/udp                        # udp sftp side effect
mon             2583/tcp                        # MON traps
mon             2583/udp
dict            2628/tcp                        # Dictionary server
dict            2628/udp


 ```

I dunno about anyone else here, but if I was blind, I sure as hell
wouldn't want to listen to all of that. And as I pointed out in my
immediately previous post, this isn't ASCII-art either.

Remember folks, at this very moment in Gemini space, there are AT LEAST
113,310 pages of content, and that growth is logarithmic ;)

I hope that helps :)

Kindest regards,


-- 
Bradley D. Thornton
Manager Network Services
http://NorthTech.US
TEL: +1.310.421.8268

Link to individual message.

Sebastian Alejandro <sebastian1231alejandro (a) gmail.com>

On 2021-02-28 15:28, Bradley D. Thornton wrote:
> And since we're talking port numbers, that brings up another matter.
> Stephanie posted (or maybe I just read it  on her page?) about a
> collision w/Tivoli on TCP 1965. She referred to  it as a 'serious' conflict.

Looking on Wikipedia [1], the only mention of port 1965 is Gemini itself.

1: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

-- 
Sebastian Alejandro | kayw

Link to individual message.

Alex // nytpu <alex (a) nytpu.com>

IANA claims it's registered to "Tivoli NPM" (presumably Network
Performance Monitoring).  tivoli.com just redirects to ibm.com, and the
Wikipedia page says that Tivoli Software is largely defunct after an IBM
acquisition[0].  IBM even seems to have registered new ports for Tivoli
after their acquisition of it![1]

If it's a big worry, we could try to contact the address given to the
IANA[2] and ask if they could "de-assign"[3] their registration.

~nytpu

[0]: https://en.wikipedia.org/wiki/Tivoli_Software
[1]: https://www.iana.org/assignments/service-names-port-numbers/service-na
mes-port-numbers.xhtml?search=IBM+Tivoli
[2]: Ivana Cuozzo <Ivana.Cuozzo at tivoli.com>
[3]: https://tools.ietf.org/html/rfc6335#section-8.2

-- 
Alex // nytpu
alex at nytpu.com
GPG Key: https://www.nytpu.com/files/pubkey.asc
Key fingerprint: 43A5 890C EE85 EA1F 8C88 9492 ECCD C07B 337B 8F5B
https://useplaintext.email/

Link to individual message.

Petite Abeille <petite.abeille (a) gmail.com>



> On Feb 28, 2021, at 21:04, Phil Leblanc <philanc at gmail.com> wrote:
> 
> Why this specific requirement? I didn't find any reference to
> "urn:*:capa". What does it mean and what would be the returned values?

Actually, it's optional. Just a way for servers to advertise additional 
capabilities, such as persistent connections, or chunked transfer encoding.

?0?

Link to individual message.

Petite Abeille <petite.abeille (a) gmail.com>



> On Feb 28, 2021, at 21:12, Katarina Eriksson <gmym at coopdot.com> wrote:
> 
> Maybe 1961 would have been a better choice?

Right you are.

?0?

Link to individual message.

Petite Abeille <petite.abeille (a) gmail.com>



> On Feb 28, 2021, at 21:21, Alex // nytpu <alex at nytpu.com> wrote:
> 
> I belive it's kind of silly.

Ditto . 

?0?

Link to individual message.

Bradley D. Thornton <Bradley (a) NorthTech.US>



On 2/28/2021 1:04 PM, Sebastian Alejandro wrote:
> On 2021-02-28 15:28, Bradley D. Thornton wrote:
>> And since we're talking port numbers, that brings up another matter.
>> Stephanie posted (or maybe I just read it? on her page?) about a
>> collision w/Tivoli on TCP 1965. She referred to? it as a 'serious'
>> conflict.
> 
> Looking on Wikipedia [1], the only mention of port 1965 is Gemini itself.
> 
> 1: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
> 

I believe what you were looking for can be found here:

https://www.iana.org/assignments/service-names-port-numbers/service-names-p
ort-numbers.xhtml?&page=35

It is however, of little import IMO, and I'm doubtful any Tivoli servers
are still out there. We had some of that stuff at Filenet when IBM
bought us, basically their vision of LDAP, which was and would be
contained within the confines of an Intranet anyway, certainly, not
something that would be sharing machinery with Gemini servers lol.

BTW, not a lot of folks realize this, but just like Mark Twain was to
Samuel Clemens, IANA was pretty much just a nom de guerre of Jon Postel
prior to his passing. One guy working out of a single office. ICANN made
it an actual body that now either serves, or is served by that
bureaucracy. Ergo, my fav RFC of all time:

https://tools.ietf.org/html/rfc2468

Jon also wrested control of our DNS back from the Government about a
year before he died. Yup! The same Government that's trying to steal it
again. It all started with what we call the MoU, and if you're
interested there's really good coverage of it in Ellen Rony's 'The
Domain Name Handbook'.

So don't forget people, it's private property (the Internet, that is -
all that copper, fiber, and all those 'Cisco' and Big Iron routers), not
public property. Right to pass revocable by owner at anytime. The
Government has no Right of way, and as far as imminent domain goes, I'm
not sure if the fiber or the racks qualify as real estate.

And with that, I'm def going to turn in for the evening and grab a few
hours of shuteye. I'm rambling on about things that died in the 90's.

I hope that helps :)

Kindest regards,


-- 
Bradley D. Thornton
Manager Network Services
http://NorthTech.US
TEL: +1.310.421.8268

Link to individual message.

StΓ©phane Bortzmeyer <stephane (a) sources.org>

On Sun, Feb 28, 2021 at 12:28:07PM -0800,
 Bradley D. Thornton <Bradley at NorthTech.US> wrote 
 a message of 140 lines which said:

> Stephanie posted (or maybe I just read it on her page?)

gemini://gemini.bortzmeyer.org/gemini/missing.gmi

(sorry to point to a general page, Gemini has no defined semantics for
URI fragments, search for "1965")

> I checked /etc/services on Debian Bullseye and Slackware -current just
> now and don't see port 1965 or Tivoli even mentioned.

Debian's /etc/services is not authoritative for port assignment. It is
clearly said at the beginning of the file that /etc/services is a


Link to individual message.

StΓ©phane Bortzmeyer <stephane (a) sources.org>

On Sun, Feb 28, 2021 at 04:04:08PM -0500,
 Sebastian Alejandro <sebastian1231alejandro at gmail.com> wrote 
 a message of 11 lines which said:

> Looking on Wikipedia [1], the only mention of port 1965 is Gemini itself.
> 
> 1: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Wikipedia is certainly not the authoritative source on port
assignments. The IANA registry is.

Link to individual message.

Stephane Bortzmeyer <stephane (a) sources.org>

On Sun, Feb 28, 2021 at 02:32:33PM -0700,
 Alex // nytpu <alex at nytpu.com> wrote 
 a message of 51 lines which said:

> If it's a big worry, we could try to contact the address given to
> the IANA[2] and ask if they could "de-assign"[3] their registration.

As you can guess, the email address now bounces. I reported that to
IANA.

Link to individual message.

Sebastian Alejandro <sebastian1231alejandro (a) gmail.com>

On 3/1/21 2:50 AM, St?phane Bortzmeyer wrote:
> Wikipedia is certainly not the authoritative source on port
> assignments. The IANA registry is.
On 3/1/21 12:44 AM, Bradley D. Thornton wrote:
> I believe what you were looking for can be found here:

> 

> https://www.iana.org/assignments/service-names-port-numbers/service-names
-port-numbers.xhtml?&page=35


Right, my apologies. Thank you both for pointing me towards the right 
place to look. I normally use that Wikipedia article to quickly check 
what's what. I had no clue that the IANA registry list even existed 
until now.

Again, thank you both.

-- 
Sebastian Alejandro | kayw
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

Link to individual message.

---

Previous Thread: [spec] List of proposed clarifications

Next Thread: Mastodon proxy for Gemini