Gitea Is a Thing

Requirements

I can't stop looking for a tool for both product management and project management; I even made an effort to build my own. Okay, let's start with project management – what it's actually about:

Besides that, you'd like to have some project artifacts such as statuses and the deliverables themselves. I deliberately didn't mention tasks, because they belong to... well, task management. Still, task management is what a project manager does on a daily basis, so it would be nice to have a tool for that. In building my own tool, I realized that each type of issue requires a special set of fields, although of course technically I store them in one table. Let's take risks, for instance: we need a risk assessment matrix with likelihood and severity.

Issues have a few things in common, though:

And if we're talking about managing more than one project, we'd like to group projects into programs and/or portfolios. A program or a portfolio should have its own definition, which boils down to the bullet points above or can be uploaded as documents.

For product management, we need a hierarchy:

A hierarchy means that items should probably be linked to each other, similar to projects/programs/portfolios. But to describe each of them, we'll need the same components: an ID, a name, a description, and a discussion.

But that's not all; let's talk about storing project or product documents. I'm still messing around with a folder containing 10 versions of the same file, because although version control systems are commonplace in software development, they are rarely used for office documents like contracts or presentations. Looking at this folder with 10 versions makes me sad, because this particular setup multiplies my chances of making a mistake and increases my stress. It also doesn't motivate us to use simpler formats like Markdown or Org, but we'll leave that story for now.

Alternatives

Redmine could be a great solution if you are at peace with Ruby on Rails and its resource usage. Does it make sense to use it for a company? Absolutely. Does it make sense to use it on my personal laptop for juggling my personal tasks? It's too heavy and it's also total overkill. It's also kind of outdated in terms of backend and interface, but you can skip this part if you like. Anyway, B2B is quite conservative when it comes to choosing a tech stack.

My intuition and some research tell me that Go should be a modern choice for the backend of a modern web app. The frontend probably shouldn't be heavy; single-page apps for particular parts are OK, but when they are used everywhere, things feel bloated. And in terms of scalability, I'd like to be able to start with SQLite and migrate to MySQL or Postgres when things start to get serious. Well, Gitea and its open-source fork Forgejo are here to help, as they tick all the boxes. But how do we actually manage a product or a project with them? Doesn't it look like a stretch?

Tags Everywhere

Well, it requires a certain amount of discipline, which I wouldn't expect from large teams, but it's certainly doable with the feature called tags. Every level of a hierarchy or a particular element within it can be a tag. For example, we can have a tag for a problem or an epic. An epic should ideally reference all included user stories, and the user stories should reference their parent epic. I know, it gets messy from here, but it seems to me that no one has ever tried to use this tool this way. I also see a clear path for future development – for example, adding a risk matrix to list all risks and calculate risk values (and highlight them with colors), or building something more convenient for Epic-User Story relationships.

The insight I experienced is that everything is an actionable item – an issue in terms of Gitea/Forgejo. It can be a task, a problem, a user story, or an epic. With Markdown, we can use a structured template for each issue type. Cross-referencing between issues is as easy as it gets. Furthermore, the discussion thread below each item is a critical feature for enhancing collaboration: yes, I want to discuss everything.

Git is not ideal: it struggles with larger files (sometimes presentations happen to be really big), and for contracts, I might have versions in different formats: first in PDF, then in MS Word, then in PDF again. But I am sure these issues are either solvable or minor enough not to prevent us from automating version control and finally stopping emailing files back and forth. This is a big change, obviously. My only hope is that in the far future, Git will be considered part of a basic education. As well as Markdown, by the way.

Conclusion

Does this sound too futuristic to you when you look at Gitea/Forgejo? Sure, it's targeting developers for now, but I see the potential. The scalability and simplicity are great in my opinion, especially with Docker. Plus, there's the ability to switch databases easily. For me, if something is designed well (meaning the creators share my taste), everything just feels right. The interface is light and responsive, comes with a dark theme, and even offers a CLI version (no, I don't use it). I'm managing two personal sets of tasks this way, let's put it that way, and it has already helped reduce my stress and anxiety by bringing in structure. It's so convenient that it's almost invisible to me. And if I want to collaborate with someone, I can just deploy this Docker container to any hosting. It all just clicks together, exactly as it should.