Goyave v5: the reborn REST framework aims higher
Tags: go, news, webdev, opensource
Published: 2024-06-13 10:00:05

Over two years in the making, Goyave’s next major release is finally available. This time, it’s not just about a breaking change: the framework has been entirely redesigned and rewritten. Let’s talk about this rebirth and what it entails.

## But first, what is Goyave?

Goyave is an **opinionated REST API framework** for the **Go** programming language. Its initial goal was to make backend development easier and concise so applications can be developed fast and cleanly. Using the framework would allow developers to **focus on their business logic** rather than technical aspects. Despite being filled with powerful tools, it tried to stay as accessible as possible.

That’s a bit too much isn’t it? Indeed, there were contradictions in the design, leading to many shortcomings. Ultimately, the framework failed to deliver on its most important promises. Each of its features both contributed positively to one of the principles while negatively impacting another.

With v5, the design is **refocused** and takes some important new directions.

## New direction

Goyave has new commitments that are now fully assumed. The first is the target: instead of trying to please everyone and suit every need from prototype to real application, the framework now focuses on **medium to large enterprise projects with real-world constraints**.

The architecture recommendations and related utilities are taken one step further to eliminate dependency coupling, make testing easier, and streamline the development process.
Conciseness is not an absolute requirement anymore, making programs and syntax a bit more verbose, but way more flexible. In other words, the “progressive” aspect is abandoned in favor of a more “clean code” oriented approach, trading simplicity for scalability.

## Introducing v5

v5 is an almost entire **rewrite** of the framework containing all the accumulated ideas for rework and improvements that would introduce breaking changes. This new major version not only aims at fixing the outstanding issues and design flaws, but also improves on existing features by upgrading them to the latest available technology. Expect v5 to feel modern and to neatly integrate with all the new language features such as generics, file systems, structured logging, and more.

This new release is way too large to be discussed in detail here. If you are interested, feel free to read the official [changelog](https://goyave.dev/changelog/v5.0.0.html).

## Building a community

Despite several production applications made and running with it, the framework still has a relatively small community. More efforts will be made to gather and take care of a **growing and strong community**, which is very important for open-source projects.

You can help! Join the [Discord server](https://discord.gg/mfemDMc), give your feedback on [Github](https://github.com/go-goyave/goyave) discussions, create issues, share this article. All contributions are welcome and very valuable.

If you feel like it, you can even help develop the framework further by opening a Pull Request. Plenty of good first issues are available to get you started.