On 31.03.2009 12:52 Uhr, Carl-Daniel Hailfinger wrote:
I'm very sad to hear this. Sure, I've seen that v3 didn't improve at the rate it used to. But although I've been active in coreboot for 3 years:
- I still do not understand the v2 build system.
- I still do not understand the v2 device model.
- I still do not understand the v2 Config.lb/Option.lb system.
- I still do not understand the v2 fallback/normal/failover model.
- I still do not understand the v2 design.
- I still do not understand how v2 CAR and normal code interact.
We are all fighting with "smart conceptions" in version 2. But, I also believe the reason we're not getting anywhere with v3 is that we refused to get a decent understanding of what happens in v2. Starting out with a clean room implementation like v3 helps to grasp many of the issues. Now it is time for a "lessons learned".
Every time I work on v2, I feel utterly incompetent. I just try to hack on it unintelligibly in the hope it doesn't explode in my face again and again.
Which is exactly why we started to improve v2.
Every time I work on v3, I feel I understand everything. Working on it is a pleasure and tracking down bugs is rather easy because of the clear structure.
Except for the idiosyncratic implementation of some features, v2 is very similar to v3. Don't let the few rough parts in v2 delude you into thinking v3 were something completely different. Yes, v3 is simpler. And yes, a lot of that is due to the fact that v3 lacks a lot of functionality that we have in v2. A bike is more comfortable than a car, if you have to carry it. Things change as soon as it's supposed to carry you.
Now if we can make v2 use the v3 device model, DTS, config system, build system, stage design, LAR, CAR, startup code, global variables, struct device and printk buffer, v2 will become bearable. But then v2 will essentially be transformed into what v3 is now with additional ports.
I still think DTS isn't all that helpful, and a lot more complex than what we have in v2 without any additional gain. For the rest, I agree. We developed a lot of fine features in our experimental tree, and it's about time we port those over so that people can actually use them.
Bringing v3 concepts, but not code to v2 removes all implementation experience we have with those concepts.
Why is that? We don't suddenly become oblivious, will we?
If we already built and reinvented the wheel multiple times and the last one works rather well, rebuilding and partly reinventing it again feels really futile.
We have a pretty large stock pile of tires around here, but now it's getting spring, and we want to mount a new set of tires. :-)
Stefan