G1, Tasty Treats, and Constraint-Based Engineering
This past weekend’s brouhaha over whether the G1 will get Donut or Eclair turned into a full-on hullabaloo when a few mainstream publications picked up on the meme. The posts that appear to have kicked off this discussion are well-researched, but make one key assumption: that because Android 1.5 barely fit on the G1, that Donut is therefore too big.
That is an easy assumption to make…but you know what they say about making assumptions.
Every sort of software engineering has its list of constraints to work within, and techniques for dealing with those constraints. Web application developers, for example, have constraints like “amount of bandwidth” and “number of simultaneous connections” and “uh, guys, is there a business model here?”. Given those constraints, a fair amount of effort has gone into providing solutions, such as content delivery networks, continuations, and…well…OK, not enough work has gone into business models. But you get the point.
Developing operating systems for mobile devices has its set of constraints: limited CPU, limited RAM, limited storage. There is a whole discipline — embedded systems engineering — that deals with this sort of problem all of the time. And, of course, graybeards like me will point out that once upon a time, you had those constraints on any system you touched, and we had to program uphill both ways in the snow, and so on.
There are any number of techniques for dealing with those constraints, mostly involving making the existing code more resource-efficient to free up room for new advances. Projects like OpenWRT, for example, deal with this constantly, because the flash storage in your Linksys router isn’t exactly going to magically increase. If OpenWRT wants to do more, it first needs to do the same with less.
On a strategic level, those techniques will never suffice. The march of progress is inexorable, and you can only squeeze so many bytes out of existing code bases. However, at the tactical level — such as whether Donut can fit on the G1 — those techniques may be sufficient. They may not. However, tactical failure is not a foregone conclusion. We will only know when Android 1.6 ships or some other announcement is made.
Those original posts have great points on the strategic level:
- The G1’s days are numbered…just like the vast majority of consumer electronics, including truckloads of past non-upgradeable smartphones
- Given that Android devices will have varying upgrade lifetimes, carriers selling subsidized handsets (e.g., T-Mobile) need to have a plan in place to deal with devices that reach the end of their upgrade stream, to help minimize the complaints that will undoubtedly be lodged if a device stops getting upgrades while still on the subsidy contract
I suspect that we will find out soon whether the presumably-Donut-based Android 1.6 is available for the G1. With luck, we will get more information at that point about which upgrades the G1 will get after that point. Until then…can we all just chill?