"The Linux kernel community is offering all companies free Linux driver development," Greg Kroah-Hartman posted in an open offer on the lkml, for all types of devices "from USB toys to PCI video devices to high-speed networking cards." He explains, "all that is needed is some kind of specification that describes how your device works, or the email address of an engineer that is willing to answer questions every once in a while. A few sample devices might be good to have so that debugging doesn't have to be done by email, but if necessary, that can be done." He added, "if your company is worried about NDA issues surrounding your device's specifications, we have arranged a program with OSDL/TLF's Tech Board to provide the legal framework where a company can interact with a member of the kernel community in order to properly assure that all needed NDA requirements are fulfilled." Greg suggests that companies participating can allow their developers to focus on drivers for other operating systems, "and you can add 'supported on Linux' to your product's marketing material." He further explains:
"You will receive a complete and working Linux driver that is added to the main Linux kernel source tree. The driver will be written by some of the members of the Linux kernel developer community (over 1500 strong and growing). This driver will then be automatically included in all Linux distributions, including the 'enterprise ones. It will be automatically kept up to date and working through all Linux kernel API changes. This driver will work with all of the different CPU types supported by Linux (for the CPUs that support the bus types that your device works on), the largest number of CPU types supported by any operating system ever before in the history of computing."
From: Greg KH [email blocked] To: linux-kernel Subject: Free Linux Driver Development! Date: Mon, 29 Jan 2007 17:29:04 -0800 Free Linux Driver Development! Yes, that's right, the Linux kernel community is offering all companies free Linux driver development. No longer do you have to suffer through all of the different examples in the Linux Device Driver Kit, or pick through the thousands of example drivers in the Linux kernel source tree trying to determine which one is the closest to what you need to do. All that is needed is some kind of specification that describes how your device works, or the email address of an engineer that is willing to answer questions every once in a while. A few sample devices might be good to have so that debugging doesn't have to be done by email, but if necessary, that can be done. In return, you will receive a complete and working Linux driver that is added to the main Linux kernel source tree. The driver will be written by some of the members of the Linux kernel developer community (over 1500 strong and growing). This driver will then be automatically included in all Linux distributions, including the "enterprise" ones. It will be automatically kept up to date and working through all Linux kernel API changes. This driver will work with all[1] of the different CPU types supported by Linux, the largest number of CPU types supported by any operating system ever before in the history of computing. As for support, the driver will be supported through email by the original developers, when they can help out, and by the "enterprise" Linux distributors as part of their service agreements with their customers. If your company is worried about NDA issues surrounding your device's specifications, we have arranged a program with OSDL/TLF's Tech Board to provide the legal framework where a company can interact with a member of the kernel community in order to properly assure that all needed NDA requirements are fulfilled. Now your developers will have more time to work on drivers for all of the other operating systems out there, and you can add "supported on Linux" to your product's marketing material. This offer is in affect for all different types of devices, from USB toys to PCI video devices to high-speed networking cards. If you build it, we can get Linux drivers working for it. For any questions about this program, please feel free to respond to this email, or contact me directly at greg@kroah.com. I will also be available at FreedomHEC 2007 <http://freedomhec.pbwiki.com/> held adjacent to WinHEC, if anyone wants to bring devices and work face-to-face. thanks, greg k-h [1] for the CPUs that support the bus types that your device works on.
From: Rik van Riel [email blocked] Subject: Re: Free Linux Driver Development! Date: Mon, 29 Jan 2007 21:19:21 -0500 Greg KH wrote: > Free Linux Driver Development! Mind if I include this offer on http://kernelnewbies.org/UpstreamMerge ? -- Politics is the struggle between those who want to make their country the best in the world, and those who believe it already is. Each group calls the other unpatriotic.
From: Greg KH [email blocked] Subject: Re: Free Linux Driver Development! Date: Mon, 29 Jan 2007 18:23:46 -0800 On Mon, Jan 29, 2007 at 09:19:21PM -0500, Rik van Riel wrote: > Greg KH wrote: > >Free Linux Driver Development! > > Mind if I include this offer on http://kernelnewbies.org/UpstreamMerge ? Please do, spread it around as much as you want. thanks, greg k-h
Re: Free Linux Driver Development!
How about an offer to help from a relative newbie to device driver development ?
I have been struggling to get involved - in a meaningful way - with linux development for several years. Of course I have also been struggling with Linux device driver development, but that may be becuase I have chosen an overly ambitious device (Dallas Semiconductor/Maxim 1-wire USB adapter http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3834) as my first attempt.
Anyway, I'd love to get involved, but perhaps something simple at first.
Thanks.
Jack
Re: Free Linux Driver Development!
Well, it's not that hard to find a place to start...
http://lwn.net/Kernel/LDD3
Good luck,
Oliver
Re: Free Linux Driver Development!
Thanks, but I am very familiar with LDD3, in fact I feel like I pretty much have it memorized by now.
What I am realy getting at it becoming involved with a 'real' device driver development project, not the one that I - overambitiously - first attempted.
Perhaps a way to register as an interested LDD developer ? I don't know enough to be a kernel developer (yet) and I am not that interested in tracking down bugs in YUM or some other relatively mature Linux utility. I am interested in device drivers but have yet to work on anything other than the examples in the book (plus my failed attempt, as indicated)
start simple
The simplest device I can imagine is the serial communications controller - the chip has a very small number of control registers etc. From playing with that you will learn how to access a device's control register via the kernel. Ironically, the bus controllers which ultimately allow you to communicate with the serial controller are much more complex than the serial controller...
Once you have (re)written a 16550 driver you can easily proceed to other drivers. If you want to play with USB, then read up on how to use the USB API. The USB protocol is very complex, so don't even think about (re)implementing that until you have a few years' experience (and a lot of free time to read the protocol specs). The latest Linux USB API in fact makes development so easy that I can't help thinking "am I missing something? creating a driver hasn't been this easy since 1988". USB is a bit different from most 'device drivers' since everything you do is via commands sent by serial line, and that is handled by the API. You do not have to know how to access hardware registers via the kernel to work with USB.
Concentrate on understanding the existing drivers for the class of device you're most interested in - don't attempt to understand all drivers at once - it is simply not possible. For me, aside from learning to set registers and initialize hardware via the kernel, the other important things to learn about drivers in general are:
1. top half / bottom half (kernel space / user space) design - in the end only experience (and testing) will tell you what is not reasonable to stuff into the kernel space processing. In general you must perform only absolute necessary operations and exit the interrupt as soon as possible, but sometimes you really do need to cram a lot into the 'top' half. Learn about the problems involved.
2. handling exceptional circumstances - In the middle of reading or writing data, the user pulls out the USB memory stick. Deal with it. Even in the most current kernels you can often lock up a system by doing such naughty things. In my case I have a D-Link wireless gizmo that uses a Ralink device - I'm happy with the hardware, but when someone pulls out the USB device the computer hangs - it is possible to avoid this problem.
3. handling concurrent requests - Especially now with the 2-core CPUs being pushed onto laptops and desktops, you can bet that you will have issues with multiple overlapping requests from different CPUs. Study how other drivers deal with this. This is a particular problem with storage devices since you need to avoid two processes altering the same storage simultaneously and becoming very confused. In most other cases a protocol layer prevents problems - for example MODBUS (protocol spec) over RS485 (electrical spec) serial comms.
Have fun! After a few months of playing with drivers you should be ready to do some serious work on your favorite gizmo.
Here's a project for you to work on if you REALLY want to get into USB - unfortunately you need access to a device which has both 'client' and 'master' ports: Write a tool to help reverse-engineer a device's protocols. The basic setup is this:
PC -- tool -- USB gizmo
The PC's master port (PC-M) goes to your tool's client port (T-C). The tool logs the information and passes it on to its master port (T-M). The T-M will then receive information from the USB gizmo (U-C). It's a 'man-in-the-middle' reverse engineering tool for USB devices and would prove extremely helpful for developing drivers for ANY USB gizmo which already has a driver for another system. (Of course this scheme is foiled if the device drivers at either end use encryption.)
You don't need a "gizmo" to
You don't need a "gizmo" to reverse engineer USB drivers. The Windows USB layer lets you install a filter into the USB stack which will let you log the communication, hence the USBSpy, USBSnoop, etc tools.
Linux Device Driver Non-Disclosure Agreements
If Greg is suggesting that Kernel hackers will sign a Non-disclosure Agreement, then his plan is unethical.
Why are kernel hackers pandering to industry types anyway. If these pin-heads (industry execs) can't recognize the community's value then forget about them.
Create drivers for companies that support the development of Free Software and punish (by not buying/supporting their products) those that don't. This is a very simple and fundamental concept.
The FSF or GNU Project should maintain a list of hardware players that have committed to supporting the growth of Free Software. And GNU/Linux users should commit to purchasing only these companies products.
Another good idea would be for some of the hackers to found hardware companies that create fully Free (in the sense of the soft/firmware that runs them) hardware devices.
"If your company is worried
"If your company is worried about NDA issues surrounding your device's specifications, we have arranged a program with OSDL/TLF's Tech Board to provide the legal framework where a company can interact with a member of the kernel community in order to properly assure that all needed NDA requirements are fulfilled." - Greg KH
I'm not sure what the "legal framework" is, but NDA's can vary wildly; nonetheless the reason for the "pandering" is probably that it's easier than reverse engineering.
For example, previous kernel developers have had NDA's (although that usually meant a binary blob that wouldn't allow kernel inclusion - e.g. pwc drivers for webcams). Obviously if it's getting included into the kernel, there is no binary blob (unless it's firmware).
I don't see the big deal.
Well, this is Linux, not
Well, this is Linux, not GNU/Linux. Distros are free to strip off any drivers that have been created with NDA's or switch to HURD.
I mean, an NDA is a company's right to its internal documents. The fact that we can have a peek at the specs is a blessing, and if we can't share it with others (who would mostly not be interested in it anyway) it's OK. The most important thing is getting the drivers to work.
Face it: Linux isn't about Free Software. Linux is about Open Source.
So you'd better use M$ OS
Face, Windows Vista is the right OS for you "most important thing is getting the drivers to work" and (no source? "if we can't share it with others (who would mostly not be interested in it anyway) it's OK").
bye
So you'd better use M$ OS
right...Vista has been out for HOW MANY months, and the "big boy" industrial control houses have yet to certify any of their software on it!? Check Rockwell's website: "none of our software is curently certified to run on WOndows Vista".
There is a cloying odor of M$ shill in here...
Linux Free Software or "Open Source"
When Linus chose to release his kernel under the GNU General Public License he made it Free Software and that's what it is, regardless of how hard industry corporatists try to deny that by inventing another (silly) term, Open Source, and mandating that the media (which they also own/control) use it.
Linux or not, it is GPL... or is it, really?
As long as Linux is under GPL, anything to enter it must conform to the GPL requirements - that is, the source code must be GPLed. Either this, or relicense Linux under BSD or similar license, and stop lying to the developers that their work is protected by GPL, and won't be proprietarized by anyone at whim.
Same about these kernel blobs that are actually firmware. GPL does not exclude code from its requirements because it does not run on the main CPU - as long as it is distributed linked to GPL code, it must be GPL, too. Greg KH - remember his anti-blobs patch? - is not the only one who got burned out by this GPL "workaround". More GPL-arounds will mean more disgrunted developers...
You say it is a blessing
You say it is a blessing that we get specs. I say that it shows contempt that they won't tell their customers how to use their hardware.
NDAs are usually divisive
NDAs are usually divisive and harmful. Sure they produce nice drivers for Linux, but basically it's a promise not to share with others to their detriment.
Why make hackers of other kernels jump through hoops by withholding a resource that can be shared at near zero cost?
NDAs force people with the same interests to behave anti-socially.
You cannot converse as equals with your peers and share information about what you are up to or help others.
As a GNU/Linux user I enjoy poking a little fun at the at times lagging BSDs and at their "complete fork or nothing" philosophy. But I'm glad they are there, and that spirited hackers are working on them and producing the best Free Software they can according to what they believe in.
NDAs give linux an unfair advantage because it's "hip" and "happening", but "having made it" should not be a reason to treat your peers as less.
Face it: Free Software isn't about Linux. Free Software is about freedom.
device drivers and ideological purity
NDAs are usually divisive and harmful. Sure they produce nice drivers for Linux, but basically it's a promise not to share with others to their detriment.
I don't understand how an NDA is "divisive."
The BSD people are going to take a look at the Linux device drivers, and then write their own clean room implementation. They would have had to do this anyway to avoid the GPL.
The HURD people are welcome to adapt the Linux device drivers to their use, like they have in the past.
Anyway, neither the BSD people or Linus Torvalds believe in Richard Stallman's ideas about "Freedom." Linus believes in sharing the code and giving back to the community, and that's about it. He doesn't believe in imposing end user restrictions or bringing down the evil capitalist pigdogs. BSD people believe in sharing the code and not even asking for contributions in return.
I believe in open source and in open standards. But I don't hate proprietary software, and I don't think that hardware companies are going to give up all their secrets any time soon-- or ever. I get very frustrated when people keep bringing up the same old RMS talking points again and again. As far as I'm concerned, he is just an annoying gnat whose buzzing distracts the productive people in the Open Source movement.
Show me some code, or show me some design docs. Don't show me another tedious manifesto from a True Believer, whose impossibly high standards of ideological purity would consign half of the code in Linus' tree to oblivion, and set back the movement by ten years.
Linux is where it is today
Linux is where it is today because of the 'idealogical purity' people like RMS had when initiating the Free software movement. Without it Linux would now be a mess of proprietary drivers, proprietary subsystems and proprietary forks.
RMS has no interest in bringing down 'evil capitalist pigdogs'. That's a strawman attack. Free software is one of the most free market derived ideas in the last few decades.
Almost certainly half of the code written for BSD is locked away in proprietary forks where the source never sees the light of day. So much for the gracious BSD hackers.
Oh! RMS! Can't you see how you're setting us back?!
Honestly.
Linux is where it is today
"Linux is where it is today because of the 'idealogical purity' people like RMS had when initiating the Free software movement."
How stupid it is to say such!
Linux is where it is today, since Linus started it, and a lot of fantastic people has taken lead responsibilities in its development.
I dont see the big role of RMS or his believers in the whole history of linux, if not some minor dragging back trying to enforce their impossible ideas on the really free and self-concious community.
Honestly.
NDA's are a very broad
NDA's are a very broad group, maby he just means that kernel hacekers will not tell the public untill after the device hits the market.
Use both Stick and Carrot
In order to convince people to give us documentation so that we can get our hardware working. All ways are good as long as we get our hands on the stuff that we need.
This is also a great media stunt, it creates goodwill that the community later on can cash in on to push it's own agenda on other areas.
agreements
Why is signing a non-disclosure agreement unethical?
The way I look at it, some agreements are, and some aren't. Read the fine print.
Why are industry executives "pinheads?" They may have a different set of concerns than kernel developers, but that doesn't mean they're stupid.
Another good idea would be for some of the hackers to found hardware companies that create fully Free (in the sense of the soft/firmware that runs them) hardware devices.
Another good idea would be for you and RMS to build a magical hot air balloon and fly to Mars, establishing a Free Commune where the concept of money was obsolete.
Meanwhile, we engineers (not politicians) will be working on code and hopefully benefiting the community.
>Meanwhile, we engineers
>Meanwhile, we engineers (not politicians) will be working on code
That is backwards thinking. By signing and NDA you have your engineering efforts transformed *into* a political tool. Quality is no longer determined by technical excellence, but by who can pull the most strings to get access to the documentation.
>and hopefully benefiting the community.
Benefiting *a* community, which is appointed by the master who grants you the NDA.
That is backwards thinking.
That is backwards thinking. By signing and NDA you have your engineering efforts transformed *into* a political tool.
I've worked on both hardware and software in the past, and I can tell you without a shadow of a doubt that the last thing on executives' and entrepeneurs' minds is politics. Money is what's on their minds.
The reality of the situation is this: We still live in a world where Windows has most of the marketshare. Hardware companies can and will ignore open source operating systems if supporting them doesn't add to the bottom line.
Open source developers and hardware companies can work together, though, because each has something to offer the other. The companies can offer specs, possibly under an NDA if appropriate. The developers can offer their development time and debugging experience. We all know that "many eyes make bugs shallow."
Benefiting *a* community, which is appointed by the master who grants you the NDA.
No matter how many times you repeat this, it just isn't true. Once the code is out there, anyone is free to reverse engineer it to their hearts' content.
This is the same misunderstanding that RMS has in regard to DRM.
We may not like DRM. But we have to live with it, until and unless it crumbles away in the marketplace. We don't have any power to "punish" companies for not toeing the ideological line. If we don't support feature X or device Y in Linux, the only people we "punish" are ourselves. Trying to control the market, and punish people you don't agree with, is Microsoft's game and I don't want to play it.
"No matter how many times
"No matter how many times you repeat this, it just isn't true. Once the code is out there, anyone is free to reverse engineer it to their hearts' content."
Ooh! What a great use of everyone's time!
DRM Punishment
There is a way to punish companies that use DRM in their products and this solution has been around long before computers...it's called a boycott. Yep, don't buy or use their products.
not so
You're lack of buying 1 product isn't going to hurt anyone's feelings - or their pocketbook. Your efforts aren't even a blip on the radar.
"...fly to Mars,
"...fly to Mars, establishing a Free Commune where the concept of money was obsolete."
Free software has little to do with money. I think you need to read up about Free software.
"Meanwhile, we engineers (not politicians) will be working on code and hopefully benefiting the community."
Meanwhile we *actual* engineers will be running up against unnecessary limitations and wasting time due to undocumented hardware, hidden features, obfuscated interfaces, black boxes...
wrong aim
This is not a matter of making the companies happy. This is an effort to integrate as many devices that are compatible in Windows into Linux distributions, to make Linux a more realistic approach for a larger percentage of Linux consumers.
Someone who has decided to give Linux a try, who has been on Windows for years, that can't get their printer working because a Linux driver hasn't been developed yet is going to be turned off by the thought of A) buying a new printer, or B) not having a printer.
The truth is, these drivers will probably be produced by the Linux Development community eventually anyway - this is just a means to expedite the process.
1st of april already?
The whole message sounds kind of trollish too me.
But what should one expect from a guy, who just
assembled the contents of the Linux /Documentation
directory into a book called "Linux Kernel in a Nutshell"?
It is ridiculous...
Hi, it seems you're trying
Hi, it seems you're trying to write a troll and/or flamebait. Would you like some assistance with that?
A language correction: "sounds kind of trollish too me." should be "sounds kind of trollish to me." Note the single 'o'.
"But what should one expect from a guy, who just..." bla bla, is commonly known as an ad hominem attack, and is very often used by inexperienced trolls. You should be able to do better than that.
Or, in other words, f*ck off, lamer. You're just boring. (Note how I cleverly allowed myself to sink to your own level. Neat, huh?)
Hey greg whats up?
Hey greg whats up?
OpenBSD has been offering this for 10+ years...
And now that someone on the Linux front has figured it out, it
is news? I saw this on /., and thought "yeah, /. idiots, what
else is new?". Now I see it here, and I have to wonder, why is
this news? Has it changed how the various companies act? If so,
by all means, please let tech@openbsd.org know.
OpenBSD: No NDA
Except they don't allow NDA's.
What does it have to do
What does it have to do anything with how various companies act?
Have you read the announcement of Greg?
If so, look at the date. Then tell me if you know BEFORE that
date that he will write such an email. =)
Good intention
This is a good idea and has to be tried before dropping the intention. Even if not every hardware vendor will be providing information sufficient for driver development one can always hope that some will.
The benefits from the Linux community should be that we would get not only more hardware to work with but also better drivers for hardware otherwise developed by trial&error methods. Another benefit would be that we also has the ability to see drivers that are portable between different hardware platforms, like USB Wlan dongles that then would work both under i386/Linux and ARM/Linux (and other versions too).
One thing that the hardware vendors probably are concerned about is that they have invested money into one driver for one OS and that the publication of the hardware specs will render that driver obsolete. Another issue can be that the HW vendor has signed an agreement with the driver vendor to not disclose any information that lets anybody else write a competing driver.
I am unhappy that people do
I am unhappy that people do not support Greg KH.
If you think about it for some time, this is one
of the best ideas in the most recent years for Linux
as a whole.
They offer you to maintain the drivers for your
hardware and they also wont let NDAs potentially
stop them. What is bad about this?
Linux Kernel will always remain GPL, thus open
source. If a distribution wants to remain "pure",
simply strip these devices you feel are
"tainted". The others can use them if THEY want.
Agreed
And for those who rant on about principles and such.. this could be just a stop-gap solution until there comes a point where these companies can no longer ignore Linux users.
I would personally also like to see something along the lines of a Civil Disobedience movement, wherein firms that do not provide Linux drivers are essentially blacklisted. Users avoid buying their goods and let them know about this by e-mailing them every time, and so on and so forth..
Considering that Linux is a community driven product, a community driven solution is well worth pursuing.
AN NTFS KERNEL DRIVER
"In return, you will receive a complete and working Linux driver that is added to the main Linux kernel source tree."
OK Greg Kroah-Hartman,
here http://data.linux-ntfs.org/ntfsdoc.html.bz2 are the NTFS specifications, as you requested:
Now produce an NTFS kernel driver for us all (or Microsoft, if you like) just as you promised.
THANKS PAL.
Are NTFS errors included in spec?
The problem with Microsoft's specs is not lack of them. Microsoft specifications do not include everything.
These little Microsoft's bugs make a big difference.
-1, Troll
Who are you kidding?
This documentation was written by Linux NTFS driver developers. There already is a Linux file system implementation adhering to this documentation.
Quoting this documentation file:
Linux is turning into Windows
At least with regards to freedom, it's getting closer.
"We are willing and able to sign NDAs with companies"
This is truly sad. Others are working very hard to make companies release freely available documentation so that everyone can write proper driver.
Have you already forgotten about http://kerneltrap.org/?q=OpenBSD/Software_Freedom ?
What happens when the developer "disappears"? Who will maintain the driver? With what documentation? Sign another NDA? With what company (they went out of business)?
I wish this project dead.