Projects: Workflow
Workflow
When I am working on projects, I usually follow this workflow:
- Experiment in my own repositories or directly on a test server.
- Develop code that I plan to release in various public repositories.
- Release the code.
If I know exactly what I want to change or add, I skip the first step and just develop on the public repositories. But many times, I want to try out variations, or need to learn how something works before modifying it. That is where the experimentation comes in.
So in some cases, you will see a bunch of code added to the public repositories overnight. It was probably a result of a successful experiment.
Yes, I know what a dev branch is. But experiments aren't always released, so I prefer not to clutter up the dev branch with stuff that will never be released.
Repositories
These are the main repositories that I work with. Most of my websites pull code from these repositories, and I also contribute to them. If you want to install Hubzilla and Neuhub, these are the repositories you would be pulling from.
- Hubzilla Core
- Hubzilla Addons
- Hubzilla Themes
- Hubzilla Widgets
- Federated Works / Neuhub Themes
- Federated Works / Neuhub Addons
- Federated Works / Neuhub Widgets
I also have these repositories that are mostly for my own use and experimentation.
- Neuhub Experimental - Original Neuhub repository. Not suitable for deployment.
- WisTex Themes - Variations of Neuhub Themes for my websites.
This does not include any private repositories that I work in.
Difference between Hubzilla and Federated Works
Questions about why there are two sets of repositories come up, so I thought I would answer it publicly, in case others are wondering too.
Hubzilla is a project that has been around for over a decade, and is lead by Mario Vavti, supported by the Hubzilla Association. Mario and contributors maintain the code, and the association maintains the websites, documentation, etc. It is primarily focused on the core fediverse server and the default themes, addons, and widgets that come with it. I was elected as the President of the Hubzilla Association in November 2023.
Federated Works is a project that I started that primarily focuses on extending Hubzilla in various ways. This includes themes, addons, and widgets, which are under the Neuhub umbrella. It also includes integrations with other software and other projects, which may have other names.
This creates an interesting situation where I have to decide where to submit code. Does it go in the Hubzilla repositories or the Federated Works repositories?
My rule of thumb is that if it is something that everyone can benefit from, and it aligns with the goals of the Hubzilla Association and is approved by the lead developer, then it goes into the Hubzilla repository. That usually means that it is directly related to the function of the fediverse server.
For specialty or niche apps, like a project management system, those would go into the Federated Works repositories instead. Also, any project that Mario does not want to maintain would also go into the Federated Works repository.
Themes, however, could go in either place. It depends on who will be maintaining it. If Mario and Hubzilla contributors are maintaining it, then it goes in the Hubzilla repository. If my team and myself are maintaining it, then it goes in Federated Works repositories.
Mario has the final say in the Hubzilla repositories, and I have final say in the Federated Works repositories.
Instead of creating a competing project or forking Hubzilla, I decided to extend it instead. Hence the two organizations and two sets of repositories. Same core code; slightly different missions.