That being said, I'm not sure what I'm going to do about the lack of space. If I swap out keyboards, it become a port rather than a build...which I don't like to do. I was thinking about changing partition sizes and removing space from data and giving it to system...but I'm afraid that others or even myself may brick the phone. I'll have to do some more research on the matter.
Right now I feel ICS was the end of the line for this phone.
Ideas and suggestion are welcomed...
I have considered several options. Keep in mind this is all theory right now, as I haven't actually implemented any of it yet. I'm busy playing with the OMAP3 video processing pipeline in my Marquee right now to get the cameras working.
But I've done a fair amount of thinking on the subject and I have a bit of experience under my belt.
I initially thought of changing partition sizes because it works so well on Samsung devices. But they have a single kernel for normal boot and recovery, which makes it easy. For our phones, short of rewriting the atag table (which I don't believe is possible), it would require a matching recovery and rom kernel. Users are sure to screw that up. Heck, I would probably screw it up. So I discarded this idea.
I settled on the idea of bind-mounting /system/app to /sd-ext/sysapp as the best solution. Now, /system/app doesn't have a huge amount of stuff in it. But it has enough that if it weren't there, the rest of the system should fit. It happens to contain LatinIME, most of gapps, and the crucial SwagPapers from AOKP that was tossed out in my build to make extra space. So this would provide enough space to support a full "small" language set, a full LatinIME dictionary, and other stuff as well.
The biggest problem I see with /sd-ext/sysapp is flashing stuff in recovery. Install scripts are at risk of getting rather confused. For example, flashing a "normal" gapps will delete some files under /system/app. But those files won't be in /system/app when running under recovery. Thankfully, gapps is easy to repackage and users shouldn't be flashing a whole lot of stuff to a running system anyway. Certainly not stuff that plays with /system/app (with the already noted exception of gapps). And if one were inclined, one could make an init.d script that moves anything in /system/app to /sd-ext/app before doing the bind mount. That would only fix half of the issue, and I'm not sure if that is better or worse than doing nothing.
Oh yeah... and it would also, technically, be the first setup to actually
require the sdcard to boot. But that's a small price to pay for jellybeans, don'tcha think?
Hope that is useful...