Managing Graphics Hardware Vendor Relationships
in the
Linux Developer Community


By Frank LaMonica
Precision Insight Inc.
September , 1998


 

Abstract

The growth of Linux has created a huge need for device drivers and an equally large need by driver developers for the cooperation of graphics hardware vendors.  When individual developers and Linux users interact with these hardware vendors, they become representatives of the entire Linux community. It is important that these interactions occur in a coordinated, professional, businesslike manner if Linux is to continue its phenomenal penetration into mainstream computing.
 

Introduction

Driver developers require a high level of cooperation from hardware vendors.   It is almost impossible to develop device drivers without access to detailed technical programming specifications, sample hardware, and at least some access to each hardware vendor's technical staff.   Since driver development can be a time consuming process, it is also important to get this cooperation for vendor products which have not yet been announced to the public so that drivers can be ready by the time a hardware product reaches the market.  In large development organizations, business contacts with these hardware vendors are managed by business professionals, but in the distributed software development environment of Linux these tasks fall on the shoulders of each developer.   Linux end users who want their particular piece of hardware supported also add to this array of people seeking development resources from hardware vendors.  You must understand that you are competing for vital resources within hardware vendor companies when you seek their cooperation, i.e. their time and attention.

This paper is intended to help developers and Linux users with little experience in business management to 1) succeed in getting the required support from hardware vendors, and 2) to properly represent the open source community to these organizations.   The focus of this paper is on relationship with graphics hardware vendors, but most of the material can be universally applied to relationships with vendors of any type of hardware.  Every contact with these companies must be viewed as  part of a business relationship between the vendor and the Linux community. Relationships must first be developed, then maintained, and then properly closed for each chapter of business.  End users can play an important role but to be most effective, they must coordinate their work with the development community.  As a developer, it is important to realize that each relationship you develop will become part of your own legacy as a contributor and participant in the industry.
 
 

Developing a good Business Relationship

Before you contact any company

You must prepare yourself properly before you attempt to contact any hardware vendor.  These vendors are invariably very busy and if you are not adequately prepared before you reach the correct contact person, it could be very difficult to get a second chance.  You should have your business purpose clearly defined.  Why do you need to contact this company?  Are others in the industry already doing what you're planning to do?  Exactly what do you want from this company? What driver support currently exits for this company's products?  If you are an end user you also need to consider these questions before contacting a vendor.  Relationships with hardware vendors are difficult to manage; a well-intentioned but misguided contact with a vendor could undo months of work done by someone else who may be trying to follow a more coordinated approach.
 

Define your business purpose

Before contacting a vendor, find out if this is the best vendor for your purposes.  If it is the only vendor, than that's not an issue, If not, then you may want to check around to find out which vendors have a better history of working with open source developers.   Make sure this vendor can actually get you the materials you need.  Some vendors create graphics chipsets but don't make graphics boards.  Graphics board manufacturers often license technology from other vendors and can't release specifications without permission from the licensor.   This could include specifications on the graphics chipset, specialty DACs, or other proprietary features of each graphics board.  Decide beforehand if you will need to keep the development material on "permanent loan", and try to have some reasonable estimate on when the vendor may see results from your development work.  Hardware vendors get a lot of requests for support from developers and they don't want their materials or resources dropped into a black hole.

Do you know if other developers have already contacted this vendor?  If so, do you still feel there is a need for you to be involved with this project?   Just because someone else is doing work on a project similar to the one you're planning should not automatically halt your plans.  You may have some very valid reason for wanting to continue with your own development, you just need to make sure that this is a conscious decision on your part.  If you are a Linux end user, try to find out what's happening in the developer community before you take any direct action with a hardware vendor.   There are ways you can support the development community but they should be coordinated by the people directly responsible for managing these relationships.
 

Be familiar with the hardware vendor's products

You need to educate yourself about a hardware vendor's products before you contact them.  Make sure you know the marketing names of the vendor's products and be familiar with any variations they are shipping. That job is a lot easier now that every vendor maintains detailed information on their WEB site.   Find out about all of their currently shipping products and make sure you know about any existing drivers for any of their current or recent products.  If there are existing drivers you should be prepared to explain why your work is necessary. You will have a much better chance of getting vendor support if you know their technology and appear knowledgeable about related work being done by others. It could be embarrassing and counterproductive if you are not aware of what else is going on in your area of expertise.

End users can be extremely helpful to the development community in supporting new hardware.  Contact XFree86 to let them know of your need for support of a particular piece of hardware.  If you can afford to do without your new graphics hardware for a short time you can offer to lend it to a driver developer so they can create the driver you need.  Anything you can do to help developers of free software will go a long way to ensuring the continuation of the open source movement.
 

Prepare a written introductory  presentation

You should create a short written introductory  presentation that you can send to the company immediately after your first contact.  This is essentially a sales tool intended to support the verbal presentation you give during the first contact.  It must be able to convince the vendor that working with you is worth their time.  Keep in mind that these people will usually know little about you or your organization and it is up to you to give them good information quickly enough that you don't lose their attention.  Begin with a very short description of your company, your role in your company, and any prior experience you or your company have in the industry or with the vendor.  The rest of the presentation should convince a hardware vendor that it is in their best interest to cooperate with you.   It should include details of your specific business, but be careful not to get so bogged down in your own details that you neglect to focus on the concerns of the hardware vendor.  You'll have plenty of time later to pull the focus toward your concerns.
 

 What will cause a hardware vendor to cooperate?

Commercial companies are driven by their need to earn a profit from everything they do.  That is priority #1.  If you can't convince a company that cooperation with you will ultimately generate a profit to their organization then don't even try to get their cooperation.  It won't happen!  The corporate world is built layer upon layer by people who must constantly justify their actions in terms of profitability to their own company for every action they take. At the very least, you must show how the costs a company incurs by working with you will be recovered by their increased profit.

Profit doesn't have to happen immediately, it just has to have some plausible way of eventually happening.  It could be in terms of increased revenue, decreased costs, better market position, better competitive position - even just parity with the competition.  Profit is a term that encompasses a broad scope of tangible and intangible elements.  Basically the question is this: "How will this company be better off after working with you?"  To answer that question you need to fully understand a vendor's costs and to realistically present the profit potential they could realize by working with you. That job is your "homework", and it must be done before you take on the task of representing the open source community.
 

How can a Linux end user help to get a hardware vendor to cooperate?

This is one area where end users have much more influence than they could imagine.  The key point to remember is that although end user sales drive the market, the best point for leverage is in the distribution chain.   Graphics chipset vendors sell to their Original Equipment Manufacturer (OEM) customers.  These are usually graphics board or computer manufacturers. Graphics board manufacturers sell directly to computer manufacturers (their OEM customers) and to end users either directly or through resellers.  If a chipset vendor is being uncooperative, direct requests for cooperation to their large OEM customers.  If a graphics board manufacturer is being uncooperative, direct your attention to their large resellers or use the leverage of any large group of end users, such as a user group that supports your views.  There is a balance between how high you go up the distribution chain and how effective each request will be in achieving your goals.  Large computer stores probably wouldn't put too much pressure on a chipset manufacturer because there are several levels of business between the chipset vendor and the purchasing agent for the computer store.  Companies respond to requests from their own largest customers.  Your biggest contribution toward getting a hardware vendor to cooperate with the Linux community occurs when you can get the target vendor's largest customers to send messages to the vendor.

 In order to achieve the result you want, you must also remember to present any comments, requests, or suggestions in a positive manner.  There is a big difference between saying "Chipset vendor A doesn't support Linux so we're making sure the members of our user group boycott your products", versus "Chipset vendor A doesn't currently support Linux, but if you can encourage them to support Linux we will recommend that our user group members buy  your products."   You may think that the first statement is more powerful, but it is confrontational and evokes an emotional response in the recipient.  Once the arguments get to an emotional level you can't win even with a compelling business case.

Initial contact

The initial contact with a company can be the most frustrating experience of the entire process, and this becomes more true as you deal with increasingly larger companies.  Many companies will not direct calls to a "department", they often insist on the name of an individual.  If you don't know a name, try locating someone by title.  The "Product Marketing Manager" is a good first try.    He or she will usually understand your needs and will give you the name of someone within the company to contact who may be closer to the correct person.  If you get voice mail on your initial contact, leave a short message that includes your name and phone number.  Don't try to explain your entire business to someone's answering machine.   Chances are very good  that you won't get a return call on your first call no matter what you say, but here is a good opening line: " My name is Joe Developer (with <name of company>), many of our end users have been requesting driver support for your graphics device and I  would like to talk to you about how we can get the necessary development materials from your company so we may develop these drivers.  I would appreciate it if you would call me at 555-1212.   Thank you."     If you don't get a call in a couple of days, try again.  Be persistent; you may even have to be tenacious,  but always be polite and businesslike.

End users should not involve themselves directly with a hardware vendor at this stage of the relationship.  The most effective course of action is to encourage the developer community to take action if they are not already doing so, and to put your efforts into the contacting the vendor's larger customers (as detailed in the paragraph above "How can a Linux end user help to get a hardware vendor to cooperate?"
 

Getting to the right person

Once you have made an initial contact, begin to focus in on the best person in their company to handle your requirements. There is a big difference in the support needed by application developers compared to  that needed by device driver developers, yet all developers are often channeled to the same contact person.  Technical, marketing and legal issues are most often handled by separate  groups within a company, but you will probably need to interact with all three departments.  You need to make sure that your contact can handle all of your needs.  Finally, companies are made up of people and sometimes the person with the right credentials or position will not be the most effective person in dealing with your concerns.  Try to arrange a meeting with several possible contact people and see which qualified person seems like the kind of person with whom you can work effectively.  Find out if they travel a lot, see how quickly they return calls or email messages, and most importantly, make sure they are the kind of person who follows through on their commitments.   You will find too often that people will agree to what you want when you're on the phone, but their good intentions are quickly burned away by the next fire to arrive on their desk.

Establish a procedure for regular contact

It is important early on to establish the preferred method of contacting your vendor.  Some people prefer email, some prefer the telephone or pagers.  Whenever you contact your vendor make a written record of key actions that were committed to by both parties.  Also make a point to agree on the next time to contact each other if there is some ongoing business that needs resolution.  Find out before things start to fall apart how they would prefer you contact them either in a emergency or if the normal methods of contact aren't working.

Solidify the business relationship

Once you've established the proper contact person, you need to solidify the business relationship.  Your job is to represent your interests as a developer or an end user.  You must also understand any competing business interests so you can emphasis the strengths or your business and be prepared to compare those strengths against the strengths of possible competitors.  Remember that a competitor in this sense is simply someone else who wants the time and attention of this vendor.  Don't be "religious" about your positions, you must avoid the urge to show how your business interests are somehow "morally higher" than those of conflicting businesses.  Never  present business issues as your own personal interest or beliefs.  This is especially true if you intend to work in this industry for any length of time because situations change and you may find yourself representing conflicting interests in the future.  Your career growth as a representative to hardware vendors will depend on the relationships, skills and knowledge you acquire within the vendor community.
 

Establish trust

Trust is critical to any good relationship.  At this stage of dealing with a vendor you probably have no history of trust so you will have to begin immediately to establish that environment.  It is much easier to lose someone's trust than it is to earn it.  Although the issue of trust must be considered throughout your business dealings with this vendor, I discuss it here because if you make mistakes early on, then you won't even have any relationship to maintain.

Formal Trust - The NDA

Most hardware vendors require that you execute some type of non-disclosure agreement before they will reveal information about their future products or product plans.  They will often require the same type of agreement just to allow you to have access to the detailed programming specifications you require.  This is what I call the "formal" trust relationship.  The reality is that if you manage the "informal" trust relationship properly you will probably never need to refer to the NDA document again. My experience with NDA's is that the larger the company, the more restrictive the NDA.   The only warning I can give you is that you should read any document carefully before you sign it.  I have often found clauses that don't make sense for the relationship I was establishing with the company - typically this happens because the company has a generic NDA form.  Don't be afraid to point out things in the NDA that you don't want and to take the liberty of crossing out the offensive clauses.  You should always provide your contact a detailed explanation of why you want to remove a particular clause, but if you are justified in your action then it shouldn't cause any problems in the relationship.   If you have a lawyer it would be advisable to get the NDA reviewed before signing it, however, once you've seen enough of these forms you'll get to recognize the standard clauses.

Informal Trust

working with other vendors
Real trust between you and the hardware vendor can only come over time.  Like any relationship involving people, you have to be sensitive to things that are of concern to the other person.  These vendors will know that you have relationships with other vendors.  Don't try to hide that fact.  Their real concern is not that you work with other vendors, but how you plan to deal with that fact.   You need to make a personal commitment to maintain strict confidentiality about everything you discuss with a vendor. You need to communicate that commitment to the hardware vendor not only verbally, but through your actions and through any statements you make about other vendors.   Your vendor will be very sensitive to anything you say about others because that is what they can expect you to say to others about them.
 
suggesting product improvements
You may be asked to suggest improvements or changes in a vendor's product.  That may sound like an innocent question, but you MUST avoid making any suggestions whatsoever.   Your ability to suggest improvements could be a direct result of your proprietary knowledge of other vendor's products or product plans.   If you think your suggestion is coming from some already public information, then simply suggest that the vendor look closely at his competitor's products.  Don't mention their competitor's names.  It would be pretty bad to say: "look at vendor A's web page if you want to see a really good implementation."  I had to do some serious damage control when someone I worked with in the past had announced in a public forum that one vendor's product was better than a similar product of another of our vendors.  The announcement included the names of the companies and the specific product names.   It becomes very difficult to get cooperation from a vendor who sees developers they are supporting, denigrate their products.

End users are not limited by the restriction on making suggestions.  As a matter of fact, vendors will be very appreciative of any suggestions you can make to improve their products.  This positive feedback will go a long way to allowing them to recognize the benefits to them for cooperating with the open source community.  You should also feel free to provide them objective benchmarks so they can see how they compare to their competition.  The only thing you need to be careful about is to make sure your comments are really as objective as you intend them to be.  Criticism should be private, praise should be public.   A vendor's product may not be the best in the industry, but their continued cooperation is important.  They may surprise you with their next product!
 

vendor neutrality.
You may be tempted to tell a vendor that your drivers will allow them to outperform their competition.  What then do you tell the next vendor?  Are you implying that you will somehow subvert the performance of some other vendor's product?  What if the other vendor is not a company with whom you have been working?  If you take that route, you'd better be prepared to work exclusively for one vendor.   If you want to work with multiple vendors,  the best thing you can say about your drivers is that they will allow your vendor's customers to realize the full potential of their hardware.  If their hardware is better than their competitor's hardware then that fact will not be hidden by your driver.  The reverse side of that argument is obvious, but that's not your concern!   Brutally speaking (but not out loud :-),  you can't change a sow's ear into a silk purse.
don't exaggerate!
I am constantly amazed how every sales person who ever lived seems compelled by some internal force to always exaggerate even when a realistic view presents a more powerful argument.  Huhh? The explanation for that phenomenon is simply that many salespeople don't know their product or their market.  How do I know?  I guess I've been a salesperson too long; I know from experience.   All too often, open source proponents fail to do their homework and then retaliate toward the vendor with some threat because the vendor didn't cooperate.  A vendor will always cooperate when you can prove to them that it is in their best interest to do so, except possibly if they are operating from an emotional level because of some previous negative contact with the open source community.
 

Maintaining the Business Relationship

Once you've established a business relationship with a vendor you need to make sure you follow though on all the things to which you've committed yourself.  You also need to start broadening your involvement with the vendor so that your relationship with that vendor becomes integrated into that company's culture.

Establish multiple contact points within the company

Protect your investment

As your business with this vendor grows,  you will probably find that you need to speak to someone else in the company.   This is important so you can protect your investment in the relationship with the vendor.  If you are following the previous guidelines,  you will be using only the pre-established procedures for contact.  Initially, this usually means contact though only one contact person.  Get permission from your initial contact  for you to interact with others in the company before there is a real need.  What would happen if your contact suddenly leaves the vendor's company?   What if there is an emergency and your contact is not available or if your contact is not responding?

Grow your contacts vertically and horizontally

Try to establish relationships with people that have direct responsibility for administering your business requirements at the highest level within a company.   You will not usually deal on a regular basis with this level of management, but having those contacts could help you negotiate through an emergency or when you hit a wall when trying to work through your normal contacts.  You should also begin establishing relationships with other departments like shipping, documentation production, marketing, etc., as that will be very important in minimizing the drain you create on their resources.

Say what you'll do and do what you say

Tell the vendor exactly what you plan to implement in your drivers.  If a board is a 3D board and you're only doing 2D then let them know.  If you don't plan to implement acceleration then let them know. The wonderful thing about open source code is that someone else can take over where you leave off.  Make sure the vendor understands this advantage to supporting open source code.

Treat all of the vendor's employees equally

Every employee in the vendor's company should be considered equally important to you in maintaining your business relationship.   It is a big mistake to believe that your relationship with a company is secure by being chummy with upper management.  You have no knowledge of how one employee interacts with another within the vendor's company.  Your power and influence in their company may be sealed or destroyed by how you interact with a receptionist!

Minimize your drain on vendor resources

The real cost to vendors

Most vendor's care less about the cost of materials they give to developers than they do about the potential drain on their human resources which could come from too much interaction with those developers.   Try to arrange to work directly with the vendor employees who are assigned the task of handling your requests.  This keeps the vendor's management burden light and it usually allows you to get faster and more complete support.

Lighten their load

Only contact the vendor after you've exhausted other avenues.  Before you call a vendor for information about the new graphics board which you had read about in your local paper, check their web site.  Check various sources of computer news, especially on-line news and user forums.  If a vendor releases a board with a new DAC, try to get the technical specifications directly from the DAC manufacturer.   If you've been told that you will be shipped a graphics board, your contacts within shipping will eliminate the need to bother your main contact.  If you've gotten permission to have mention of your drivers put on their web site, take this up with their webmaster.  This process is simply a continuation of the "homework" you began before you even contacted the company.

Maintain feedback between you and your vendor

Success breeds contentment

Let your contacts know about successes you've achieved.  They will be interested in knowing how their efforts on your behalf have paid off.  End users should send messages to the company and to their distribution thanking the company for its help in supporting Linux and telling them about sales which occurred as a direct result of this hardware vendor's cooperation.

Bad news is sometimes better than no news

If you won't be able to meet your goals, let them know as soon as possible in case they are making plans based on your work.   Don't exaggerate your successes or attempt to convince them your work is more important to them than it really is.   An open and active channel of communication should be maintained at all times so the vendor continues to give you "mindshare."

Be prepared to change directions

Listen to the vendor and be prepared to modify your plans if theirs change.  Are you still working on a driver for a board they plan to make obsolete?  If that driver is still important to your business, let them know why it's still important to you, but take a hint - you're on your own with that board!   Don't continue to press the vendor to support products they have lost interest in selling.  They can perceive this as counter-productive to their own goals because they want their investment in you to help them in their sales efforts.  This applies to both developers and to end users.  You will certainly get no response from distribution channels if you complain about no support for a board that is not even being sold anymore!  Save your "points" for a task that can be achieved.

Closing the Business Relationship

After many years in this business, I've come to realize that business relationships never END, they simply evolve into other relationships.  Your current business may end with this vendor, but although you may close a chapter, that's rarely the end of the book.  Engineers I've met sixteen years ago are now Product Mangers and even General Managers.  A Product Manager for one company I dealt with ten years ago is now the Vice President of one of my current vendors.  How you close a business relationship is sometimes more important than the relationship itself.

If you plan to move on to something new

If you decide to move on to new pursuits, make plans well enough in advance to allow the vendor to adjust to the change.  You may have become important to his business and you need to be sensitive to the probability that they don't want to throw away their investment in your business.  Whenever possible, pass the baton to the person taking over your job.  A personal contact is best, but a phone call is better than just an email message.  If you fail to close this relationship properly,  you will be making it much harder for the next developer to establish this vendor's trust.  If the next developer is you, that could present real challenges.
 

If you are "asked" to move on to something new

Stuff happens

Sometimes stuff happens and you suddenly find yourself forced to end the current business relationship.  If that happens to you,  notify your vendor that you are moving on as soon as it's practical to make that announcement.  This can be an email message and should include information about what is to become of their account if you know that information. If you don't know, let them know who to contact if they want to continue the business relationship.  In most cases, you can let your vendor know where you are headed and let them know they may be hearing from you or that they can feel free to contact you in the future at your personal email or phone number.

Growing your own career

Relationships you develop are part of your personal value  within the industry.  The skills you develop in maintaining these type of relationships also become part of your intrinsic value and should be highlighted when trying to find employment elsewhere in the industry.  This is identical to claiming on your resume that you can program in "C" or "C++", that your are familiar with the "X Window System", or that you wrote the hottest application your previous company ever released.