Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Operating Systems Software Hardware

Free/Open Source Software Hardware Requirements? 228

Bender asks: "Most on Slashdot seem to be concerned with getting Free/Open Source software to be compatible with hardware (firmware, register sets, etc). My question is from the other side of the table: I'm in the hardware business and I'm wondering if there are any central guidelines to better guarantee compatibility with Linux/*BSD. As an example, to guarantee that our hardware runs Microsoft Windows, we have to conform to the Windows Logo Program Requirements. These requirements dictate (among other things) firmware interfaces, debug ports, and DRM. Some of these requirements, if not implemented carefully, could trigger incompatibilities with non-Microsoft operating systems. Is there a Linux/*BSD equivalent to the Microsoft requirements to allow hardware designers to build OS agnostic systems?"
This discussion has been archived. No new comments can be posted.

Free/Open Source Software Hardware Requirements?

Comments Filter:
  • This is no problem.. (Score:5, Informative)

    by RawDigits ( 456594 ) on Monday March 21, 2005 @03:22PM (#12002602)
    If you release complete documentation of said hardware ...
    • by El Cubano ( 631386 ) on Monday March 21, 2005 @03:35PM (#12002794)

      If you release complete documentation of said hardware ...

      True. The trend seems to be that many F/OSS projects prefer to develop the drivers themselves (as it assures them a known level quality from reliable developers). That is not to say they don't trust the developers in many hardware companies. But let's face it, a EE sometimes makes a crappy programmer (and I have pleny of EE-wielding friends that work for hardware companies and end up getting pressed into service writing drivers for hardware when they would rather be designing the next batch of hardware).

      Failing that, as long as the F/OSS people can QA the stuff and suggest modifications it will eventually make it in. This can be seen in the all the back-and-forth between the Linux kernel developers and SGI over getting support for XFS into the kernel, which ultimately resulted the XFS patches getting accepted into Linus' tree.

      • by Anonymous Coward
        But (for your own sanity) openly announce that it's unsupported by your company but that you'd welcome others to fork it.

        Your company almost certainly doesn't want to provide support for the driver itself (for each of the OS's, etc) - but just putting out the reference driver with the conditions that it works (i.e. "this was only tested on the 2.0 kernel running Caldera Linux") can help people with the clues they need

    • It also helps... (Score:5, Insightful)

      by temojen ( 678985 ) on Monday March 21, 2005 @03:44PM (#12002902) Journal
      If you write your own drivers for Linux and one of the BSDs and release them under the GPL and BSDL with the complete documentation. From that point on the community can take care of maintaining and porting them if you don't (it's better if you do).

      It's not enough to release your own closed-source driver for one architecture (like nvidia and ati do) because this locks out people on other architectures and later kernel versions.
    • by shaka999 ( 335100 ) on Monday March 21, 2005 @04:26PM (#12003377)
      BS!

      Way to sidestep the question. It sounds as if the original author wants his system to just drop in and work. You suggesting that he document and let others fix a problem that shouldn't have occured in the first place.
      • You have to recognize, though, that it can be difficult for hardware producers to write drivers that run on every conceivable version of *n*x; there are so many different combinations of hardware and kernel options that it quickly gets messy. It's much better for hardware manufacturers to release specifications for their hardware--publish what the chip does when it receives signal x on pins 20-25, and what the significance of the output of pins 30-39 is. Then, let the driver writers for the various operatin

    • by LWATCDR ( 28044 ) on Monday March 21, 2005 @05:21PM (#12004072) Homepage Journal
      My guess this guy is working as a systems integrator. AKA he is building boxs.
      I think he wants to know how to select parts that will work with Linux and BSD not how to build parts that will work with them.

      If so it is a very good question. How would a hardware integrator know what Video, SATA card, Raid controllers, and motherboards to use?
  • by nadamsieee ( 708934 ) on Monday March 21, 2005 @03:22PM (#12002608)
    Well documented, unencumbered interfaces would be a nice start.
    • by nametaken ( 610866 ) on Monday March 21, 2005 @04:20PM (#12003310)
      Absolutely.

      And if you're looking for something to feed your marketing department, check out the applications for certification on major distro vendor's sites.

      Mandrake: http://www.linux-mandrake.com/en/hardware.php3
      (a bout halfway down)

      RedHat:
      http://bugzilla.redhat.com/hwcert/
      (at the bottom)

      Those processes will probably get you a shiny logo for your product's box.
  • Well... (Score:5, Insightful)

    by pdbogen ( 596723 ) <tricia-slashdot@ce r n u.us> on Monday March 21, 2005 @03:23PM (#12002619)
    My ininformed, off-the-cuff answer would be:

    Complete and freely available documentation.

    If your product is really wanted, people will adapt (look at how hard people try to do this with things like reverse-engineered open-source drivers). If you freely provided complete documentation on your hardware, it would make it several orders of magnitude easier for developers to write software for your hardware.
    • Re:Well... (Score:4, Interesting)

      by Stephan Schulz ( 948 ) <schulz@eprover.org> on Monday March 21, 2005 @03:27PM (#12002685) Homepage
      Complete and freely available documentation.
      Agreed. To make it even better, publish a basic driver in source form and under a non-restructive license (BSD-like probably works best). That gives people a starting point.

      Documentation available under NDA is useless for open source (publishing the source itself will likely break the NDA).

      • Re:Well... (Score:5, Insightful)

        by PugMajere ( 32183 ) on Monday March 21, 2005 @03:35PM (#12002790) Homepage Journal
        Documentation available under NDA is fine, so long as the drivers developed using it can be distributed.

        It is, however, not preferred.

        The preference is that the necessary documentation be freely available, and even, redistributable, so that it can accompany the source if it would be beneficial.
        • Re:Well... (Score:2, Insightful)

          by Anonymous Coward
          Documentation available under NDA is fine, so long as the drivers developed using it can be distributed.

          Not really.

          Not unless the SOURCE for the drivers can be distributed under a F/OSS license. (and if an NDA it went that far you may as well rename it a DA"Disclosure Agreement")

        • Re:Well... (Score:4, Interesting)

          by Nimrangul ( 599578 ) on Monday March 21, 2005 @04:45PM (#12003596) Journal
          Seems you and me disagree, guess I better fork you.

          Here's how I see it, NDA is bad, nothing done under an NDA is worth using. Because if you have work done under the NDA and you stop working on it, noone else has the documentation you signed an NDA for and therefore cannot maintain the code.

          NDA work being released is almost as bad as a binary.

          • ...I mean, if company "foo" has secrets they want to protect from company "bar", yet still want to provide OSS drivers. The solution would be to have an NDA for developers which forbids them to disclose it to, or work for "bar".

            Of course, well commented source code and NDAs are almost a contradiction in terms. Even if you strip all comments, you could still trace each function and variable to what it does with the hardware. Any obfuscation of those would be a breach of the GPL, I believe.

            Kjella
            • Nope, there's nothing in the GPL about making your code hard to read. You can name all your functions 1 through 221 for all the licence cares.

              But then, this isn't about the GPL, it's about code and the NDA. If you don't have the documentation for the hardware you cannot be sure what you do to the code is right.

              • Nope, there's nothing in the GPL about making your code hard to read.

                Depends on how you look at it. Sure, if you work with the obfuscated code in the normal course of development then that's fine. But developing it "normally" and then obfuscating it for release is technically a violation. The source code is defined as "the preferred form of the work for making modifications to it." If you're releasing anything as "source code" other than what you work with, then that's not the "preferred" form.

          • Yes, NDA can be bad. It certainly isn't preferred.

            It can be made to be workable, if there is a need for it on the hardware vendor's side of things. (Some people do have contractual obligations that complicate this!)
  • by Tribbin ( 565963 ) on Monday March 21, 2005 @03:24PM (#12002629) Homepage
    ... send a free piece of the hardware to every major kernel-programmer.
  • Legacy, Ick (Score:2, Insightful)

    by ackthpt ( 218170 ) *
    Microsoft requirements (to their legacy code and operating system) are what really holds the PC back. Has there been any decent effort to break this mold?
    • The vaious Microsoft Logo test for PCs, PDAs, smartphones etc are basically put there for a few reasons, some are there for Microsoft's purposes and some for the customers' purposes:

      Software compatability. If a customer buys and application it will run on the device. This is partially a customer thing, but is also an MS thing since it encourages lock-in to MS.

      Make the hardware all the same: Makes life easier for MS to write/maintain their code as well as allowing MS a leash on how they're steering the indus

  • by Anonymous Coward
    Why not ask someone who doesnt know? [popealien.com]

    After all, this seems like there will be a 'right' answer to this question, and where's the fun in that?

  • by Anonymous Coward on Monday March 21, 2005 @03:25PM (#12002655)
    Conform to freely available published standards. If you have good reason to produce proprietary hardware, publish the programming interface in sufficient detail for people to make a clean-room implementation of drivers. And don't worry -- free drivers will follow.
  • by Chirs ( 87576 ) on Monday March 21, 2005 @03:25PM (#12002656)

    The real key is to make documentation available to OS developers, preferably without an NDA. Pretty much everything else can be worked around--a lot of the main OS developers are pretty bright.

    One other thing to consider is that there is a lot of 64-bit hardware running on free OSs. It's nice when PCI devices can DMA to the full address space.
  • You can use the distributions like RedHat, Mandrake, Debian to test the devices and put the specified support in kernel. Or better, why not send the hardware to one group of kernel developers.
    • Good point. Getting the drivers into the kernel would make using your hardware a non-issue for most people. The only drivers I ever have to worry about on my system are the nvidia drivers. Everything else is just a check box in the kernel config. This is definitely one of linux's strong points.
  • by Anonymous Coward on Monday March 21, 2005 @03:29PM (#12002702)
    The obvious solution is the Open Hardware Certification at http://www.open-hardware.org/ [open-hardware.org]
  • by doshell ( 757915 ) on Monday March 21, 2005 @03:29PM (#12002708)
    I always felt the term "Windows compatible hardware" was a big piece of bullshit. Shouldn't it be the software to conform to the hardware, and not the other way round? Hardware seems to be the lowest common denominator here.

    Of course (as some posts already mentioned), this can only be achieved if the hardware in question is properly documented so that developers know how to write drivers for it, without having to resort to dirty (and sometimes illegal) tricks like reverse engineering.
    • by Anonymous Coward
      Shouldn't it be the software to conform to the hardware, and not the other way round?

      Uhh, no. Given an operating system with 98% market share and an in-design piece of hardware, doesn't a hardware standard make more sense than building whatever comes to mind and hoping that Microsoft will release a service pack to make your product usable? As a hardware designer, which would you prefer?

    • by mzwaterski ( 802371 ) on Monday March 21, 2005 @03:46PM (#12002919)
      It is pretty hard for software to conform to hardware if the hardware is designed/released after the software has been released to the public.
      • It is pretty hard for software to conform to hardware if the hardware is designed/released after the software has been released to the public.

        What the hell does this mean and why is it considered insightful?

        Software is the most flexible artifact in history. It can be patched. Hardware, basically, can't.

        • It means: If software has already been created and includes some set of specifications, then those creating hardware that the software is intended to run on should follow those specifications. Granted, the original specifications that the software is run on were probably created by some hardware vendor. My point was simply that, if something like an OS exists and you are creating hardware that the OS is intended to run on, the hardware should be compatible with the software. Thus, the label "Windows Comp
  • Logo? (Score:5, Informative)

    by mopslik ( 688435 ) on Monday March 21, 2005 @03:30PM (#12002721)

    You said:

    ...to guarantee that our hardware runs Microsoft Windows, we have to conform to the Windows Logo Program Requirements.

    From the "MS Logo" link:

    Microsoft provides Microsoft Windows System and Device Requirements as the authoritative information source for the "Designed for Windows" logo program for hardware. These requirements must be met by manufacturers who want to license the "Designed for Windows" logo.

    So is it really a question of ensuring that your hardware "works", or is it a marketing issue in which you need to show the colourful Windows flag on your product's packagaing?

    I'll admit that I didn't devle too deep into that MS document, though, so it may encompass far more than the logo, despite what the title suggests.

    • Re:Logo? (Score:4, Interesting)

      by Junta ( 36770 ) on Monday March 21, 2005 @03:42PM (#12002882)
      I can say that the Logo certification requires a significant amount of technical work, not just some buy off. So yes, the logo does actually mean something on a solid, technical level with respect to accomodating Windows and working with the Windows environment.

      I do not do the work, but I have had products I'm working on impacted by some pretty low-level technical changes on the product required to meet WHQL from other groups.
      • I can say that the Logo certification requires a significant amount of technical work, not just some buy off.

        I imagine it does, but I was simply asking whether it had to meet MS Logo cert in order to work, or if it had to meet MS Logo cert in order to display the "for use with Windows" logo as the MS blurb suggests. I had interpreted the poster's statement of "...to guarantee that our hardware runs Microsoft Windows..." to mean that the software would (somehow) not operate unless it met certain specs.

    • Re:Logo? (Score:5, Informative)

      by athakur999 ( 44340 ) on Monday March 21, 2005 @03:49PM (#12002941) Journal
      The "Windows Logo Program System and Device Requirements" document linked on MS's page is 192 pages full of various hardware requirements. There's definately to it than just marketting. Most of the requirements look like pretty standard stuff to ensure that end users have as painless of an experience as possible. For example, motherboards must support booting from a CD-ROM drive and be able to support USB keyboards during bootup. Any built in USB ports must be enabled by default. Onboard graphics must be cable of 640x480 resolution. Hardware must be able to handle various shutdown modes (like hiberation) properly, etc.

    • Well, some glitches with various hardware is definately due to buggy/crappy drivers rather than the windows OS.

      By demanding that hardware manufacturers get a certified driver, MS can say for anyone else that "It's not certified by us, we never made it, so it's not our fault"

      Certainly given the craploads of issues I've had with some manufacturers' products (*cough* ATI *cough*), I'd happily pin a large portion of the blame on their buggy drivers rather than an issue with the OS itself.
  • GNU (Score:2, Interesting)

    by MeeTra ( 625110 )
    maybe GNU could launch a documentation database with docs from the manufacturers.
  • by Univac_1004 ( 643570 ) on Monday March 21, 2005 @03:33PM (#12002766) Journal
    ...to drive the hardware: MS does.

    So the *nix crowd has always been followers.

    If the harware guys want to play OS here's the game plan:

    1. exactly follow existing spes (where posable)

    2. clearly and loudly publish interface details

    3. release *Linux drivers with the hardware

    [#3 is cheaper than you think!]

    • Step 3.5: get the drivers included in the stock kernel.

      Getting drivers in the Linux kernel is much better than just "releasing" drivers with your hardware; it ensures that they're likely to remain available, and be upgraded to be compatible when kernel interfaces change. And your users won't have to install seperate drivers most of the time -- things will just work.
      • ...at least on distribution media.

        Anyway, this is much harder for a small manufacturer to acomplish.

        Placing drivers in the Internet Archive and etching the URL on the hardware is the minimium they should do.

  • by ImaLamer ( 260199 ) <john@lamar.gmail@com> on Monday March 21, 2005 @03:33PM (#12002770) Homepage Journal
    ...then people will correct you if it's wrong. If you release open source drivers to the community and do it in a fashion which inspires feedback (mailing lists, forums, Sourceforge) and people find fault (bugs, standards compliance, bad code style) it can and likely will be fixed.

    If you are prepared to put paid developers at the whim of the community then you are already on the right track to wide acceptance. You have to realize it isn't your baby anymore and if you've just released a horrible monster it will get tamed and put into other projects that have nothing to do with you.

    Going open source is easy - anyone will tell you what is good and bad to do. Closed source, proprietary software tends to lean towards groupthink and suddenly a bad project is worse. There is no reason to keep discussions and ideas behind closed doors in the open source world so you can benefit from wider feedback.

    In a year you'll be discussing you're release on Slashdot, and we'll be saying *BSD is dying. But that will be some of the best marketing and market research you can do, and it will all pay off.

    I'm in a weird mood..
  • by JustNiz ( 692889 ) on Monday March 21, 2005 @03:37PM (#12002815)
    THANK YOU!!! I wish more hardware manufacturers thought like you!
  • by mlush ( 620447 ) on Monday March 21, 2005 @03:37PM (#12002817)
    Some of these requirements, if not implemented carefully, could trigger incompatibilities with non-Microsoft operating systems.

    <Microsoft>Thats not a bug its a feature</Microsoft>

  • One rule (Score:5, Insightful)

    by bigberk ( 547360 ) <bigberk@users.pc9.org> on Monday March 21, 2005 @03:38PM (#12002824)
    Publicly document the hardware interface. That's all that's need, really. As a programmer and electrical engineer all I need is a decent spec sheet for a piece of hardware to construct an interface to a linux system.

    Remember that documenting your interface does not mean revealing the secrets of what's going on under the hood! What do the signal lines do? What commands are accepted? What are the timing characteristics? What format of text/image/video flows along the lines? etc
  • Hardware Status (Score:2, Informative)

    by imscarr ( 246204 )
    Make all registers readable! Write-only registers are a pain in the #$@#$%^!


    • Make all registers readable! Write-only registers are a pain in the #$@#$%^!

      I know a little about assembly language at the processor level, but next to nothing about e.g. PCI-bus negotiation.

      Is there such a thing as e.g. "write-only" memory when you're dealing with device drivers? Maybe when you're doing DMA stuff to upload data to RAM?

      Or was your post intended to be tongue-in-cheek?

      • The original poster is quite serious. It *is* a pain in the butt to have write-only registers. This is very common.

        What this means is that you write some control values to the registers, which causes the hardware to do something.

        If you later wish to use those values, you can't just read them back from the registers. You have to have "shadow" registers which cache the last value written to the real hardware registers.

        -- Andyvan

        • If you later wish to use those values, you can't just read them back from the registers. You have to have "shadow" registers which cache the last value written to the real hardware registers.

          That does sound like an incredible pain in the ass.

          Is this just bad design, or are there economic reasons for doing this? Perhaps e.g. "R/W register memory" is vastly more expensive than "Write-Only register memory"?

          • This happens all the time. And yes, it is mostly poor design caused by an EE doing a design without review from a CS dude.

            It is microscopically cheaper to not provide a read path in hardware (both FPGA and ASIC) so there can be justification for that at times, but I have yet to see one that outweighs the debugging nightmares caused by it.

  • by mumblestheclown ( 569987 ) on Monday March 21, 2005 @03:40PM (#12002853)
    You can't "fight a war against terrorism" because terrorism is a means, not a thing or group of individuals.

    Likewise, you can not design "for F/OSS" because F/OSS is a means. Linux and the like may be most associated with F/OSS, so you might legitimately ask "how to I do hardware so that it is compatible with most linux distributions", but NOT (generally) with F/OSS. Consider the (unlikely) case where MS open source'd XP source code today - there you have it .. F/OSS software, and you see that your question loses its correctness.

    And now for the part that will receive real flames from the unthoughtful: F/OSS came of age with linux. But, likewise, the fundamentally good idea is handicapped by its association with it. F/OSS is too important an idea and reality to be associated with a unix clone with generally poor usability (despite its stability) and the blindered hobbyists who dance around it.

    • You know Microsoft is going to use this one...

      "Today Open Source advocate mumblestheclown admitted Open Source is Like Terrorism. We must destroy this evil before it spreads! Think of the children! Do we want our kids growing up in a world where source code is open can be examined by anyone?"
  • by PugMajere ( 32183 ) on Monday March 21, 2005 @03:44PM (#12002897) Homepage Journal
    First of all, provide documentation and an engineering contact to answer questions about the documentation. Keep in mind that you will get asked questions from sources other than those related to the core Linux development team - the *BSD teams may have questions for you, some hobbiest may ask questions - answer them all. Incorporate the answers to their questions into your documentation, etc.

    If you are doing anything that is truly groundbreaking, for your company, but has been done in other places, at other times, the experienced OS developers in the free software community can sometimes provide invaluable feedback on what is wrong with your design.

    For example, as I understand it, the AMD64 architecture did not have an IOMMU until rather late. The Linux developers working with AMD on providing support for this architecture pointed out that it was useful and a huge performance win to have one, so AMD reworked that into the architecture. That kind of feedback is invaluable, and something a company like MicroSoft simply can't give, because they lack the necessary cross-platform experience to care. I believe the major Linux distributors are open to consulting arrangements of this type - approach them and ask them for assistance!

    If the hardware you have needs firmware to be loaded into it, consider what license the firmware is distributed under, and how that interacts with the licenses of the free software you are trying to work with. At the very least, make sure other people can redistribute the firmware, unmodified, so the users are not dependent on a download from your site.

    So, document the hardware interfaces. Answer questions on the hardware, and involve those more knowledgeable than your company early and often to give a better design.
    • >That kind of feedback is invaluable, and something a company like MicroSoft simply can't give, because they lack the necessary cross-platform experience to care.

      Microsoft lack cross-platform experience?
      Strange, last I looked their OS have run on Alpha, MIPS (not sure about this one) for a long time and they are distributing a development kit for their next-gen X-Box console on .. PowerPC.

      I don't like Microsoft either but the truth is that they have cross-platform experience.

      Note that Linux works usua
      • MIPS support was dropped a while back (with 2k, IIRC), but supporting 1 other platform is not quite the same as talking to people that have software running on 17 (Linux, if I remember the count correctly) or 30+ (NetBSD), and have real competition to be concerned with, i.e, Solaris vs Linux on Sun hardware.

        The depth of knowledge of what hardware is good and what hardware is annoying and hard to deal with is massively different.
  • Intel is trying.... (Score:5, Informative)

    by ken-reno ( 833154 ) on Monday March 21, 2005 @03:45PM (#12002911)
    Intel is trying to release Linux drivers at the same they release hardware. They are also trying to create a hardware copatability matrix. If you are a system builder or VAR this would be very helpfull. Some background:
    http/news.com.com/Intel+more+active+in+desktop+Lin ux/2100-7344_3-5465225.html?tag=nefd.top/ [slashdot.org] http://seattletimes.nwsource.com/html/businesstech nology/2002099285_intelasialinux24.html/ [nwsource.com] http://seattletimes.nwsource.com/html/businesstech nology/2002099285_intelasialinux24.html/ [nwsource.com] http://techrepublic.com.com/5100-22_11-5465929.htm l?part=rss&tag=feed&subj=tr/ [com.com]
  • a comment (Score:3, Insightful)

    by latroM ( 652152 ) on Monday March 21, 2005 @03:49PM (#12002942) Homepage Journal
    I have to say that don't even think about some proprietary binary no matter how wrapped and supported it was by distributions.
    • I don't like the idea of closed-source binaries any more than the next guy, but I also like to play games. For me, that means I have to deal with using nvidia instead of nv.

      I'd love to use all open-source; but it has to be useable for my needs, first. That's why I've always appreciated Linus's perspective on the BitKeeper flamefest.
  • by Anonymous Coward
    From what I (as a lowly end-consumer and occasional fiddler) can tell, two mistakes to avoid are:
    • Slaving off to software what should be done in hardware, unless you're planning on going cross-platform with the software support. Think WinModems here.
    • Closed. Binary. Firmware. There's a whole bunch of wireless hardware that it'll be years before anyone can use under Linux, if they even bother, for precisely this reason, and it bugs the hell out of me.

    So, yeah - if you're going open, go all the way.

  • by gelfling ( 6534 ) on Monday March 21, 2005 @03:57PM (#12003021) Homepage Journal
    This is a wonderful suggestion which is why every nerd and geek who furiously insists on porting Linux to a parking meter he stole at the last Trekkie convention will object to it.
  • by mykepredko ( 40154 ) on Monday March 21, 2005 @04:07PM (#12003142) Homepage
    Hey Bender,

    I've gone around this block a few times and I have a few comments that you might find useful.

    First off, you didn't say what is your market space. Are you shooting for home, office, workstation or server? I think you'll probably find it easiest to be compatible in the office desktop or server spaces where the configurations are quite generic and not apt to be modified by the end user. Secondly, you didn't say what you did. Are you a full system designer, motherboard designer or configurator? Are you looking to design components that are *nix compatible or are you looking to put together off the shelf components into a system that is *nix compatible? How you answer these questions will affect how you approach the problem.

    If I were in your position, I would suggest that you look at the "PC/99" Specification put out by Microsoft/Intel and see what you can do to be compatible with this specification instead of the more Windows (and DRM) specific later specifications and try to get/design hardware that meets this specification; it should be very *nix compatible although it will not encompass the latest audio and video specifications (which is why I suggested office desktop and (preferably 1U) server products.

    The problem with this approach will be specifying chipsets that can handle the latest processors and memory. You should be able to mix and match to end up with a motherboard that will run the latest processors with the most appropriate memory and access EIDE and SCSI storage and should be very *nix friendly.

    Good luck and let us know how you make out,

    myke
  • A few pointers (Score:5, Informative)

    by slavemowgli ( 585321 ) * on Monday March 21, 2005 @04:14PM (#12003237) Homepage

    First of all, I must commend you and your company for caring about these things - it's definitely nice to see that there are companies who actually care about their customers. ^_~ That being said, here are a few things to get you started:

    1. Release documentation for your hardware. Developers' documentation that is - the stuff that document the interfaces of the actual hardware, the registers, and all that. Basically, everything that's needed to make a driver.
    2. If you already have code lying around, consider releasing that under both the GPL (so it can be incorporated into Linux etc.) and the BSD license (for the *BSD systems). It doesn't matter if it's broken, buggy, unfinished or anything; if you release it under the proper free licenses, the community will take care of that. And even a half-finished buggy driver is a much better starting point than no driver at all.
    3. Realize that the community is important; in particular, talk to people. It helps to set up a website which hosts the relevant information (documentation, code releases and so on); if you don't want to or cannot use your company's webserver, Sourceforge.net is a great place to get all the tools you need (like CVS, mailing lists, webspace, bugtracking and so on).
    4. Do get on the relevant mailing lists, like lkml (for the Linux kernel), OpenBSD's tech list and so on. Also, if there are more specialized lists, get on those, too.
    5. Provide sample hardware for testing. It doesn't have to be much, but do consider that most Linux/*BSD developers are not paid for their work; they can't spend money on all the hardware, so any donations to the developers working on the relevant subsystem/drivers will be GREATLY appreciated.
    6. And finally, work with the community, not against it. You may come across people occasionally who're quite blunt, but don't let that deter you. The vast majority of developers are nice, especially when they feel that you genuinely want to help them. Ideally, it's a win-win situation for both the developers and you/your company.

    Hope this helps!

  • by ewhac ( 5844 ) on Monday March 21, 2005 @04:18PM (#12003292) Homepage Journal
    You may have misconceptualized how F/OSS deals with hardware compatibility issues.

    In Windoze land, Microsoft publishes a list of requirements, and offers testing services to ensure compliance. You code to these requirements and get the thing tested and validated. Once done, Microsoft awards you the right to put "Windows-certified" on your box, and you can consider your product "done" (modulo bug fixes/patches).

    In F/OSS circles, no such certification program exists. There is no list of requirements; there is no explicit testing service. Instead, what there is is the complete kernel source code (so that you can determine precise requirements yourself), hundreds of existing drivers (to get you started writing your own), and hundreds of thousands of users who will beat up on your hardware/driver and liberally shower you with bug reports (of highly variable quality).

    This may seem like a recipe for complete disaster but, depending on what you want to do, it's really not. Linux's device driver model is almost pathetically simple compared to the byzantine mess that Windows uses. So getting a driver with basic functionality is a fairly simple affair. Depending on your device, you'll probably be able to leverage off of existing infrastructure to handle bookkeeping details (for example, I2C bus devices already have an API layer that handles reference counts and locking; coding to it is dead-simple).

    Conversely, there are some areas of Linux driver land that are still evolving. One of the big areas is power management. There are three major competing power management mechanisms for Linux (APM, ACPI, and the lesser-known DPM). None of them really address all power management needs and, while some sleep/suspend modes sorta kinda work, Linux's solution is far from complete. You'll be working with a moving target.

    As other posters have already mentioned, publicly-available, complete hardware documentation (register maps, theory of operation, strapping options, clock diagrams, etc.) is absolutely essential . In case you get bored with your product or, heaven forfend, your company dies, the F/OSS community will be able to take up the slack. They'll also be able to add features or enhance kernel compatibility when and where it's needed. (Some lawyers or senior execs will try to veto a documentation release, citing imaginary fears such as "loss" of proprietary information and trade secrets. You are encouraged to nut-punch these knuckleheads until their opinion is changed.)

    F/OSS is not as strictly regimented as the Windows camp, so strictly regimented project planning isn't as easy. There's a lot of chaos out there. This is, on balance, widely regarded as a good thing. You may be surprised at how well your engineers cope in such an environment. (Conversely, it will also help you identify more quickly exactly which features your users actually value.)

    Schwab

    P.S: If you have the ability, tell Microsoft to take their copy protection ("DRM") requirements and cram them.

    • In F/OSS circles, no such certification program exists. There is no list of requirements; there is no explicit testing service.

      Actualy there's quite a few. Red Hat, SuSE and most of the major business distros have hardware certification programs.

      For example... [redhat.com]
  • Our Requirements (Score:4, Informative)

    by Brandybuck ( 704397 ) on Monday March 21, 2005 @04:27PM (#12003390) Homepage Journal
    We don't need you to write drivers for us. It would be nice, and we will thank you profusely if you do. But we're not requiring it. All we care about is access to the complete hardware specifications. It's that simple.

    Even if you have "proprietary" behavior you need to hide behind some proprietary software, just provide us an object file for that *tiny* portion of code, and we can manage the rest. We might grumble a little bit, but we'll still accept it.

    What we don't want is for you to act as if you own the hardware. Don't lock us in to your driver. That's just rude.
  • by mcrbids ( 148650 ) on Monday March 21, 2005 @04:34PM (#12003464) Journal
    This guy is "in the hardware business".

    Meaning, he buys hardware from a distributor, and with a $4 screwdriver, assembles said hardware and pitches it a customer.

    I've been there, and done that. Trying to make one that's WINDOWS compatable is a royal pain in the arse, let alone OSS.

    When I ran a store, we had a few lines of hardware that seemed to be more or less compatable with each other. We had to continually buy hardware of all kinds and test them to see how they did together.

    It was always shocking to me how much of the hardware just didn't pass our testing. Our testing was pretty extensive, and consequently, the hardware lines we stocked were fairly limited.

    Also, it was commonplace to have hardware revisions that would change without any notice whatsoever, ruining compatability.

    At the time (ending Spring of 2000) one of the *WORST* offenders was Asus. On the other hand, a few relatively unknown brands (DFI and A-trend) scored rather well in our testing, and were cheaper to boot!

    My best advice would be to simply test some hardware before you sell it, and see how compatable it is with your favorite distro.

    Good luck.
  • I suspect your compatibility problem arises due to the DRM requirement? If it does, you might do something similar to what we did in software.

    Back in the 80's we published a security package that included DES as one of its encryption options. The NSA didn't want us to export the software because DES was considered a munition. Nevermind that the programmer who wrote the software lived on the Isle of Wight off the coast of England and was using a book that documented how to implement DES and the book he was u

  • People RTFQ!! (Score:2, Insightful)

    by Dacmot ( 266348 )
    From the way I understand the question it seems nobody understood what the poster meant.

    It seems to me like the guys is looking at some kind of guide to writing drivers for the different *nix flavours. Telling him to write open drivers with open documentation and specs isn't helping him.

    As far as Linux is concerned, a good place to start is here [kernelnewbies.org]. *BSDs probably have a similar way of working: almost all the communication between the kernel/driver developers is done by email on mailing lists. IRC channels
  • Is there a Linux/*BSD equivalent to the Microsoft requirements to allow hardware designers to build OS agnostic systems?

    Yes! Here they are:

    1. Design whatever the hell crazy cool hardware you want.
    2. Document the interface thoroughly.
    3. Openly publish the documentation without restriction or encumberance.
    4. (optional) give a couple test systems to folks who volunteer to write drivers and have demonstrated a history of doing so successfully.

    That's it! Open source operating systems can and will adapt to an

A committee is a group that keeps the minutes and loses hours. -- Milton Berle

Working...