I finally finished the rewrite of Phoebe I had mentioned on The Transjovian Council (where most of my Gemini activity is). I think I managed to achieve some goals that had always eluded me with Oddmuse, my longest running project (a Usemod fork I started back in 2003!).
I wanted test for all the extensions, and I managed to do that. And Alex Daniel taught me the value of meta tests, so I also have a test that tests whether all the necessary tests exist. In a few cases, I’m even testing the examples provided in the documentation.
This leads me to the next issue I finally fixed. I really wanted better documentation. I’m not happy with how documentation for Oddmuse code ended up on the wiki. I keep thinking about that old adage: “wiki wiki is short for can’t find shit.” For this code, I wanted the code to be part of the source file such that sites like metacpan display it correctly. I also wanted to concatenate all the documentation into a single README document to use as a manual, and to have that show on code hosting services like cgit. This required some improvements to my ‘update-readme’ script, but I think it was worth it.
I also wanted the extensions to be formal Perl modules that you ‘use’ in your wiki configuration, not source files you link into a config directory and maybe they are up to date and maybe they are not. If you update Phoebe via CPAN, you get the new code, and all its dependencies, and all your extensions are also updated.
There is a bit of a grey area, here. Many of the extensions I have are probably of limited use to other people. Therefore I have declared the tests of these extensions to be “author tests”. That is, neither CPAN testers nor users installing Phoebe run those tests. Which then raises the question: should the dependencies for these optional extensions be installed as well? Perhaps the correct answer should be that these extensions belong into separate distributions? I don’t know. Maybe.
I managed to put the web serving into a separate extensions. So now, if you install Phoebe, you really are getting just a Gemini wiki. Phoebe is once again the Gemini-first, Web-second sort of wiki I wanted it to be.
In any case: I now have better code structure such that it looks good on metacpan and in git repositories, I have better tests, I have tests for tests, I have better documentation, I even managed to delete the documentation I had on The Transjovian Council because it was now integrated into Phoebe proper. I love it! 🚀🚀😃🎉
Of course, I already found more things to change. But slowly I’m approaching the point where I feel safe letting it lie for a few years once again, just chugging along and doing its job.