From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <003d01c1ae69$767283e0$1765c0d0@cc583254b> From: "david presotto" To: <9fans@cse.psu.edu> References: Subject: Re: [9fans] code complexity MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Date: Tue, 5 Feb 2002 12:20:51 -0500 Topicbox-Message-UUID: 4cc1db66-eaca-11e9-9e20-41e7f4b1d025 Simplicity pretty much goes out the window when you try to keep up with the world since the world isn't simple. Try to build a browser that supports just enough to get along with the pages that are out there and you still end up with something bigger than Plan 9 no matter how hard you work at it. The question however is not the total size of the code but the complexity of the internal interactions. If one added as many device drivers to Plan 9 as one has in Windows or Linux, our code base would be truly huge also. However, the complexity of any instance of plan 9 wouldn't be anygreater because the vast body of device drivers do not interact with each other and any particular instance will have a small selection of them in use. They all follow pretty much the same API talking to the kernel and to programs and that API is not very large. It would be nice if such an approach could be applied to a browser. I haven't seen the inards of Opera, so perhaps it has. It definitely isn't true of netscape or exploder. One of the problems of uncontrolled excess is that API's tend to get very wide to cover all possible corners. (The same is true of in other arenas, hence the current cross over cars that are SUV's, compacts, luxury cars, and trucks all built into one.) The wider the API, the larger the number of interactions with that piece of code and everything that interfaces with it. We've tried to keep API's small to avoid that, i.e., put in what's absolutely necessary and drag our heels on everything else. However, that means saying no to a lot of people with real problems, people we ignore in order to keep our playland comprehensible. To that extent Linux is much truer to the ideals of an open market than Plan 9 or BSD. If something it wanted by enough people, it appears no matter what it does to the complexity or supportability of the code. This leads back into the DLL discussion because, once someone has DLL's, they tend to feel that the size of the API no longer matters, everyone will be sharing the code bloat so why bother keeping things small. There's nothing inherent in the existence of DLL's that causes this, it's just human nature.