From owner-freebsd-current Sat Oct 5 13:39:16 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2D04E37B401 for ; Sat, 5 Oct 2002 13:39:12 -0700 (PDT) Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.86.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3983343E42 for ; Sat, 5 Oct 2002 13:39:11 -0700 (PDT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.12.6/8.12.6) with ESMTP id g95Kd3pS031692 for ; Sat, 5 Oct 2002 22:39:03 +0200 (CEST) (envelope-from phk@critter.freebsd.dk) To: current@freebsd.org Subject: The official "GEOM is in the tree" speech. From: Poul-Henning Kamp Date: Sat, 05 Oct 2002 22:39:03 +0200 Message-ID: <31691.1033850343@critter.freebsd.dk> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Ok, we've reached a milestone which have been on the radar for 8½ years, at least for some of us: GEOM is far from done yet, but unless I have overlooked something, it now meets and in may areas exceeds the capabilities of the previous code, and therefore the time is ripe for the change. Throughout history, there has always been a tradition for rallying the forces with a bit of pep-talk on the eve of a battle, so bear with me if this email gets to be a bit philosphical, but I have some things I want to say to you guys. Times are changing, and the world around us as well. We are no longer a tiny volunteer hobby project, we are now a player in one of the most cut-throat businesses on the planet, next only to narcotics (legal and medical) and weapons. Remember that. Just as well as the rest of the old-timers, I remember how UNIX used to run on 16 bit computers, the simplicity, the elegance and all that which we fell in love with. And I still admire the people who made that possible. Our job, and our challenge, is to continue the tradition they started, standing on their shoulders, reaching forever higher. Freezing time, sticking to traditions, or sticking to standards which try reduce diversity and thereby inovation, is not what the way to do that, neither is sailing out across the wide blue ocean without map and compas. Operating systems, just as people, are a product of their time, and if they stop innovating, fail to develop with the world around then, they will stagnate, and die. Our task is to stay alive and kicking, our challenge is to be ahead of our time and the rest of the pack. And that is the first point I would like to make: If it wasn't for the bikeshed it would produce, I would like to propose that starting right after then 5.0 branch, we rename our HEAD revision from "-current" to "-future". What goes in in current is by nature, and our release cycle, one to two years ahead of our main userbase. We should have in -current what they will be asking for 12 months down the road. Remember that. GEOM is not ahead of the curve like that, infact is is way behind. GEOM should have been put in the tree before ccd(4), before PC98, alpha and in particular before vinum(4). Just like the VFS/Vnode concept or the protocol stack, GEOM is a frame-work, or if you prefer: infrastructure component, meant to make FreeBSD much more able and flexible than it ever were before. Now that GEOM is in the tree, we can clean up the various hacks which were made due to the lack of infrastructure between VNODEs and diskdevices: ccd, vinum, disklabel, diskslice and all that. And we can start to add new functionality using the flexibility and clean architecture it offers us. And that brings me to the next point I want to make: The reason it has taken me 8 years to do it, is mostly that I wanted it done right, not just another "quick hack to get it working", and that meant taking the long way rather than a short cut, and it meant paving a couple of new roads because the old ones would not be able to carry the load. Road-construction is never a nice thing, at least not until it is done and over with, but it is a necessary part of the lifecycle. GEOM has been a long journey for me, its been a long journey for you and for all the users as well. There have been fights, there have been disagreement and there have been a lot of hard work. Most of this could probably have been avoided, one way or another, but likely as not, we will never entirely avoid it in a volounteer project spanning the globe. It worries me however, to realize how tough an ass-hole I have had to be, in order to get to stick to the principle of doing things right, rather than "just hack it in". The best way to destroy FreeBSD in the long term, is to let our infrastructure rot. Nailing a thing on it here, sticking a cute feature there, making an assumption in this place, it all slowly but surely erodes the strength of the infrastructure. We have a number of features in the kernel which have their merits but which carries a heavy cost on our infrastructure. I have probably better give you a random example here to make sure I don't get misunderstood: UFS snapshots are a cool thing, and I love background fsck as much as the next guy. But in order to be able to implement it, Kirk either had to redo the entire buffer cache/VM system to support the primitives he needed, or he could reach down and stick a wedge in between SPECFS and the disk drivers. If modernizing buf/VM wasn't easy before, this certainly wont make it any easier now. But I don't blame Kirk, he was not out to fix our infrastructure, he was out to add snapshots to UFS. But it is a good example of the price we pay for not having our infrastructure in shape: It gets circumvented, and the price for straigthening it out just increased as a result of that. Circumvent, hack around and disregard the infrastructure, if you need to, but do realize, that is what kills software. Remember that. Most people are not interested in working on infrastructure, and I don't blame them. There is little glory in doing so. In fact it's about the most irritating thing you can do to people: redo the floor under their feet. Fortunately we do have some people who care, and a few nutcases like me who really dig it. But even a dedicated handful of infrastructure people will not be able to stem the tide of the cummulative erosion from the rest of the project: You guys cannot escape thinking and caring for our infrastructure, even if you don't have to fix it yourself. So if I may propose a battle-cry as we approach -current after 5.0-R, it would be an adaptation of an sailors rule which is as old as sailing itself: "One hand for you, one hand for the ship". "One hand for your own code, and one hand for the infrastructure". We have several areas of the kernel which is in disrepair, the worst is buf/VM, but there are others as well. We also have people who are willing to look at it, attempt to make it better, and those people are as good as we were when we started, so why shouldn't we let them try ? All I ask of you, is that you don't make their task as hard as mine have been. Remember that too. Finally, on a personal note Peters commitstats say I have been committing to the kernel on average every 16 hours for the last year. It feels that way too. That would not have been possible if it wasn't for the research grant which Robert Watson and NAI Labs managed to secure for all sorts of FreeBSD work. So therefore Robert, whether you like it or not, I would like to dedicate GEOM to you: If it wasn't for your hard work, endless meetings and interminable production of presentations, we would never have gotten this bit of infrastructure straightened out. Thank you very very much! And now is the time for me to shut up, and for time and practical experience will have to judge if I delivered on the promises I made along the way. Thanks for listening, Poul-Henning -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message