Road to 1.0.0
A rough outline of unfinished planned features, leading up to Vyx version 1.0.0. Features entered in the order I plan on finishing them. Order subject to change.
Merge Requests
Merge requests is my name for pull requests, because pull requests is a stupid name. Merge requests are basically an issue feature. A user will write an issue, attach some code diffs to it as a "resolution" to said issue, and send it up. It should be easy to append a merge request to an existing issue, one that originally wasn't a merge request. I think the merge request itself should be a specialized comment on an existing issue, rather than a type of issue. I'm still deciding what's nicest to use here.
Workflow
I have this idea of a "workflow mode", where you put the user in a sort of pseudo terminal environment that saves your project every time you run a certain command you specify. For instance, if you run "zig build", the pseudo workflow terminal runs the zig build process, then performs a vyx save without you doing anything. It saves the content in a new workflow megafile, separate from your real one, while tracking command success and other info in the save itself — so that save gets a "did it succeed" section, a "stdout/stderr" section, and whatever else tracks what happened. When you're done with this debug mode, you pick and choose which saves actually get applied back to the main megafile, then the workflow megafile is deleted.
TUI Train
I have decided to hop on the "tui train"... eventually. This idea was stolen from someone I discovered making his own version control/hosting service project, named Zach and his projects xit and HAXY (https://www.youtube.com/@xeuxeuxeuxeu). I want the vyxspace website to be displayed as a tui that the user can use as oppose to the traditional html/css/js version i already made. I want it to be something you can ssh into, similar to https://www.terminal.shop/. I may extend this to cover not just the hosting, but the entire version control as well. I'm not sure if i'll go THAT far, but I know I want a website as a tui you can ssh into.
Builtin Tutorial
Not sure of specifics, but once i have a builtin tui, that tui should include a tutorial section. You open up the tui, and you can click a button, and it literally, through cli, takes you through a vyx tutorial. It could put the user in a pseudo workflow environment, and guide it through the things to run, and tell the user if htey're good so far. it could make saves at different points in the tutorial to guide them.
Git Conversion
Fully converts a local git storage to a local vyx storage. It's one of those commands that's easy to do quickly, but takes AGES to do right, because git has changed it's format over the years. Additionally, do we even WANT to support converting any git format to any other? Maybe not. We'll see. In case you're wondering, vyx is NOT gonna have a git as a backend. If you can convert git to vyx, I think that's enough.
Cloud Commands
Vyx/Vyxspace should be prepared to act as an icloud-like service. I think that'd be cool. Hard, but cool. Version control tools are uniquely positioned to act as a continuous, background storage, vyx especially since the hosting service is directly integrated. It'll use the usual megafile storage format with automatically created saves every hour or so. I could do a special cloud branch so it doesn't interfere with regular versioning, or I could just make it a "cloud megafile" so it doesn't try to do regular versioning, because having both at once is tricky. This is gonna be a linux only thing for a WHILE when I start it, but I do want it cross platform eventually. Syncing the same cloud across an arbitrary number of systems is also a goal, so yeah it's gonna take a while. I might have to set one system as a "true" system that all other clouds check against, and i'll need some way to handle conflicts without user intervention. I'll check what other people do for this.
Version Control an Entire User
So I would version /home/dylancook, that entire directory, gets version controlled and cloud connected, then sent up to a vyxspace server. Wild, huh? It would of course need parent, because there are vyx version controlled projects inside it. It would need a proper parent tree. The top /home/dylancook repo would be pure cloud, with regular repos under it as children, wherever they appear. I also might want to get cloud to do metadata store when it auto saves. If metadata works well, i could make a user literally cloud sync itself across mac and linux. That would be so cool. I don't know about windows though lmao. A LOT of things might break when I start doing any of this on windows. First it just stores metadata differently, and then a lot more problems on top of that.
Cross-Platform Server Builds
Right now you can only set up vyxspace servers on Linux. The current tech stack I'm using really only works well with Linux. It's not that other systems can't be a server, it's just long and tedious to get them to that point. At the moment, THANKFULLY, the server code is the only OS specific code. Everything else, network commands included, work cross platform. This is one of the last planned features, because no one really sets up servers on Mac and Windows. It's the least critical here.
Fully Decentralized
This is an idea I stole from Andrew Kelley, the guy who created zig. His idea was a fully decentralized version of git hosting, where users would "vouch" for others to be added to an invitation tree. This, combined with the tui, would be kinda cool. It'll be kinda like a decentralized VyxSpace. I'm assuming multiple users would need to set up their own server, which all talk to each other. I'll have to think up new methods to verify users, I'll probably steal some tricks Andrew Kelley mentioned in his git-collab page. He won't mind, he never fully implemented this. Here's the full thing: https://codeberg.org/andrewrk/git-collab.
Consulting Business
I want to do a consulting business, where I help major businesses migrate to vyx/vyxspace. It would charge a premium for the service, and would be conducted by me until I hire other people. It'll have a one time setup option and a continuous support option. I'm not sure if this'll be before or after 1.0.0.
After 1.0.0
Once I have a stable Vyx and VyxSpace, with all features mentioned implemented, I want to create my own VyxSpace central hosting, kinda like my own GitHub. But don't we already have that? Yes, exactly. VyxSpace already exists, and as long as you have space to spare, you can make it yourself and use it. What I wanna do is create a separate, centralized, for profit business that provides the hosting if my users can't do it themselves. This won't impact the Vyx project itself, Vyx and its VyxSpace counterpart will always remain a FOSS project that anyone can use, this is for people who want ME to provide storage, but still wanna use my tools. When it's done, it'll be right here, at vyxspace.com.