The confusion of cats.

Quite some time ago I wrote a slightly surreal rant after becoming ever more frustrated with the utterly absurd ways that people break the tools and libraries I maintain. The metaphor I ended up with was intended to describe behaviour that I find absurd, painful and more than a little cruel and it was done in the abstract in an attempt to avoid pointing out specific people and/or projects. Mentioning names always tends to be divisive and drag debate to the merits of the people or projects rather than lead to any useful discussion of the problems caused by poor practices and/or writing tutorials and libraries dependent on devkitPro provided software without discussion of how that impacts on the tools and the habits of homebrewers who use the tools.

Responses to the original post have been almost as absurd as the behaviour that led to the writing of that post in the first place. One homebrewer suggested that it was better to clean your windows with a cat than to end up crashing into a ditch due to not being able to see through dirty windows. That one missed the point on several levels.

Some suggested that the post had rather a tone of superiority and putting myself forward as knowing better than the homebrewers involved. Considering I know why I’ve put the tools together in the way I have and I know best how I intended them to be used I’m not really sure how best to respond to that. There is, however, a long history of adjusting the development environment we maintain in response to constructive criticism from those who use the tools.

Many people proclaimed that they knew exactly what I was talking about and the metaphor was rather apt as well as quite entertaining. Some of those suggested ways in which I might be guilty of cleaning windows with cats but most seemed to be rather missing the context where decisions were made and unaware of why.

Others have considered themselves to be the people who clean windows with cats and want to defend their behaviour which is … interesting. I do have to say it’s not so much the actual cleaning windows with cats I object to – if you want to make your own life more painful than it needs to be then who am I to judge? What frustrates me is the people who encourage others to continue doing absurd things instead of listening to good advice. It’s the terrible tutorials and the workarounds to fix problems that never existed before someone wrote a step by step guide to installing a devkitPro toolchain and then replacing some of the components with incompatible and/or just broken versions.

I may write more in the future about the history of devkitPro and how the toolchains came to be but, for now, I’d like to try and get across some idea of the mission. Many things make more sense with some idea of the objectives we have in mind and the problems we set out to solve. Once those are understood I’d hope that more people begin to understand the frustration we feel and become motivated to help mitigate it.

The primary objective of everything we do is to make homebrew programming more accessible by providing a well defined environment that’s consistent across all the platforms we support. A project created for any of the consoles we support within this environment will, for the most part, compile cleanly regardless of a user’s host OS whether that is linux, OSX or windows. Over the years we’ve progressed from the early days of complex instructions to extract archives of various components through a windows installer & some perl scripts to the delights of using pacman to manage all the components automatically. Everything is aimed towards a potential homebrew programmer being able to get the tools installed and have the ability to build the example code as quickly and easily as possible.

There is, of course, much more work to do and many things currently in progress. We’d like to have better documentation and clearer workflows for those new to homebrew and even those with more experience. Such things take time, energy and motivation which, sadly, can often be in short supply. Those resources become even more depleted when people write their own guides without consulting us on how things are expected to work. If people create “easy” libraries for use with the tools and libraries we supply without consulting us then they’re extremely likely to break as we improve our own software. Treating our software as if it’s just something to build your own product on top of and pretending we don’t exist leads to nothing but pain and anguish for everyone involved. This, especially when it involves instructing users to inappropriately modify their toolchain install, is what I refer to as using a cat to clean windows. Some people just seem to be pathologically incapable of seeing the big picture and understanding that their behaviour impacts on 10s, if not 100s of 1000s of homebrew programmers.

Thankfully there are people around who understand and support what we’re trying to achieve and we are eternally grateful for the suggestions and the bug reports and the contributions we receive. It’s always a joy to see the creations made possible by the tools and libraries we provide. That joy is short lived when we find people repackaging our work without consideration for us or the users who depend on it. It’s especially galling when people use us and the resources we provide as the basis for self promotion then complain vociferously that we’re somehow oppressing them when it all breaks because they haven’t considered or asked how everything should fit together.

Sometimes people claim that they’re just trying to help which, of course, is appreciated but … if people are writing up tutorials and/or helping people to use the tools without reference to the toolchain and library maintainers then the tutorials and the advice are often going to be wrong. When that happens in places outside our influence – i.e. random blogs and forums unassociated with us, then we can’t fix any of it when it becomes out of date. We especially can’t fix it if nobody tells us it exists and it’s extremely frustrating to discover these things because someone has followed a guide or a youtube video from 10 years ago and ended up in a complete mess for no really good reason.

We do need help with many things and it would be good if people approached us before embarking on huge projects that will impact on all the toolchain users. Ideally we’d like to see more collaboration towards making things better for everyone and we have very strong opinions on how that can work best but we need more people who understand the vision. We need more people who don’t buy into the diversity and competition myth, who understand the paradox of choice and who are willing to contribute for the greater good.

We can be found in the places listed at https://devkitpro.org/wiki/Community_Portal. Talk to us, help us make better things.

Follow Me