VHBL’s wMenu goes open source
Exactly 3 years ago, I announced the release of wMenu for HBL (Half Byte Loader). The early releases of HBL shipped with an embedded menu that was not nice looking and caused some headaches to our team related to the GPL license (details below). With the amount of good quality menus available for VHBL today, it doesn’t look like it, but at the time wMenu was a giant step up. Today, as the initial reasons to make it closed source are not really valid anymore, and with the recent changes to the vita Firmware (which will require additional changes to the way menus install Homebrews on the Vita moving forward), I decided to make wMenu open source.
This isn’t a huge announcement. As I said, other menus are now available for VHBL, many of them better than wMenu. But wMenu relies on the powerful JGE++ library, the same library we use for Wagic, and with a bit of work wMenu could easily become much more than what it is today. Better graphics, more options,… and since wMenu is relying on the same library that wagic uses, I have personal interests to guarantee this will work as good as it can in constrained environments such as VHBL.
More interesting than the code itself maybe, is the story behind wMenu:
Back in 2010, when we first made HBL public, HBL was the only way to run homebrews on the PSP Go, and it staid so for a long time. HBL was therefore getting lots of attention, including that of people who didn’t seem to care about giving proper credit, or respect the GPL license.
These people would take the HBL source, quickly edit the menu to make it look better (which wasn’t difficult given how crappy the default HBL menu was in these days), repackage HBL into an “improved” version, and get all the credit for our work. Every time we would improve HBL, these guys would grab our sources, add their tiny menu improvements to it, and offer a “better” hbl. Fair enough, the GPL is exactly made for that, to benefit the end user first… except these guys would not make their source available, so we couldn’t improve our default menu with their changes. They were willingly doing so in order to drive traffic to their site ( I won’t name them, it was a popular scene website, the scheme was not driven by the owners of the site, but the admins were not actively doing anything to stop the infringing guys either).
Bottom line is, I figured out that the best way out of this was to dissociate the menu from HBL. HBL would stay open source, but the license of the menu would be up to the creator of the menu. After splitting the code of the menu from HBL (by turning the menu into a regular homebrew), I worked on a menu that added real graphics support, sounds, better browsing, better memory management… it blew the “competition” out of the water and basically marked the end of their dirty tactics.
This also, of course, solved the GPL infringement issues (these people did not have the skills to improve HBL itself, therefore were not providing “improved” binaries anymore), and as a nice side effect triggered the creation of various menus from other people. To a point where wMenu is just one menu in a series of other menus today, lots of them being better than wMenu in many aspects. To give credit where credit is due, I took the idea of making the menu an independent homebrew from the Noobz eLoader (I actually tried to reuse their API so that we could reuse their eMenu, but that never worked for some reason). It’s probably an obvious thing for many “binary loader” developers that the engine should be separate from the interface, but at the time my inspiration came from the noobZ eLoader.
Today, as we face new challenges (it is impossible to install anything in PSP/GAME by default), with my free time is shrinking, with the approach of a new VHBL port for Vita 2.12, and since HBL is not “threatened” anymore by GPL infringement, it felt like a good time to make wMenu open source.
Download / Install / compile
The source can be found here. It is massive, mostly because JGE++ has grown exponentially recently (it supports windows, linux, the psp, iOs, and android… but has lots of dependencies), but the meat of the code is in projects/wmenu/src
Compilation steps are explained here. (this is for windows, but linux users should be able to adapt the steps to their platform fairly easily). If you are having issues compiling, or if you’d like to submit a patch, feel free to get in touch with me.