1. My experience:
The first thing I tried was to download the official toolkit+sdk from ps2dev. It compiled just fine with a few easy tweaks to the build scripts. Tried compiling a few "hello world" apps.
Then I felt the need for additional libraries to make homebrew programming more convenient, and let's face it, only using the standard c library and the native PSP library would mean reinventing the wheel no matter what the educational value is. The ps2dev repository has a number of modified libs you can build and install, but that means you have to spend time manually downloading the packages and run the commands, sure I could do that
... or I could just download the newest minpspw 0.11.1 which installs all the add-on libraries you'll ever need. Awesome! Installing was a breeze and I quickly started to make something a little more interesting than "hello world" apps.
The first thing I did was to create my own graphics routines from scratch for the purpose of familiarizing myself with the PSP, I also read a lot of documentation but that's beside the point. Then next I felt I knew enough about the PSP to start developing in a more convenient manner, so decided to use of the game libraries that's available for the PSP. This is where the trouble started.
2. Oh noes!
There's a couple of ways to write homebrew efficiently for the PSP. There is about 4 major ones: SDL, Allegro, OSlib and triEngine. I've tried 2 of them.
First I tried SDL and wrote a simple "hello world". *crash* Quadruple-checked that is was no error of mine and it wasn't. I tested a known good example as well, same result. No gotchas in the code, SDL was simply broken.
Oh well... then I went on to test OSlib (mod) and the results were much better I could init graphics and draw stuff on the screen. But pixels doesn't do it for me so next I tried loading a PNG and blit it to the screen. I got some linker errors. The OSlib that's included in minpspw 0.11.1 assumes an old version of libpng and minpspw uses libpng 1.4. Tried manually patching oslib, build and install a fixed version but for some reason the function just returned error.
At that point I've spent days and by then I've pretty much had it! I removed minpspw and installed 0.10. Tried again and the homebrew finally worked, with pictures! T_T *happy tears*
3a. The what, why and wherefore art thou. :P
So what have I learned spending a few days battling with the tools and libraries available for the PSP?
First I have one observation about minpspw. It's built a little like the original toolchain in that it's basically just a collection of scripts to build the development stuff from. But there are some important differences. minpspw packages or devkits if you will, is basically a script which downloads the last sources for a library etc. and applies a patch to it, then builds and installs. For a good number of packages it takes the sources from svn trunk and that IMO represents a problem.
Since a source code repository can change at any time it may randomly introduce errors in functionality and FTBS issues. This is something that can be easily avoided by either inslude a tarball of the sources in the minpspw repo or by making the devpak download a given revision. This will keep errors from sneaking in unnoticed, and hopefully the maintainer performs a check on the sanity of the applied patch should he upgrade the devpak.
I also feel that that it would be beneficial to better decouple the devpaks from the core toolkit. Since the devpaks may be buggy it should be easy to fix, rebuild and install them without having to either manually running commands on the source and copy files, or as in my case rip out the entire minpspw and install a previous working version.
But enough with the constructive critique, minpspw deserves praise for being super-easy to install, being patched with all the latest source updates and the build system is cool. ;)
3b. Them dusty libraries.
If you look at the state of the development software you will also notice that much of it hasn't changed the slightest the last couple of years (!). Indeed the glorious era of the PSP homebrew scene took a little nap after the last 5.50 CFWs and up until quite recently with the 6.xx HENs.
It seems like the original toolchain works pretty well, mostly since the compiler etc. versions haven't changed and there hasn't been found any major bugs in it AFAIK.
The PSP SDK also works well because Sony's API is stable. However I know there's a good number of newly discovered API calls that isn't supported in it. That's truly a loss for the whole PSP scene IMO. To put it like this: If theoretically the SDK was complete there wouldn't really be much of a need for support libraries like libpng, libz, jpeg, intrafont, heck perhaps even newlib (?). Sizes of homebrew would shrink many times.
No libdoc for FW 6.xx.
The state of add-on libraries seems to be even worse. The port of SDL hasn't really been touched for 3-4 years so it's more or less unmaintained.
OSlib hasn't been updated for 4 years. The mod version is in a better state, having last been touched about a year ago. It still can use some love.
The triEngine seems new and sparkly but I haven't tried it.
4. The outfall ...
That was quite a rant. Hopefully it will spark some discussion. It seems to me like the PSP scene is suffering from bit-rot, and I was wondering what you think about that. It doesn't seem like many library authors are actively maintaining their code, and it's not fair to expect the minpspw author to provide support in form of patches, testing etc. for the whole community. One solution I think would be a centralized repository of all the interesting sources, with many people to review patches. Or is that far fetched? The PSP is soon dead anyways etc.? Your opinions please.

