The idealist vision behind taiHEN

Firstly, my congratulations to the HENkaku KOTH solvers: Mike H. and st4rk. I hope you guys enjoyed the KOTH and gained meaningful experience from the challenge.

As promised, we will release the source of HENkaku. Furthermore, you’ve probably heard about taiHEN – the latest release from team molecule. Maybe you’ve read Yifan Lu’s excellent blog post, explored the taiHEN website and even tested out the taiHENkaku beta but still feel somewhat disappointed in the release. Don’t worry, I knew this would be met with mixed expectations. Here I will try to explain the high level decisions behind taiHEN’s vision.

What is taiHEN?

taiHEN is a custom firmware (CFW) framework – a tool for designing a custom firmware on the vita. It’s not a new exploit, so you must stay on 3.60. The design behind taiHEN is to improve upon shortcomings of previous custom firmware. In this blog I will focus on improvements and design deviations from PSP custom firmware.

Why is taiHEN based CFW different?

In the past you may have installed a custom firmware on your PSP and realised how little customisation is available for the CFW itself. Maybe you really enjoyed ME but there was a feature in PRO that did something just a little better. Maybe there was a feature that you felt had a lot more room for improvement. The fact that these CFWs had so much in-built functionality was a major design issue, despite how convenient it was for distribution. Developers had tools from the CFW for patching the system, but it was very challenging to compete against in-built features. If we use a vshmenu from PSP as an example, can you imagine the potential for customisation if the in-built feature was easily replaceable?

We decided that features should be encouraged to be abstracted away from the homebrew enabling aspect. taiHEN provides the bare minimal with zero features other than homebrew loading. All other features are plugins/modules that are loaded according to a configuration that taiHEN reads. In terms of PSP lingo, the “CFW” is just a very developer focused plugin loader with some complex tools for patching the vita. Everything else you would find on a PSP CFW (vsh menu, extra memory, PSN, PS1, ISO, further patches…, etc) will be implemented as a plugin on the vita.

Why is taiHEN better for users?

A custom firmware is no longer defined by the creator. You can package your own custom firmware by selecting which plugins you like. Sure, there will be compatibility issues occasionally, but that is the price you pay for complete freedom.

Why is taiHEN better for developers?

If taiHEN is ported to different firmwares you have a good chance of having your feature work as expected with no modifications. Difficulties arise when it comes to project scope growth. Maybe you have a nice in-game menu with very few features, like tracking time or something. People love your project, and they want more features! So you add in-game music ability, awesome! Then you add network chat, in-game streaming and a lot more functionality. It’s important to recognise that when you increase complexity of your application to modularise it appropriately. There is no strict guidelines to tell you when you’re modularising too much vs not enough. The important thing is be open to feedback. If people want a different solution or implementation to a feature be willing to port your code to a module and provide an API.

Speaking of API, the homebrew scene usually has a follow the leader approach to development. If you’re the first to write the ingame music module and define an API to use it, it’ll likely be adopted and implemented by others. API design is a complex task and I’m still not 100% confident in the API I design. We’re open to modifying the taiHEN API if there are issues, you should be the same with your modules.

Lastly, open source helps a lot. You might be worried someone “steals” your code if you open source it or might not be confident regarding your code quality (many homebrew developers are students and still learning). We hope that by releasing all our code as open source will encourage other developers to take pride in their work and the community. There will be some people that break the rules or just rip off you code, and they’re not exclusive to open source. Take no notice of it, if your application is worth using people will still come to you for updates. Other developers may use portions of your code in their application or re-purpose it for something else. We did this for molecularShell/VitaShell and its a very healthy activity. Finally, open source allows people to contribute to your code base. Maybe somebody likes your application enough to contribute bug fixes or implement features. Free code, what a gift!

What if its not adopted?

It might never be adopted. There is nothing stopping someone from taking taiHEN and modifying the code to create the old-style monolithic custom firmware. We’re not here to pick and choose how people use the code. It’s released as free open source software and anyone can modify it and release it to the public. It’s up to developers to now to decide whether they want to give users that freedom of choice too, or lock them into their software. This post is the idealistic view of what a vita homebrew utopia would look like. Egos exist, people will not open source their code, people will create huge monolithic applications and drama will ensue. There is no cure for this, we can only lead by example.

All the software team molecule and I will release will be compatible with taiHEN’s modular framework. With any luck, more developers will release their menus, hacks, libraries, cheats, tools, etc under the same framework.

Is this the end?

For now. Molecule was really enjoying its break and slipping out of the spotlight. Look how far you guys have gotten with HENkaku, thats just user mode homebrew! taiHEN will open up a new can of worms now that it is easy for developers to run inside the kernel. We could see some reverse engineering of the memory card, more advanced research into PSP emu, plugins within homebrew/non-dumped games and so much more. I plan to release some very small tools for helping developers get up and started with their plugins, but after that I’m going back to my break. The future for me sees a lot more focus on my job, especially related technologies in that area. Otherwise, only expect updates to taiHEN in the future.

Follow me on twitter: @DaveeFTW