Release early, release often, they say.  Same goes for documents,
sometimes.  I'm working on an open letter to publish on the topic of
open-sourcing the RTL.  I've borrowed heavily from everyone who has
contributed to the conversation, usually without attribution (I hope
you don't mind).  I would like to invite editorial comments.  It's an
early draft, so it's poorly written and poorly structured.  Feel free
to suggest rearrangements, edits, rewrites, additions, deletions,
citations, etc.



Open Source Hardware?  How do you do it?


I've been a user of Free Software since 1995.  Compared to the
alternatives, it can sometimes be challenging, but it's also
incredibly liberating to not be tied down to a single faceless,
impenetrable vendor.  Over the time that I have used Free Software, I
have felt an ever-increasing desire to give something back, something
that others can benefit from, the same way that I have benefited from
their work.

I've been developing software a lot longer than hardware, but my heart
has always been in chip design.  It's what I enjoy the most.  It is
this interest that I felt would be the best thing to use to give back
to the community.  Unfortunately, developing and sharing hardware is
not the same as for software.  Hardware often requires expensive
proprietary tools to synthesize ("compile"), and it can cost $millions
to manufacture an ASIC.  If you release the source code to a piece of
software, anyone with a PC and a compiler can use it.  Releasing the
logic diagrams (RTL) for a piece of hardware is hardly useful to
anyone, and getting someone to manufacture it can be an uphill battle.

It has been my desire for a very long time to have readily-available
hardware that "just works" with Free Software.  So far, it has been
challenging to find that sort of hardware.  In my area of expertise,
graphics, the vendors have been reluctantly willing, in the past, to
release limited specifications so that hackers could support their
products.  But more recently, those vendors have started to close
their doors.  At the same time that they have started to pay more
attention to Linux, they have also pulled their support for Free
Software in general by releasing proprietary drivers that are often
buggy and work with limited versions of the Linux kernel, never mind
BSD or anything else.  And good luck trying to get one of those chips
to work with a PowerPC-based system.

My primary goal with the Open Graphics Project (OGP) is not, as you
might think, to "share."  My goal is to ENABLE sharing.  Consider the
sorts of "open hardware" that are available right now.  Opencores.org
has a lot of really cool designs available for download, which you can
incorporate into your own chip designs.  But have you noticed ready
adoption of those designs?  I'm sure they've ended up in plenty of
commercial products, although it's impossible to say for sure.  But
you can't just download, compile, and use any of those designs without
a significant monetary expenditure.  If I were to take the same
approach to the OGP, then our design would end up just like all the
rest:  A neat design that you can download from a web site.  But
that's not what I want.  I want a real piece of hardware that I can
buy, put into my computer, and USE.

My "do what it takes to get it done" attitude has generated a lot of
controversy with Free Software purists.  In order to function in this
business environment, certain traditional approaches must,
unfortunately, be followed.  In order to get it done, I have to
develop a business model that is both sustainable and attractive to
investors.  There are very difficult challenges to overcome.  Up to
this point, the situation with hardware is that hackers have had to
beg vendors for documentation; what I find ironic is that my offer to
freely give away documentation, plus a lot more, has been met with
complaints that it's not good enough.  Go figure.

But before I go on, I want to make something perfectly clear:  I WANT
to share.  The concepts behind Free Software don't all apply well to
hardware, but in my mind, the ideal situation is one where every last
bit of this design can be developed, completely out in the open.  The
benefits include faster development time and a better quality product,
due to the involvement of "many eyes."  This kind of development model
works.  The problem I'm faced with is an issue of PRODUCTION.

Already, most of this project is freely published, much more than for
any other product I've encountered.  Naturally, all software drivers,
including firmware, will be released under FOSS licenses.  For these,
we'll use mostly BSD and MIT license so that there is no restriction
on how those drivers can be ported.  Even the VGA BIOS and firmware
for other platforms are open source.  In order for hackers to develop
these drivers, they'll have to know the hardware in intimate detail,
and we are providing them with all the tools we need. 
English-language specs have been published and are continuing to be
published.  In addition, a complete, functional C-language model of
the 3D rendering engine has been published, and it describes the math
and logic in exact detail.  And as the hardware is developed and
decisions are made, the model is being updated to reflect those design
decisions.  Software developers who want to use our hardware are
wanting for nothing.

Regardless of the practicality of releasing or not releasing the RTL,
this has generated a lot of controversy.  Many seem to not understand
what they think we're not giving them, and many that do understand are
unfamiliar with the challenges of the business world.  There is a
recent case where someone thought they could get away with combining
free and non-free software, and it's been a big deal in the news.  But
it's not fair to compare us to then, because there is a clear barrier
between hardware and software.  At the same time, I can understand the
confusion, and for that matter, as I say, I really want to have the
hardware open source, just for idealogical reasons.  Do not be
confused.  I want to release the RTL under an open source license. 
But sound business judgment tells me that I cannot.

Sound business judgment aside, I am making a call out to everyone who
has useful ideas to help make everyone happy:  Help me solve the
problems with open sourcing the hardware so that I CAN open source the
hardware without making it impossible to manufacture.

There are numerous benefits to developing the design under a GPL
license, and here are just a few:
Faster development.
Many more eyes to find and fix problems.
Students and hobbyists can learn from it and use it in their own designs.
Software developers can identify discrepancies between the English
spec and the RTL and use that to write better drivers, work around
hardware bug, etc.
A new business model will be spawned that benefits everyone.

Sounds great, but let's now consider the challenges with doing this.

As you know, hardware development costs a lot of money.  This will
involve a significant up-front cost to myself, my family, my partners,
their families, and many skeptical investors.  This is a huge risk,
and anyone getting involved is going to want to ensure that they
recoup their investment.  And investors, not being charities, are also
going to want to make significant gains as well.  Production of this
design cannot be distributed; a lot of money has to be put into a very
small place, and it must be organized, which means we need to have a
business, and that business, like all others, must be profitable in
order to survive and live on to develop more products that Free
Software users want to have.

Many of us expect that the OGP will be a popular product line.  It
solves a lot of problems with hardware availability for users of Free
Software.  We believe this, and it's important for our investors to
believe it too.  Going on that assumption, there is an absolute
guarantee that some other company is going to want to copy our design.
 Releasing the RTL under GPL makes it perfectly legal for them to do
this.  Moreover, anyone who DOES copy the design is likely to be
someone who can do it more economically than we can.  Otherwise, they
wouldn't bother.  It's more economical for them to do it, because the
development was done for them, for free, and they're a big company
with lots of money and pre-existing relationships with fab houses that
will give them a better deal.  I'm not worried about another start-up
competing with us—I'm worried about "evil big company" cutting us off
at the knees.  And more important than my fears are those of my
investors who will have already seen this sort of thing happen many
times.  Notice how Tivo is struggling compared to those who came
after.

(A corollary to the above argument is that if the design is NOT
popular, then it's junk and you have no interest in seeing the RTL
anyway.)

Most people are highly cost-conscious, so if they can get our board
for $120 or the other guy's board for $50, whom do you think the buyer
is going to choose?  The result:  I can't make any sales, I can't
recoup the investments, and I go out of business.

To quote Mr_Z, who commented on an earlier KernelTrap article, "If two
or more guys build essentially the same ASIC, the one with the lower
manufacturing overhead and better distribution channels wins. The
startup that wrote the VHDL is unlikely to be that candidate, by
virtue of being a startup."

Having the design copied is a short-term advantage to the community. 
But if I'm put out of business by it, and I cost my investors
$millions in losses, my ability to continue future development is
destroyed.  I'm not trying to get rich here; my goal is to survive and
sustain my ability to develop hardware for this growing industry.  I'm
looking into the far future and trying to make sure that I am around
to perpetually develop new hardware that meets the needs of those who
value Free Software.

In a free market, competition is a good thing.  Monopolies get
complacent, and the quality of their products declines.  I love
capitalism, and I love to see AMD and Intel fight tooth-and-nail for
the same business, because the result is that they both produce
increasingly better products.  A business with a big market and a
sustainable product line needs competition.  But we, those who are
developing hardware for the OGP, are not an existing business.  We are
a start-up.  We need absolutely every competitive advantage we can
get, so that we don't go out of business in the first year, like so
many other start-ups.  It's one thing for us to compete with another
company who has to develop their own IP.  It's entirely another to
compete against another company that can drastically cut costs by
using our own IP against us.  Most importantly, our investors know all
this, and they'll require that we insulate against it.  A start-up has
to be rock solid, otherwise, VCs and angel investors won't give you a
second look.

This is pure psychology.  It's POSSIBLE that no one will copy the
design and under-cut us.  But hope doesn't sustain a business. 
Regardless of the likelihood, investors are terribly afraid of
anything that could hurt their investment.  They require that problems
of this sort of completely prevented.  Keep in mind that, regardless
of what protections patents, copyrights, and trademarks can provide,
when investors see that you're "giving away" something, even protected
by a strong license, they completely discount it as having any value. 
The RTL is the core of our business, so if we "give it away," the core
of our business has no value.  You can argue all you want about how
little of a risk this is, but you won't change the minds of any
investors.

Here are some things we need to be able to do with our IP as a business:
Sell chips for embedded systems
Sell boards in the retail market
License IP to those who want to combine our design with theirs
Have a competitive advantage against other companies
Get enough income to make it our "day job"
Get enough income to be able to develop future products
Ensure wide-spread adoption of our products so that the business can grow
Encourage the development of open source drivers

Note that something we're not necessarily trying to ensure is
indefinite revenue from old products.  If someone wants it supported
for 20 years, they'll buy a support contract separately from any
hardware they purchase.  Companies that don't need to release new
products get stale.  We have to continue to innovate anyway, so losing
revenue potential from a 1-year-old product, by GPL'ing the RTL, only
means that we can safely EOL a product without orphaning customers who
want to continue using it.  This just gives us one more reason to
continue to grow, improve, and innovate.

Since this is an open call for ideas, this is obviously not a complete
list, but here are some solutions that I and others have come up with
to that might solve our problem or inspire you to come up with better
solutions:
Develop a non-GPL license that allows everyone access to the RTL, but
prohibits anyone but my company from profiting from it without a
license.
Have the community "buy out" the RTL up front.  This way, the design
can be developed in the open from the beginning, and we completely
eliminate all financial risk.
Require individuals who want to see the RTL to pay a fee and sign
non-disclosure agreements.
Be patient.  We intend to release the RTL under GPL at some future
point ANYWAY. That point will be a function of production schedule and
profitability, and we also need to ensure a cashflow that allows us to
develop future products.  The RTL can be held in escrow to ensure that
we uphold our part of the bargain.

Something important to note:  Once something's made into a chip, it's
incredibly difficult and expensive to distinguish between the case
where someone simply made their own compatible design and the case
where someone illegally misappropriated our IP.  This problem also
must be insulated against.  Being ripped of, while being unable to
afford the technical and legal expenses to prove it could be deadly.

The bottom line is this:
On the one hand, I am dedicated to making a sustainable business model
that can meet people's needs.
On the other hand, I have people pushing me to do things that will
dilute any sort of "value-add" I can provide.
Obviously, there's a conflict, so I am putting forth a challenge to
those who are demanding open source RTL:  Find me a solution that
allows me to make a sustainable business model AND meets your need to
see this RTL that you so desperately desire.

You, as a consumer, want what is best for the community.  What would
be the best thing to do here?  Consider, just for a moment, the idea
that making the RTL available under an open source license (right
away) may not be the best thing for the community in the long term.

And for those of you who would try to tell me that I am wrong in my
assumptions about business, please show me your business credentials
first.  And to those who offer complaints but no solutions, please
just keep them to yourselves.  I'm dedicated to making something WORK
here, so either help or get out of the way.  And make sure that what
you suggest is not something that will sacrifice my ability to sustain
a business, because if it does, this RTL that you so desperately want
won't even come to exist.

To add to this, I would like to quote one of our list members, Patrick
McNamara, who said, "Not opening the RTL immediately will piss off
some people, and they will complain loudly.  It doesn't matter a bit
to them or their families' livelihood whether this venture succeeds. 
When that changes, they are allowed to complain."

So, now, it's time to exhaust all possible avenues to open source this
design and find an solution agreeable to all, so that I can stop
wasting my time dealing with political issues and get back to work.

_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to