Tilde Forum Proposal - MOL


While this is my attempt at addressing iris's shortfalls, I want it to be perfectly clear I do not intend any sort of disrespect to calaitous, or to imply 'I can do it better;' both because I am not a programmer thus cannot code up an alternitive, and it is rather rude to insult someone in thier proverbial home. Instead, I want to focus my aggrivation into coming up with a vision of what 'could' be. Hopefully one that remains in keeping with the idea of not being 'all things for all people,' and instead focusing on serving a specific need with any additional functionality being incidental rather than intentional.

As a note: The name is not an acronym. I'm not going to try torturing either my mind or the english language to try backporting meaning here. MOL comes from the scrapped Manned Orbital Laboritory program from the 60's[1], and so there is meaning behind the name, just not a direct acronym.

Now then.

Personal Disagreements with Iris

Again, and this must be stressed, any perception of fault or flaw in iris should not be taken as personal attack against the person who wrote it. I also have to acknowledge my own use cases and experiances are non-reflective of other uses. On the other hand, it is worth noting several instances of users attempting to write their own front ends to Iris, which, to me sugests I am not alone in feeling like 'maybe it could use some iteration.'

Therefor I have a non-exhaustive list of personal pain points when using Iris:

Either here is Everything, or Nothing.

As in if you ask for topic list you get Everything all at once vomited into your terminal. From the standpoint of someone with poor vision? This is an overflow of stuff to have to sort.

Compare to the near instant vomit of every topic all at once vs 'oh hey these are new.'

There are users whom have made it a point to try making a better front end for iris. This is, in my eyes, something that says 'This needs to be updated beyond 'minimum viable product.'

Client-Side Reading/Rendering

As the name suggests, this will be built on top of gemini (or rather the one-request/one-response mantra of gemini as well as the formatting avalible to the end user when crafting a message.)

This deals with rendering of information to the end user, but that is only part of the process. It's an important part of the process, but only part.

Moving on.

Posting and General Interaction

This is from the standpoint of the end user. Backend will be discussed later.

General Browsing

- Login

- Top of the page is a notice on new posts user has subscribed to.

or very bottom, make it configurable? Eh decide after mocking up.

- User sees a selection of subforums.

Top Down: Helpdesk, Personal Projects, Ctrl-C Events, Server Announcements

Each top level catagory can have sub catagories; Eg. Personal Projects and Help having Hardware and Software sub-branches in addition to immediate next level posts.

- Input number that represents the next topic level or specific post.

Eg. [1] helpdesk [2] personal projects, etc.

within Helpdesk: [1] hardware [2] software [3]'Help my computer is on fire' etc

To go Back type in either 'back' or '0' or '..'

To go to the root/top level of the forum 'home'

I don't want to have to take my hands off the keyboard to navigate and i hate pretzel key combos for common actions.

- Each topic has a seperate number outside of initial navigation

eg: [3] 'help my computer is on fire' is topic [42]

meaning users can just type in the topic number if they want to go directly to that

Each post also has a number, one seperate from the topic number. so the third response might be [42.3].

- When browsing through a topic you get a list of posts to scroll through. you select one then navigate forward, back, respond, etc.

Posting and Responses

- Posts cannot be made to the top level domain other than admin level announcements

- When in a sub-level that allows posting: 'post,' 'compose,' or 'c'

When responding type 'r' inside the topic they want to reply to, or 'r [number]' to respond to that topic from anywhere

Yes this works within the topic itsel (assuming that's easier)

In theory one could make responses to given posts, but I don't want to be too granular and having threads continually dip just... feels too much like the headache of dealing with mailing lists.

Instead maybe it would be good to make it possible to just link back to the post one is responding to within the thread. It's a gemini page with a unique identifier so no reason to not be able to go 'OK I'm putting this link within my response' in addition to standard header/footer navigation aids.

I prefer this oer creating a bespoke link type in otherwise 'standard' gemini formatted pages, or special 'reply' or 'post' links is both to save on hassle when coding, and because I want the viewing experiance to be 'vanilla' from the standpoint of a gemini browser. I want it so that if for whatever reason every user in the board had their access revoked, the board itself could still be browsable. So, have the posting process handled by something else.

Iris Integration

As stated above, I don't exactly like Iris, but it is something that is important to the board and I want the admin to feel that I respect the thing he created. While forcing some kind of iris compatibility would probably add more work, I do feel it is worth using at least for the sake of migration.

- Easiest way would be to have an 'iris' subforum where all the iris content lives that way Iris posts get their headers and structure and whatnot but it's not a standard every forum post would have to abide by.

- I dislike the idea of 'iris is read only.' This both encourages the mindset that iris is a snubbed format, and more to the point until and unless those topics are moved/recreated elsewhere in the system those are 'live' discussions that shouldn't be allowed to be cut down.

- That said there does need to be a way to migrate iris topics into 'proper' forum sections because otherwise you have a whole lot of neat organized hierarical forum topics ... and then the thing shoved in the closet to forever exist.

The Back End

or, 'Dear God I'm not an actual coder I am utterly terrified of foot in mouth.''

- I want viewing to be completely divorced from whether someone is logged in or not

the problem this represents is 'hwo does the internal forum client view these things?'

- I want this to be fully divorced so that the login mechanics can be gutted and replaced later on if something better comes up.

Either because of security reasons, something better, or situations I can't think of.

- Each user should have a ./mol directory in their home directory.

This will have .profile .signature .config and .subscriptions files

.signature is limited to 128 characters (yay the old twitter limit) to avoid spam

.Unsure what settings are user configurable, but I'm a big proponent of making it easy to fiddle with those

naturally if there is no .config file a default one will be loaded up. That way if things get that hosed? There's an easy way to wipe the board and start over.

.profile is going to be literally a single gemini page that would be a blank canvas. I would like things put there to make it a dynamic entity that would show 'threads posted to,' 'threads responded to,' etc but I can understand if this is not in the cards.

I had toyed with the idea of 'each user's posts are in their ./mol directory, but dear God I don't know how to deal with that. If, however, whoever sees this, is far smarter than me, I would propose that go in as ./mol/posts.

This brings up 'Well if each post is a file how are threads handled?'

From the user perspective it's fairly seamless. you go to a thread you read then respond when you find a post you want to respond to.

Note about the following: I have no idea how realistic this is. This is just what I see as the activity loop.

From the system's perspective:

- Each forum sub list is generated from looking at either



And build the list based off of

topic ID if the list is for topics

top level domain, topic and post ID if the list is of a specific topic.

IE [1 3 42] would be 'Help' => 'hardware' => 'my computer is on fire'

In this schema the list files for a post directories/sub forums would be [0]

So [1 0 0 0] would be top level of the 'help' subforum and [1 0 3 0] would be the third topic in the help subforum rather than any of its child boards.

Note: I'm not sure how to handle someone trying to go to 'level zero' in a thing since I want a way to have header/footer info.

I suppose as a file this could be represented by for the top level domain, or for the third post in 'my computer is on fire' thread.

- Though this does leave the problem of there only being one layer of sub-domains per top level domain. Given the current state is 'everything in a giant pile' I consider this a not terrible restriction since with creative threading one can get fairly exhaustive in how much that can go, and the numbering system itself allows for human browsablity of the directory wit hsome degree

When making a sub-forum:

- User navigates to the forum they want to make a branch off of: IE if it's off the main 'trunk' they start there. if it's a subforum in community projects they navigate to community projects then make a subforum from there.

Users cannot delete a subforum if there are any posts in it

Only the admin and post creator can delete posts

Which I suppose means there has to be a way to track who's created what? dot files inside the user's ./mol directory?

Eg. a ~/.mol/.posts-owned.gmi would contain a listing of every post the user has made. This would only be needed if everything is centralized. If a user's posts are .gmi files in their ~/.mol/posts/ directory then the system can just scan the file names there.

Hiccup though is if a user decides to delete their post and it's in the middle of a thread. What then?

System could see the break in numbering and go 'wait there is and but no' and put up a page that declares the user deleted that post? If so then there is no way to have a user 'reclaim' deleted post space. Might be useful as a security feature? What if user creates post file that matches a deleted post's file name? or multipul users make the same file?

Post links would point to a specific file. Only would make a 'this space empty' if there is a gap in the chain?

Have this idea on how to handle posts.

User makes post.

When user submits post system adds a footer based on a set of rules

Mostly just want to have the system able to fill in all the links between things so that users can focus on their content.


Part of me wants a way for this to be an inter-tilde forum system, but dear GOD that could be all kinds of headache inducing even though each post is by design a thing served via gemini so even if two users have two files with the same name, only one file is valid because the system is looking at the whole path instead of just looking for a file name.


Isn't this overly complex compared to Iris?

.... Yes. the point of me making this document is 'I feel Iris doesn't do enough.'

Gemini sucks. Why use it?

Because it is lightweight, and more importantly it already exists as a relatively easy to impliment spec that generates info that is already browsable not just in an SSH session but over the web publicly.

So why not use TLS certificates instead of user login info?

That could be one way of it. the 'how' of logging in should be divorced from everything else. I personally see it as possible to do a lot of this from within the gemini spec itself EXCEPT there is a thousand character hard limit ontext input fields and while that is something that could be worked andh acked around? UUUUGH. Better to just use gemini for the display bits and use something else for the content generation.


I don't know enough so that might work better might not.

Why bother? The admin is just going to shoot this down then slap you for your trouble.

Because I want to believe server admin isn't that petty, and more importantly I wanted to do something constructive with my complaints.

It's 2:00 AM Local time. I turn into a pumkin now.



[1] Manned Orbiting Laboritory (Wikipedia)



Go Home