From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1S7set-000276-Fx for garchives@archives.gentoo.org; Wed, 14 Mar 2012 18:10:51 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D7D4EE09C8; Wed, 14 Mar 2012 18:10:38 +0000 (UTC) Received: from mail-bk0-f53.google.com (mail-bk0-f53.google.com [209.85.214.53]) by pigeon.gentoo.org (Postfix) with ESMTP id 176E9E0AE1 for ; Wed, 14 Mar 2012 18:09:17 +0000 (UTC) Received: by bkwj4 with SMTP id j4so1810085bkw.40 for ; Wed, 14 Mar 2012 11:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=8tk8F94vmDRJZvrfpJRBkQny+pxKDdkm0UwnO0G9+wo=; b=uuPjeh0tz/AjOfisttPNtfBGSmPYelW3GEg0xe8EX/yKyeZUDsyDruv65RtXF/RE0E GIQTqC5YHPXhgpnUXGo8PP5p5OasOn7FIpGw9+vd3UBDhuatgOD3PGxXokRXYZINdES0 conn0yVmtQeRGtidtASHrlIvBY70AmtP1XYE1rnvGaCo+ZNylGOlMb7Fo3Q0KCFV2zmI mYdOvMD5YWG4wSmr5g6eDoZn2gS3UWBkzf+7af8APzrPlT+byjLqc/2dXbGK89naqIhW c7dKYzmE4Hj0T3rm4nw2gXDGUuKkps3y/eZj9+pEvbfwAOJixtskGzVcGCbK0ECy4jAv n9ow== Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.205.122.144 with SMTP id gg16mr1427157bkc.12.1331748557160; Wed, 14 Mar 2012 11:09:17 -0700 (PDT) Received: by 10.204.168.17 with HTTP; Wed, 14 Mar 2012 11:09:17 -0700 (PDT) In-Reply-To: References: <20120313130534.GB3457@acm.acm> <20120313190052.GA2430@waltdnes.org> <20120313194727.GB2536@acm.acm> <20120313210737.GD2536@acm.acm> <20120313213330.78c5ebf7@digimed.co.uk> <20120313222019.GE2536@acm.acm> <20120313230358.GF2536@acm.acm> <20120314151620.GB24395@acm.acm> Date: Wed, 14 Mar 2012 14:09:17 -0400 Message-ID: Subject: Re: [gentoo-user] Beta test Gentoo with mdev instead of udev; version 5 - failure :-( From: Michael Mol To: gentoo-user@lists.gentoo.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 84b2c402-8280-4646-8a15-a5bd5ed35be7 X-Archives-Hash: 85cc760bfeac76cb3d44d49c4c765f3b On Wed, Mar 14, 2012 at 1:22 PM, Canek Pel=C3=A1ez Vald=C3=A9s wrote: > On Wed, Mar 14, 2012 at 9:16 AM, Alan Mackenzie wrote: >> Hello, Canek >> >> On Tue, Mar 13, 2012 at 06:07:32PM -0600, Canek Pel=C3=A1ez Vald=C3=A9s = wrote: >>> On Tue, Mar 13, 2012 at 5:03 PM, Alan Mackenzie wrote: >> >>> >=C2=A0The new hardware will "just work" if there are the correct drive= rs >>> >built in. =C2=A0That's as true of udev as it is of mdev as it is of th= e old >>> >static /dev with mknod. >> >>> No, it is not. You are letting out the sine qua non of the matter: the >>> device has to be built, *and the /dev file should exists*. I hope you >>> are not suggesting that we put *ALL* the possible files under /dev, >>> because that was the idea before devfs, and it doesn't work *IN >>> GENERAL*. >> >> Previously you made appropriate /dev entries with mknod, giving the >> device major and minor numbers as parameters. =C2=A0This appeared to wor= k in >> general - I'm not aware of any device it didn't work for. > > Again, I believe you are not following me. In *general* the number of > potential device files under /dev is not bounded. Given N device > filess, I can give you an example where you would need N+1 device > files. With your experience, I assume you know about huge arrays of > SCSI disks, for example; add to that whatever number of USB devices > (and the hubs necessary to connect them), whatever number of Bluetooth > thingies, etc., etc. > > =C2=A0Therefore, mknod doesn't solve the problem in general, because I ca= n > always give an example where the preset device files on =C2=A0/dev are no= t > enough. And I can always give an example where there can't be enough inodes (or perhaps even RAM) to contain enough device nodes. "General Case" is a beautiful thing for a theoretical system, but my computer is not a theoretical system. Neither is my phone, or my server. > >>> So, you need something to handle device files on /dev, so you don't >>> need every possible device file for every possible piece of hardware. >>> But then you want to handle the same device with the same device name, >>> so you need some kind of database. Then for the majority of users, >>> they want to see *something* happen when they connect aa piece of >>> hardware to their computers. >> >> That happened under the old static /dev system. =C2=A0What was that /dev >> system, if not a database matching /dev names to device numbers? =C2=A0I= 'm not >> sure what you mean by "same device" and "same device name". > > That if I connect a USB wi-fi dongle, and it appears with the name > wlan23, I want *every* time that dongle to have the wlan23 name .Good > luck doing that without a database. udev does something nice here, and I believe mdev is capable of similar. sysfs exports device attributes such as model and serial number, and you could trivially derive the node name from that. > >>> So you need to handle the events associated with the connections (or >>> discovery, for things like Bluetooth) of the devices, and since udev is >>> already handling the database and the detection of >>> connections/discovery, I agree with the decision of leting udev to >>> execute programs when something gets connected. You could get that >>> function in another program, but you are only moving the problem, *and >>> it can also happen very early at boot time*, so lets udev handle it all >>> the time. >> >> Early in boot time, you only need things like disk drives, graphic cards >> and keyboards. =C2=A0Anything else can be postponed till late boot time. > > Bluetooth keyboards. Done, you made my system unbootable when I need > to run fsck by hand after a power failure. The userland bluetooth stack is an abomination. (Actually, the _whole_ bluetooth stack is an abomination. You don't want to know what embedded developers who build car stereos and the like have to go through to try to test things. Or what real packets fundamentally look like 'on the wire'.) It needs a real overhaul. I used to use a bluetooth keyboard, but I found it to be a real mess. I even joined the Linux Documentation Project with the intent of getting bluetooth profiles, apps and stacks indexed and cross-referenced, but there's just way too much going wrong with bluetooth. I eventually switched to using a propriety wireless keyboard, and relegated the bluetooth keyboard to secondary access and to controlling the PS3. Besides, your BIOS isn't going to support bluetooth, either; if you're concerned about failure-case recovery, and you don't have a keyboard you can navigate your BIOS with, you're very probably doing something wrong. > >>> I hope you see where I'm going. As I said before, mdev could (in >>> theory) do the same that udev does. But then it will be as complicated >>> as udev, *because it is a complicated problem* in general. And I again >>> use my fuel injection analogy: it is not *necessary*. It is just very >>> damn convenient. >> >> It may be a complicated problem in general, but many people do not need >> that generality. > > ^^^^^ That's your mistake! (IMHO). I explain below. > >>=C2=A0I suspect the vast majority don't need it. =C2=A0Neither the >> typical desktop, the typical server, nor typical embedded devices like >> routers. > > Alan, the "vast majority" of Linux users right now are phone users. Phone users are _excellent_ examples of embedded environments. You have a static hardware set, where you can predict darn near everything about it that you might possibly need during a boot sequence. You're not expected or intended to cope with boot failures. Your bluetooth earpiece and input devices can wait until the OS has loaded. This is exactly the kind of environment where I would expect udev to _not_ be necessary during boot. > That was my initial point some mails ago. What *you* believe are > "regular" users (people like you, or maybe even me), stopped being > true a couple of years ago. The days of the Unix admin and workstation > user are going the way of the dodo. > > At least, that's how I see it. I can only assume you've run a server. I expect you currently run at least one. If you haven't, then you _really_ have no standing to argue that server environments are irrelevant; you'd be belying a massive lack of understanding of systemic, practical and operational context. I can't _imagine_ you expect the client/server architecture of the Internet to go away in the near future. You're very explicitly talking about sacrificing Linux's efficiency in a server environment in favor of The General Case, which is a case which should only be needed once the system has already booted. We used to joke that emacs would be a great operating system if only it had drivers. From your arguments and positions, it's looking like udev is setting itself to be the next target of similar jokes. > >>> I have a really time understanding why you don't see the complexity on >>> the problem. I explained above: it is a complicated problem (when >>> dealing with the general case), and therefore the (general) solution is >>> bound to be also complicated. >> >> I've had a hard time understanding, because up till now, nobody's >> described the problem in detail - there's only been hand-waving. >> >>> You want it simple? Tha'ts fine, it is possible. It's just that it >>> will not solve the general problem, just a very specific subset of it. >> >> That subset used by the vast majority of Linux users. > > Again, think about phones. And tablets. And TVs. And > [insert-here-cool-gadgets-from-the-future]. See my argument above about static, predictable hardware, strictly-defined boot process and clear stages of operation. > >> =C2=A0And yes, I do want >> it simple, because elegant simplicity is the best way, IMAO. =C2=A0You, = on the >> other hand, seem to love complicated solutions because they are "the way >> forward". =C2=A0We'll have to agree to disagree on this one. > > No, it's not a matter of "that's the way forward". It's a matter of > trying to solve the general problem. And since the general solution > also solves the simple cases, I don't see a reason to waste my > time/resources in a solution that in the end will not solve the > general problem. Honestly, you're too dead set on finding a solution to the general problem, because to solve the general problem, you must redefine reality to cope with the limits of your theory. In order to handle the burden of your general-case-software, hardware itself must become more powerful and more expensive, which in turn will lead to greater complexity for your general case. Old hardware, no longer capable of running the general case software, even though it's a specific-case device, is wastefully discarded. > > Of course, as I have been saying from the beginning, this is > OpenSource. Want to pour some effort into solving the simple cases > that will not help all the community, and that it will only help in > fact a minority, that's your prerogative (and Walt's, and Vapier's, > and everyone else that don't like the "complex" but complete > solution). Go nuts with it if you want. > > But please don't dismiss the general solution as "unnecessary" complex > when it's not the case, and don't think that the "simple" setups > (whatever that means) are the majority. Again, think phones and > tablets: those *are* the majority. Again, phones and tablets are simple cases. > >>> Just as mdev is doing; Walt just posted an email explaining that if >>> you use GNOME, KDE, XFCE, or LVM2, mdev is not for you. >> >> Walter is, I believe, mistaken here. =C2=A0I can mount and use my LVM2 >> partitions. =C2=A0Gnome looks like it comes up OK, but that could be moo= t, >> since right now I haven't got keyboard/mouse drivers under the X server. > > Oh, for sure you can modify LVM2 to work under mdev. Also > GNOME/KDE/XFCE, and everything under the sun. You have the source; you > can do *anything* you want with it. > > But the effort wasted^^^^^Hpoured in that excercise will only serve a > handful of users, and it will be never accepted upstream, because > upstream is (rightfully) concerned with the general problem. And here is the biggest reason I get frustrated with you. You say "go ahead and try, you're wasting your effort. You're going to fail. Everyone will leave you behind." It's an incredibly negative, aggressive attitude which isn't geared toward finding a solution, but is rather geared at reducing the problem. > > Again, this is OpenSource: go nuts with any problem you find > "interesting" (I really don't understand why solving a particular case > of the general problem will be more interesting that solving the > former, but that is maybe the Computer Scientist in me). That's exactly what it is. I have a _lot_ of interest in (and respect for) computer science[1], but I also have several years of practical, real-world software development. I have the privilege of being allowed to see and participate in both the realms of theory and of practice. I'm not the smartest or most knowledgeable guy on this mailing list, but I think I might know enough to say that, yes, you have too strong a focus on the general case. > > I'm more interested in the general solution that will work not only > for my current machines, but also for the ones I'm planning to have in > the future. I'm dying to get a tablet where I can put GNOME 3 on it; I > can bet you another beer that mdev will be not enough to handle that. The fundamental problem, as I see it, is that udev's role currently encompasses both runtime hotplug events and boot-time responsibilities. Those need to be separated. How? I don't have a quick or easy answer, but that's where I see the systemic problem. (And, no, I won't suggest that HAL is the solution.) > >>> I will not be surprised if in the future the list of programs "not for >>> mdev" only grows. >> >> There's a difference between "needed by portage" and "doesn't work under >> mdev". =C2=A0As I say, it will all be moot if the evdev driver won't wor= k >> under mdev. > > With all due respect, Alan (and this is completely sincere, in this > list you are of the guys I respect the most), I believe you are > thinking too small. And I think you're thinking too big. Every case you would reach for to cover with your general case, there will be a case just outside your reach. At some point, you need to express limits. Limits are fine. Limits can be practical. Heck, reasonable limits make practice easier, because known constraints help one predict the behavior of the system. > > Right now Linux runs in my phone, my TV's, my routers and every > computer I own. I have a couple of Windows installations, which I use > once or twice every three months (I ported a PyGTK program to Windows > last week, so I had to boot into Windows for the first time this > year). I want Linux running on *everything*, and what is more: I don't > want android in my handhelds, I want the full GNOME experience. BTW, you've put yourself into a niche here; you want a general-purpose platform in embedded devices, but that's not the environment you've argued the majory of Linux users exist in. I agree the majority of Linux users are probably running Android at this point. They're not running a general-purpose platform. > > To accomplish that we need udev; mdev it's just not enough. > > Regards. > -- > Canek Pel=C3=A1ez Vald=C3=A9s > Posgrado en Ciencia e Ingenier=C3=ADa de la Computaci=C3=B3n > Universidad Nacional Aut=C3=B3noma de M=C3=A9xico > [1] Don't believe me? I started and continue to operate and fund Rosetta Code with the specific and ongoing interest in providing a tool which helps to improve the state of the art. (Watching and learning from a mix of practical and academic expert users of hundreds of different programming languages has been a great experience, too.) --=20 :wq