WebRFS and GopherRFS

Here and there specifically.

And also the Go module here.

And the informal spec here...

yea, I made a few things...

Changes made to the library

Not much to speak of here. Mostly just bug fixes and minor features already documented.

I encountered one major bug tho. Turns out that bazil.org/fuse caches accessed nodes. This is not such a big problem, were I not fetching the content only on node creation. This means that when certain resource gets deleted from cache, you can't access it until FUSE removes it from it's cache as well.

I solved this by simply resolving also after creation if nothing cached. It's still something to bare in mind when developing a FUSE filesystem tho.

Simple usage

Well, nothing that major changed since last time and you can read it all in the spec and repos, but...

First, I also added a second directory next to '/:c/', that being '/:config/'. They are identical, but one design principal I would like to keep within the experimental OS is having things accessible by both longer, more descriptive, name and a short abbreviation. This can also be seen within the MIME type modifiers of WebRFS sometimes offering multiple options for one type.

Both WebRFS and GopherRFS also allow specifying caching details when mounting, so that's nice.

Publishing Go module

Publishing Go modules is surprisingly simple. I don't have any experience with publishing libraries for any other package system, so I'm not sure if this is the norm, but it's easy non the less.

First, you make your library accessible from a public git repo. While developing, you can just use Go workspaces, which are also nice.

Once you have a public repo, all you need is to add a version tag (such as 'v1.0.0') to the master branch and you could technically call it a day. People can already download and use your module like usual, but it could be better. You want listing on pkg.go.dev.

To do that, you just type the destination URL of your module, https:pkg.go.dev/github.com/de-alchmst/rfs for me, and click the request button. Congratulations, you have a listed module now.

Pkg.go.dev even generates a godoc documentation for you, documenting all exposed symbols. (plus also showing your README.md) Godoc is very simple. You just write comments directly (with no spaces in between) before anything you want to document. You can use empty comments for paragraph separation and even add general introduction by documenting your package declaration. Links are automatically made clickable. Structs and var/const blocks are shown in their entirety, so you can also add comments directly inside of them.

Only problem I have with this system is that some structs I export need some methods for use with FUSE, so those are listed as well. I could probably solve this with some sort of wrapper, but whatever.

So yea...

I will implement Gemini/Titan and Finger RFSes as well, but it's not a priority. For now, I think that I will focus on another part of the OS.

But feel free to make your own RFS, it's very easy with the module. Or don't I don't care...

How does one end a b-log again?