Well, at long last I think we’re ready for round 2. MWS is ready for people to test the features that are there. It has the basics (wikis, users, permissions). Most of the work I’ve done is under-the-hood, hopefully making the code base more flexible and less prone to errors. It should be very easy to understand, and editors which support typescript should work with ctrl-click and find all references.
The warnings about security are still there. I’m not really worried about data loss at this point, but it could certainly still happen, so for this round I still wouldn’t recommend using it for anything critical. You can always download your wiki from the browser.
I’ve designed it to be as extensible as possible. The primitives are fairly simple. Each concept on its own isn’t hard to understand. For developers, I’d be happy to answer questions here or on tiddlywiki’s discord (there’s an MWS channel). Overall the code base should be self-explanatory once you understand how it’s tied together. I would really love it if more developers want to contribute.
Right now, wikis can’t talk to each other, and they definitely can’t access any of the admin endpoints. That’s because wikis allow users to write JavaScript that other users will run in their browser, which could allow privilege escalation attacks. The eventual solution to this would be something like an oauth consent page which the user would be redirected to to grant permission for a specific action to be carried out. I’ll definitely need help designing this.
At the moment, auth is just normal username and password using secure protocols. The passwords are hashed with a master salt (we use the OPAQUE protocol, to be specific). But there’s a lot of features we could add. Passkeys, third-party login, single-sign-on, etc. If any of you want to pitch in and help design some of these things, that’d be great.
It’s just running on NodeJS. If someone wants to turn it into an Electron app that uses messages instead of a local server, I could see that being a useful addition. Also that weird MacOS container format that applications sometimes use.
Import and export could use some work. I’ve add a feature to the TiddlyWiki syncer to allow batch syncing, instead of one tiddler at a time, and that really speeds up imports. We don’t really support regular file systems, as it seems difficult to handle the edge cases. You can always download your wiki by clicking on the cloud status symbol.
The core code that ties everything together feels a bit complex, but also very flexible. If some one has a different idea, I’m open to suggestions.
The react client implements features and design somewhat inconsistently. I’m exploring the possibility of switching to web components and material design 3. If anyone has suggestions, feel free to let me know your thoughts.
I’m sure there’s a lot of features in the TiddlyWiki ecosystem that could fit well into MWS. I think we’re at a good place to start taking a look at some of those features.
So let me know what your thoughts are. And please, I would be happy to help others get into the code base and implement features. The code design is actually fairly simple, in my opinion, but I tend to be bad at organizing stuff, so it doesn’t always look that way.
Yeah, I know, that’s a lot of “begging” for contributions. But it also means that I think I’m done rewriting the entire codebase every other day, so things should be stable enough now to actually contribute to.
Enjoy!