-
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.