Netscape Source Code as Netscape Product
11 November 1997
Revision 0.7
Disclaimer: This document represents my personal opinions only, and
not the official position of the Netscape government sales group (or of
Netscape as a whole, for that matter).
Introduction
Netscape today faces several separate but interconnected challenges, among
them
-
to continue to create new products to bring in new incremental revenue;
-
to realize more revenue from existing products;
-
to improve new product quality at first release;
-
to do a better job of sustaining engineering in supporting current and
older releases while still driving innovation in new releases;
-
to more effectively recruit third-party developer support for Netscape
products and the Netscape platform; and, perhaps most important,
-
to recruit and energize the next generation of Netscape employees.
I believe these challenges are interconnected for two reasons. First,
most if not all of them are functions of Netscape's constrained resources:
not enough people, money, or time to do everything that needs doing.
Second, I believe that we have possible strategies available to us that
may help address all these issues together; in particular, there is one
possible strategy suggested in part by Netscape's history:
When Netscape first made Navigator available for unrestricted download
over the Internet, many saw this as flying in the face of conventional
wisdom for the commercial software business, and questioned how we could
possibly make money "giving our software away". Now of course this
strategy is seen in retrospect as a successful innovation that was a key
factor (if not the key factor) in Netscape's rapid growth, and rare
is the software company today that does not emulate our strategy in one
way or another. Among other things, this provokes the following question:
What if we were to repeat this scenario, only this time with source code?
Starting with the business problems
we currently face, I explore in this paper the case
for distributing Netscape source code very much as we do binary executables
today, and I propose roughly analogous licensing
and pricing models for source code distribution, including no-cost
(or very low-cost) source code licensing for noncommercial use. I
also consider common objections to distributing
source code and attempt to respond to them. Finally, I present some
possible actions Netscape could undertake as
part of studying and/or implementing such a strategy, including in particular
distributing one of the upcoming Gemini
developer releases with full source code and associated licensing terms
as a pilot test of the strategy proposed in this paper.
Products as source code
Netscape as a company is now strongly committed to building its future
products using three core cross-platform technologies: HTML, JavaScript,
and Java. These share the property that applications written using
them are deployed not as opaque executables but rather in a form that is
identical to their source code (in the case of HTML and JavaScript) or
from which the source code can be relatively easily derived (in the case
of Java); thus in effect releasing HTML/JavaScript/Java-based products
is tantamount to releasing a large body of Netscape source code to the
world.
A problem or an opportunity?
Some people see this as a major problem, and wonder how we can compensate
for it (for example, by "obfuscating" the distributed Java code) and thus
maintain the present state of affairs where commercial software like Netscape's
is normally distributed in run-time form only. On the other hand,
I am interested in whether this issue of "product as source code" is not
only not a problem, but rather may present a significant opportunity
for Netscape; this is especially the case if we also consider at the same
time many of the other issues Netscape must address: creating more products
to sell, doing more sustaining engineering to fix bugs and make incremental
product improvements, appealing to third-party developers, and so on.
Let's start with Netscape's business model and how it might be improved
and adapted if we decided to distribute source code as a conscious and
deliberate strategy.
The business of Netscape
Netscape's purpose is to help individuals and organizations harness the
power of the Internet; Netscape's characteristic approach to fulfilling
that purpose is to leverage the power of the Internet ourselves: in software
distribution, in QA, in marketing, and so on; I'll come back to these topics
later. But Netscape is specifically in business (as Jim Barksdale
says) to get customers and keep them. Customers are
organizations or individuals who see value in the products and services
that we provide, and who pay us good money in order to obtain them.
We get customers by convincing people that we can provide something
of value to them and persuading them to give us money in exchange for that
value. We keep customers by providing them not just one-time
but continuing value, sufficient that they will continue to give us money
in exchange for the value they continue to receive.
For customers, value is not necessarily associated with particular features
of a product. (And in fact, products with the same features offered
by two different companies may have different value for customers in each
case.) More generally, a product has value for customers to the extent
that it helps them solve problems; the more problems it can help
them solve or the more important the problem it helps them solve, the more
value the product has. Customers may solve these problems with the
help of the product's actual features (as Netscape Navigator originally
helped solve the problem of accessing the Internet without complicated
utilities) or they may solve their problems with the help of other product
attributes (as Netscape's brand name and market dominance help solve the
problem of making a "safe" buying decision).
Over time Netscape has attempted to add additional value to its product
line by adding new features to existing products (e.g., mail and news support
in Navigator and then Communicator), adding new products (e.g., the SuiteSpot
servers), adding new ways to use the existing products (e.g., Netcenter),
and so on. For Netscape to continue to grow as a company faster than
the overall market, we need to find new ways to provide value to customers,
and new ways to convert that value into money.
Competing with Microsoft
But Microsoft also can add new features, new products, and new ways to
use them, and it has much greater resources with which to do this.
Netscape needs not only to offer particular product value earlier than
Microsoft, but also needs to both match (or at least come close to) the
value that Microsoft's resources create for its own products, and at the
same time create value for Netscape products and services in ways that
Microsoft cannot easily duplicate, either in principle or at least without
adversely affecting the value of other Microsoft products. (An example
of the former type of value is simply that Netscape is not Microsoft, and
can thus help solve the problem of customers being dependent on Microsoft
for all their information technology. An example of the latter type
of value is Netscape's cross-platform support, which helps customers solve
the problem of preserving their investment in existing systems, and which
Microsoft cannot fully duplicate without adversely affecting the relative
value of its own products, particularly the latest versions of its operating
system software.)
In essence competing with Microsoft means continually having to pursue
temporary (at best) advantages in relative value deriving primarily from
product features, combined with more strategic attempts to alter the competitive
balance in ways which Microsoft is less prepared to cope with. Netscape's
initial strategy of distributing "free" software over the Internet was
a successful attempt to change the rules in this way, one that gave
Netscape at least a year's lead in the market and helped build a market
position that allowed Netscape to survive in the market once Microsoft
entered it. It's therefore worth considering how we might change
the rules once again.
Source code as a product
As noted above, Netscape's long-term product development strategy commits
us to shipping software products that are increasingly "source code-like";
however our long-term marketing and sales strategies have not yet changed
to reflect this. If this situation continues then we run the risk
of encountering all the problems that many predict shipping source code
will cause, while not deriving any of the benefits that others (including
myself) claim we could enjoy.
Let's therefore consider (as a thought experiment if nothing else) if
Netscape were officially to ship source code to its products, and
were to do so on terms comparable to those on which we currently distribute
binaries (e.g., Internet distribution, free evaluation use, free use for
educational institutions, etc.). Leaving the finer points for later,
such a strategy must at a minimum address two issues: How does distributing
source code create value for customers, and how can Netscape convert that
value into revenue and profits (i.e., money)?
Note that by "source code" for a given application I mean the underlying
programming language statements (and related information, e.g., make files,
error message files, etc.) which can be read by humans, modified to make
changes and additions, and then used to build a fully functional version
of the application, or another derived application reusing some or all
of the same source code. For purposes of this discussion we assume
that for a given product (say Communicator) we would distribute all relevant
source code. (In actual practice this may not be possible in all cases,
as discussed below; for example, we might
distribute some components of a product in binary form only, or not separately
distribute certain components at all. We would also likely follow
an incremental strategy in releasing source code, starting with particular
products or particular components of those products, and adding other products
and components as time went on.)
What value does source code have for customers?
Much software has traditionally been distributed in source code form, and
there are several commonly-accepted ways in which having source code for
a product can directly increase the value of that product for a customer
by helping them solve a number of problems:
-
The customer can better protect their investment in a software product
in the event that the software vendor goes out of business or decides to
discontinue a product that is critical to the customer's operations.
(Source code escrow provisions in contracts provide similar protection,
but typically only for the case where a vendor goes out of business.
Source code escrow also does not provide the additional indirect benefits
discussed below.)
-
The customer can better understand how the software works in the event
that the vendor's documentation is incomplete or confusing.
-
The customer can look for and correct potential security flaws in the product
that might otherwise adversely impact the customer's operations.
-
The customer can fix bugs themselves if the vendor is unable or unwilling
to do so.
-
The customer can port the software to new operating systems and/or hardware
platforms not otherwise supported by the vendor.
-
The customer can use the source code to create customized versions of the
original software product, extended and improved versions, or whole new
applications, thus avoiding the need to write those applications "from
scratch".
Distributing source code for a product can also more indirectly increase
the product's value to a customer:
-
Writers and trainers not associated with the software vendor can create
more complete and correct documentation and training material, because
they do not have to rely on the vendor's (often inadequate) original documentation.
This makes learning about the product easier, so that customers can more
easily and cheaply train their end users and developers.
-
Consultants and systems integrators can become more familar with the technology
and techniques underlying the product, and can become more skilled in implementing
systems based on or incorporating it. This creates a wider base of
people able to implement complex applications using the product, and this
in turn means that customers can implement systems more cheaply (because
there is more competition among people possessing the minimum necessary
expertise) and/or can implement more functional systems for the same price
(because the most skilled implementors possess greater expertise than they
might otherwise).
-
Third parties can find bugs and security flaws and create fixes for them;
the fixes can then be incorporated into the original product. This
makes the product more bug-free and secure than it might otherwise be,
increasing the product's value by helping customers lower software operational
and maintenance costs.
-
Other software suppliers can reuse the source code (assuming that this
is permitted and even encouraged) to create modifications and add-ons to
the original product that provide features that the original product does
not provide. Customers can use these new products to implement more
functional systems than they might be otherwise, and this increases the
overall value of the original product considered as a platform on which
to build.
These ways to increase value are again quite familar to anyone acquainted
with products such as Linux, GNU Emacs, or Apache that are normally distributed
with source code (or for which source code is available separately).
Together they help to make products whole products, in the sense
used by Geoffrey Moore (in Crossing
the Chasm and Inside
the Tornado) and others: products accompanied with all the additional
things necessary to ensure that the value experienced by the customer matches
the value promised by the vendor. These things include support, documentation,
training, third-party consulting and system integration, a thriving developer
community to use the product in innovative ways and create add-ons to the
product, a set of de jure or de facto standards upon which the vendor and
others can build, and so on.
This is exactly where Microsoft's greater resources and experience serve
it well; to compete successfully with Microsoft as time goes on, Netscape
must not only create products that are more functional than Microsoft's
in a generic sense, but must also find ways to approach or match Microsoft's
whole product value, ways that do not require Netscape to take on the entire
burden of doing so itself (since our own resources will never equal Microsoft's).
However, for Netscape as a commercial company it is not enough just to
increase the value of our products; we must also find sustainable ways
to have customers reflect that value back to Netscape in the form of increased
revenues and profits; it's therefore to that subject I now turn.
How can Netscape best convert the value
of source code into money?
Today the conventional way to get revenue in exchange for the value of
a software product is to sell the customer the right to use the
software product as opposed to selling them actual ownership of the product
(as they might own a physical object); even a customer buying shrinkwrapped
software sold in stores is technically buying a right to use license rather
than possession of the software itself. However vendors concerned
about software piracy traditionally assumed that possessing a copy of the
software was tantamount to using it, and that a user who got a copy of
the software without paying for it represented revenue permanently lost
to the vendor.
While retaining the idea of payment in exchange for the right to use
software, Netscape is instead committed to a business model that assumes
that anyone can easily get a copy of our software without paying for it
first; Netscape's goal is then to convert existing users into paying customers
or otherwise have value received by users returned in some way to Netscape
as increased revenue and profits. Netscape's history shows that this
is a quite reasonable business model for the business market (in which
organizations are motivated to comply with the legal terms of licenses)
and is a workable model for the consumer market as well (in which many
people will pay if for no other reason than the convenience of having physical
media).
Netscape's business model also recognizes a third major market, namely
educational institutions, in which users are not expected to pay anything
at all for the right to use software; value provided to users in this market
is either paid for on a delayed basis (i.e., when students move from school
to work and purchase products they've previously found valuable) or acts
to create added value for other users who do pay for it (e.g., when the
added market share from educational users adds to the ubiquity of the product,
increasing its value to customers looking for a "safe" choice).
Finally, Netscape distinguishes between at least two segments of the
business market: the enterprise market, where software is used mainly internally
and is typically priced on a per-user basis, and the content/service provider
market, where the software is mainly deployed externally and where somewhat
different pricing schemes are used, to reflect the fact that it can be
more difficult to define "number of users" in this environment (for example,
when providers do "speculative distribution").
There seems to be no a priori reason why a business model analogous
to our current one could not be made to work with source code as well.
The exchange of money for value would again be based not on mere possession
of the code, but rather on a right to use, which for source code means
the right to create and distribute derivative works based on the
original source. In other words, Netscape would make its source code
available for download in exactly the same way that we distribute binaries
today; thus anyone wishing to have a copy of Netscape source code could
obtain one without any special prior arrangements (e.g., signing a non-disclosure
agreement and/or paying a licensing fee). Formal licensing and payment
(if appropriate) would kick in only at the point that the customer used
the source code to create their own derivative work.
Licensing and pricing for source code
The general licensing/pricing model for source code would be that source
code used by customers to create derivative works used or sold commercially
would be licensed and priced so as to produce direct revenue to Netscape;
for derivative works used or distributed noncommercially Netscape would
receive revenue only indirectly, as discussed below. The difference
between commercial and non-commercial use is not necessarily straightforward;
in particular, using Netscape source code to create "freeware" (i.e., software
available at no cost) should not necessarily count as noncommercial use,
especially if it is done by a commercial (i.e., for-profit) concern or
by customers such as government agencies. Ultimately Netscape itself
would be the judge of what constitutes commercial versus noncommercial
use of our source code, just as today we decide which customers qualify
for educational or charitable discounts on our products and which do not.
Other suggested general principles in licensing and pricing source are
as follows; note that when I refer to "licensing source code" below I really
mean "licensing the right to create and distribute derivative works based
on source code":
-
We should license source code separately for each of the products which
we currently license or will license in binary form. I assume that
in the future we will continue the trend toward "componentizing" our products,
particularly the Communicator client, and that we will offer these components
priced separately, just as we currently do with Navigator 4.0 ("Ratbert").
Licensing source code by component allows customers to license source code
only for the components that they're interested in.
-
To encourage broad licensing, we can and should offer a bundled source
code license for a product which is itself a bundle. Thus we could
offer a source code license for all of Communicator (i.e., for all the
components included in the Communicator binary license) or a source code
license for all of SuiteSpot (i.e., for all the server products included
in the SuiteSpot bundle). The commercial list price for the bundled
source code license should be somewhat lower than the total price for licensing
source code to all the individual components, as an incentive to license
source code for the entire product.
-
Consider a derivative work consisting of a
customized component built using all the original Netscape source code,
with the exception of one line changed or added. In essence distributing
a binary version of this customized component, or any component using a
significant fraction of the original Netscape source code, is tantamount
to distributing a binary version of the original component, and the licensing
and pricing should reflect this. In particular, we could and should
structure the source code licensing arrangements so as to ensure that any
end user of the derivative work is also properly licensed for the underlying
Netscape component (in binary form). (How this would work in practice
depends on the role of the customer creating the derivative work; see the
discussion below.)
-
The previous point implies that the total
price for licensing source code for a component would include and thus
should be higher than the price for licensing the component only in binary
form. However the source and binary forms for a component should
be priced separately, as opposed to building the binary license price in
as part of the source code license price; this preserves maximum flexibility
for sales in pricing a deal involving source code. (For example,
the customer may already have licensed the components in binary form, so
that source code would be priced as a straight upgrade to the original
deal.)
-
Pricing should be such as to allow small
companies (or even individual developers) to create derivative works for
commercial distribution with a minimal upfront investment. One good
way to do this is to price source code on a per-user (or per-copy distributed)
basis, exactly as we price binary products on per-user (or per-copy) basis
today. The additional per-user price for source code could be some
fraction (say 10 to 100 per cent) of the price for the binary component;
thus for example a Netscape reseller selling vanilla Netscape components
for some price (call it X) could easily license source code and distribute
customized or extended versions of the component for an only slightly higher
price (say 1.3 times X), with Netscape realizing new incremental revenue
(in this case 0.3 times X, less the reseller discount) for each customized
copy the reseller distributed.
-
With a per-user pricing scheme there is nothing in principle to prevent
a single commercial user (e.g., a one-person consulting company) from licensing
source code as an incremental charge to what they paid in the first place
to license the Netscape product(s) they use, and then creating derivative
works purely for their own use. There is absolutely nothing wrong
with this practice, and we should permit and even encourage it. However
at the same time, to encourage larger purchases we could create multi-user
"packs" consisting of source code licenses for a given number of users
(say 50 or 100); these would correspond one for one to the corresponding
multi-user packs for the binary products.
-
Going back to the point
above, the ultimate end users of derivative works based on Netscape source
code for a given component (or components) must also have a valid right-to-use
license for the same component(s) in binary form. One useful distinction
between commercial use and noncommercial use could be as follows: in the
case of commercial use of source, the creator of the derivative
work (i.e., the organization or individual licensing the Netscape source
code) could be held responsible for ensuring that end users are properly
licensed; they could do this by reselling a binary right-to-use license
bundled in the price at which they sell their derivative works (as in the
reseller example above) or by otherwise
exercising due diligence to ensure that the end user is properly licensed.
On the other hand, in the noncommercial case the end user of the
derivative work (i.e., the organization or individual receiving and using
the noncommercial derivative work based on Netscape source) could be held
responsible for also having a valid right-to-use license for the underlying
Netscape component(s), not the creator of the customized component(s).
This "receiver makes it right" principle is intended to simplify the legal
burden on creators of noncommercial freeware based on Netscape source,
and allow them to distribute their derivative works as freely as possible,
with minimal concern for licensing and pricing issues.
The specific licensing models for the various markets would be analogous
to the corresponding licensing models for binary code. (Note that
this is only a first cut at more specific models; there are many cases
that would quite likely have to be treated specially.)
-
Enterprise users wishing to use the source code to create derivative works
for internal deployment would pay a per-user license fee to do so (for
each product for which they wanted to use the source). As per the
principle laid out above, this price would
be in addition to the price they would have already paid (or would be paying
at the same time) to license the same number of users for the binary products;
the number of users would be counted in exactly the same way as is currently
done when doing per-user pricing for binaries. This model could be
extended appropriately to cover extranet users for an enterprise application
deployed externally (again as we do today).
-
Content/service providers creating derivative works for use by their own
customers (as opposed to works created for general sale) would be treated
roughly as content/service providers are currently treated in licensing
binaries, with analogous pricing schemes.
-
Value-added resellers (including systems integrators and consultants acting
as resellers) creating and selling derivative works would pay an incremental
amount to Netscape per each copy sold, over and above what the VARs are
already paying Netscape for each product sold in binary form (as described
in the example above). Resellers
could also be authorized to resell source code licenses, so that their
customers could in turn create and use derivative works for themselves;
Netscape would sell these licenses to the reseller at some standard VAR
discount.
-
Independent software vendors (ISVs) incorporating Netscape source code
into their own products could be licensed on a different basis, with the
type of licensing and pricing varying from case to case; compensation offered
by the ISV in exchange for the value of the Netscape source code for a
given product could include one-time and/or per-copy royalties (as in the
VAR case), cross-licensing of technologies, etc. Shareware creators
would come under commercial licensing terms to the extent that they derived
revenue from the derivative works.
-
Other other hand, academic users and freeware authors could be given a
license to create and distribute derivative works (in source or binary
form) on a non-commercial basis. If it wished Netscape could grant
these licenses on a case-by-case basis and with specific terms, in order
to prevent potential abuses like someone changing one line of source in
Communicator and then trying to distribute the resulting product as freeware;
alternatively, Netscape could simply follow the principle
laid out above, and allow noncommercial ("free") distribution of the derivative
works by anyone to anyone, with the end user of the software responsible
for licensing the corresponding Netscape product in binary form.
(For Communicator, end users with already valid binary licenses would include
all academic users and most if not all home users, as well as any licensed
business users.) In exchange for this value provided, Netscape might
be given (for example) the right to license these derivative works (including
source code) for incorporation into its own products, on maximally favorable
terms (e.g., at no cost or minimal cost). Or Netscape might recover
compensation for the value of its source code in other indirect ways; for
example, derivative works intended as add-ons to Netscape products and
distributed as freeware might increase the overall value of Netscape products
to paying customers and motivate them to buy more of those products, Netscape
would likely have an increased pool of experienced software developers
from which to recruit, and so on.
-
Finally, some customers might want a copy of Netscape source code not to
create derivative works but rather for their own education or simply to
say that they have it. These customers could simply download the
source over the Internet at no extra cost; however they might also pay
Netscape for the convenience of having the source code delivered on physical
media (e.g., a CD-ROM or a paper book).
Of course, distributing source code is a nice thing in and of itself, and
for Netscape considered as "the Internet company" is consistent with traditional
Internet cultural norms of sharing information as widely and freely as
possible; it is also consistent with Netscape's traditional approach of
leveraging the power of the Internet and low-cost distribution in our own
business. Such a strategy would no doubt be welcomed by many users,
and may gain us favorable attention in at least some segments of our market;
it could also produce new incremental revenue we would not otherwise have
received. However the acid test for a strategy of source code distribution
would be how well it helps Netscape compete and win in the marketplace
against our competitors, most notably Microsoft.
How does distributing source code
help Netscape compete against Microsoft?
As noted above, any proposed new
strategy should help Netscape achieve at least two overall goals:
-
better match Microsoft's ability to create "whole product value", and
-
create value in ways that Microsoft cannot easily duplicate.
A strategy based on distributing source code helps create additional whole
product value for customers as described above, namely by furthering stimulating
a community of writers, trainers, consultants, system integrators, and
software developers who can write documentation, create training materials,
provide technical support, and create more systems and products based on
Netscape technology. The primary challenge for Netscape here would
be to find ways to capture that increased value as increased revenue; some
of the possible ways to do this are discussed in the previous
section.
Could Microsoft alter its strategy so as to duplicate the value that
this strategy might create for Netscape, or otherwise blunt the impact
of this strategy on Microsoft? At least two possible Microsoft counter-strategies
present themselves immediately:
First, Microsoft could attempt to match Netscape's strategy exactly,
namely by releasing source code for some or all of its own products.
(To those who claim that Microsoft would never do this, I respond that
there is apparently only one ironclad rule at Microsoft: that Microsoft
must win. Microsoft has already shown in its Internet strategy
how willing and able it is to abandon traditional strategies in order to
protect its competitive position.) However, this straightforward
"anything you can do, I can do better" strategy has at least the following
disadvantages for Microsoft relative to Netscape:
-
Microsoft has often been accused of surreptitiously altering its products
so as to disrupt the operation of competing products. Whether this
accusation is true or not, exposing Microsoft source code for public inspection
would most likely impair Microsoft's ability to pursue such an approach
in the future. Microsoft could refrain from releasing source code
for certain components (e.g., for core Windows as opposed to Internet Explorer)
or could attempt to insert changes of this sort in its binaries while not
having them appear in the source code as distributed. However refraining
from releasing complete source code would mean that Microsoft was not fully
matching Netscape's strategy (assuming that we do release complete
source) and thus not necessarily matching our value. Also, general
mistrust of Microsoft would no doubt lead people to look for and (more
important) discover any cases where Microsoft's published source did not
match its distributed binaries.
-
Microsoft's business model is predicated to a large degree on driving customers
to purchase regular upgrades of Windows operating systems and Windows-based
applications. Microsoft products are thus designed to run best on
the latest versions of Windows (in its various incarnations), and therefore
the source code to those products would be most useful to those customers
deploying applications on those versions; the source (and any works derivative
of it) would be of significantly less interest to customers deploying on
non-Windows platforms or on earlier Windows versions. This would
put Microsoft at a competitive disadvantage relative to Netscape, assuming
that Netscape continues to pursue a strategy based on Java and related
technologies with greater cross-platform support.
A probably more effective counter-strategy to Netscape's releasing source
code would echo Microsoft's strategy vis-a-vis Java: embrace the technology
(to some degree) but coopt it to Microsoft purposes by extending and using
it in incompatible Microsoft-specific ways. For example, Microsoft
could simply take Netscape source code, extend, modify, or otherwise use
it to create new products that were better than Netscape's own, and then
give away or sell those products away to all and sundry. (Remember,
money is no object here: Microsoft could devote a hundred million dollars
a year to doing this and still have minimal impact on its own profits.
Also, even given the recent activity by the U.S. Department of Justice,
for purposes of defensive planning it is best to assume that Microsoft
will be free to pursue almost any strategy it wants to against Netscape
with minimal concern for anti-trust or any other legal restrictions.)
This counter-strategy has less downside for Microsoft and it is worth
considering how Netscape might defend against it. Netscape could
try to prevent Microsoft from licensing its source code, could restrict
the licensing terms to protect against Microsoft or anyone else creating
incompatible competing products, or could structure the licensing terms
such that Microsoft would have to pay Netscape as much money as Netscape
would have realized by distributing the source code and resulting products
itself. However Microsoft can afford to hire the best lawyers on
the planet, and again for planning purposes we should assume that they
could find appropriate loopholes no matter what the licensing agreement
said.
However there are still disadvantages to this counter-strategy for Microsoft
(and relative advantages to Netscape):
-
To the extent that Microsoft uses Netscape source code to build products
that require the latest versions of Windows to perform at full potential
(or to run at all), Netscape and Netscape products would still be viewed
more favorably by those customers for whom cross-platform support and vendor
independence are important.
-
To the extent that Microsoft uses Netscape source code to build products
that run well cross-platform and on earlier versions of Windows, it weakens
its own business model. Microsoft might possibly achieve the short-term
goal of adversely impacting Netscape's business, but would then have to
face the longer-term problem of using its monopoly power to drive increased
revenue and profits in an environment where customers would have gotten
used to much greater openness in terms of cross-platform support and visibility
of source code.
-
Microsoft would also face a problem similar to what it faces with Java
today: that its own employees, particularly Microsoft's developers, would
find the new ways (open source code, etc.) more attractive to them than
the old Microsoft ways. To the extent that this causes conflict within
Microsoft and a corresponding lack of clarity in its public sales and marketing
messages, this must be counted as a plus for Netscape and other Microsoft
competitors.
As implied above, this proposed Netscape strategy based on source code
distribution cannot guarantee victory in the market battle with Microsoft;
it cannot even guarantee Netscape's survival. However it is consistent
with the overall history and likely future direction of the Internet/intranet
market, is consistent with Netscape's own history, strategy, and traditions,
and if executed successfully holds the potential to increase Netscape's
importance to the market, drive increased Netscape revenues and profits,
and buy needed breathing room for Netscape to achieve critical mass as
an ongoing commercial company.
Objections
The previous sections were devoted to building a convincing argument for
Netscape adopting a new strategy based on public distribution of the source
code for its various products. This section is devoted to ripping
that argument to shreds, in the ultimate faith that the argument can withstand
the various objections that people might bring against it.
"Wouldn't we be giving away our 'crown jewels'?"
Software companies often refer to their source code as the "crown jewels",
implying that it is a precious resource that must be protected at all costs
from anyone outside the company who would seek to obtain it or (mis)use
it. Thus companies release source code only in very special situations,
and do so only when accompanied with an array of legal arrangements, including
non-disclosure agreements and tightly-worded contracts.
But arguably possessing source code in and of itself is irrelevant.
Source code acquires true commercial value only if you can use it to create
products and services that you sell for money, and you can typically do
this successfully only in the context of a company with a known brand name
and a sustainable market position. (In other words, if I had the
source code to Windows, it wouldn't make me Bill Gates.) Similarly,
releasing Netscape source code would not necessarily mean that other
companies (including Microsoft) could duplicate Netscape's successes or
even adversely affect Netscape's business. Those successes are a
result of much more than our source code; other factors include the celebrity
of and trust placed in Netscape's brand name, the good will engendered
by our liberal distribution and evaluation policies, the effectiveness
of our sales and distribution channels, and so on. Those factors
could still be very much influenced by us, even in the absence of "complete
control" for the source code itself.
A related argument is that our source code has so much value that we
can and should charge a very high price to anyone wishing to license it.
In practice this policy can keep us from exploiting many possible market
opportunities. Suppose that a company wants to use our source code
as the basis for a product to be sold into a limited market, a market so
limited that it is not cost-effective for Netscape itself to address it.
However it may be cost-effective for the third party company to
address this market, perhaps because the company can offer other (and relatively
more lucrative) products and services tied to the Netscape-based product.
Why shouldn't we simply license our source code to such a company for a
relatively modest fee, commensurate with the size of the opportunity, and
thereby realize incremental revenue that we wouldn't otherwise have?
(I didn't just make up this example, incidentally; I have dealt with third
parties who wanted to do exactly this for specific government market opportunities.)
One possible objection to Netscape licensing source code at low cost
is that a third-party company creating derivative works would need support
from Netscape developers to do its work, and that because these people
are a limited resource we must in effect ration their use by setting the
price of source code artificially high. But developers experienced
in working with Netscape source code are a scarce resource mainly because
we do not generally license source code in the first place. If we
were to license our source code more liberally, especially if we were to
license it for noncommercial use, then the pool of knowledgeable developers
would increase and this problem of limited developer resources would to
a large degree take care of itself.
"Wouldn't people just use our code and
our expertise without paying for it?"
If Netscape were to release our source code, how would we protect against
people getting a "free ride", i.e., using our code (and, by implication,
the expertise embodied within it) to create their own products, and not
compensating us in any way? This is analogous to the original concerns
about distributing our software on the Internet (i.e., how could we prevent
"software piracy"?), and these new concerns can be addressed in similar
ways.
Let's first consider noncommercial use (suitably defined); this is analogous
to academic use and home use in Netscape's current binary distribution
strategy. As it's turned out, Netscape has arguably made much more
money by "giving away" its software in these cases than it would have made
by attempting to charge for each and every copy. This is mainly because
allowing such "free" use gave Netscape a very large market share within
a very short period of time; that large market share in turn allowed us
to charge commercial companies for licenses (because in many cases their
users already had Navigator installed) as well as opened up new sources
of revenue such as web site advertising (because so many users came to
Netscape's site).
Similar dynamics could and no doubt would operate in the event that
Netscape allowed noncommercial use of its source code to create derivative
works. Some noncommercial use would consist simply of creating fixes
to bugs in Netscape software or porting Netscape software to operating
system and hardware platforms we do not currently support; this type of
use would directly benefit Netscape (and is the sort of thing we would
otherwise have to pay money to someone to do). Other use might consist
of creating add-ons to our products by extending our source code; although
this type of use might not result in direct revenue to Netscape, nonetheless
it could and would indirectly benefit Netscape by making our product platform
more valuable overall. In these cases Netscape might choose to "take
back" the new and improved source code by making it part of our own source
code base; noncommercial licenses for our source might contain language
giving us the right to do so (while still giving the original authors the
right to create and distribute their changed code at no charge).
The only types of noncommercial uses which might be detrimental to Netscape's
interests are where people attempt to use our source code to create and
distribute substantially similar but competing products as freeware (e.g.,
"Norm's No-cost Navigator"). This is not necessarily a concern, since
it is arguable whether this would in fact result in Netscape losing any
revenue: commercial customers would most likely not use such freeware in
lieu of paying Netscape for the original products, and home users who actually
pay for Netscape software now would still be likely to buy shrinkwrapped
Netscape products in retail stores as opposed to using freeware they would
have to download. However if we do have any concerns about potential
harm to Netscape, we could control such undesired use through appropriate
license terms, as discussed above.
Commercial use is even more controllable than noncommercial use, since
it is almost always done in the context of a written contract (even if
this is as simple as a purchase order) and a corresponding enforceable
license agreement. This control extends not only to use of the source
code itself, but also to any techniques embodied within it for which Netscape
might claim intellectual property rights through patents. (This is
independent of whether or not you consider software patents to be a good
or bad idea in the first place.)
"How is this really different from what
the GNU project tried to do?"
Traditionally a hard-and-fast distinction has been made between commercial
software companies which do not release source code and nonprofit projects
such as the GNU and Linux
initiatives which do; if Netscape were to distribute source code, especially
if we were to allow noncommercial creation and distribution of derivative
works, many people would likely assume that our business model in doing
so must be more like a non-profit venture like GNU or Linux than a for-profit
venture like a conventional software company. It's therefore worth
considering in what ways this proposal is similar to what was attempted
in the GNU and Linux projects, and in what ways it is very different; here
we consider the GNU project primarily since the Linux project was to a
large degree modeled after it, especially in its use of similar licensing
terms.
As originally envisioned in Richard Stallman's "GNU
Manifesto", the GNU project had at least three goals:
-
to create a set of software products fully comparable in functionality
and performance to equivalent commercial products, but distributed at no
charge to users and with source code "freely available";
-
to ensure that the source code of any derivative works based on the original
source would also be and remain freely available, under the same licensing
terms as the original products; and
-
to catalyze a major change in the commercial software business, moving
it away from business models based on the control of intellectual property
embodied in source code and toward business models based on treating software
development as a professional service.
I think it is fair to say that the GNU project and related projects such
as the Linux initiative have succeeded pretty well in meeting the first
two goals, but have failed utterly in meeting the third. There is
at least one commercial company (Cygnus
Solutions) based on the GNU business model (pay for development and
support of software, but not for the underlying source code considered
as intellectual property); however it has not been that successful compared
to traditional software companies (including newer companies like Netscape),
and apparently it has inspired few (if any) emulators. Other companies
(including Caldera and Red
Hat Software) have made a business out of integrating and shipping
Linux distributions, but again these companies are relatively small and
are not really major players in the commercial software business.
Why is this? The simplest explanation is that in a (mostly) capitalist
economy people do not want software companies to have the economics
of relatively low-margin professional services companies like Arthur Andersen
or EDS, they want software companies to have the economics of relatively
high-margin software vendors like Microsoft or Oracle. "People" here
includes the entrepreneurs who found software companies, the venture capitalists
who fund them, the shareholders who buy and hold stock in them, the salespeople
who sell for them, and (arguably) the software developers who create products
for them. (Actually, whether software developers would really prefer
the conventional model or the GNU model is to a large degree a moot point;
because of the success of conventional software companies versus Cygnus-style
software companies, the vast majority of commercial software development
employment opportunities are with companies following the conventional
model.)
I am not therefore proposing that Netscape adopt the GNU model
in the area where it is failed; I assume that Netscape does and should
"own" its source code in the sense of having and asserting valid intellectual
property rights to it, including copyright in particular, and the business
models I propose are based on charging customers for the right to use that
intellectual property in various ways, in particular to create derivative
works based on it. In doing this we could charge whatever amount
the market will bear, and in principle Netscape could have just as high
margins in following this strategy as we do with our present strategy.
However at the same time the successes of the GNU and Linux projects
are instructive in various ways concerning the potential success of the
proposed source code strategy for Netscape:
-
The various GNU products and Linux are an "existence proof" that high-quality
software can be created and (even more important) maintained and enhanced
in an environment where the underlying source code has essentially unlimited
distribution and essentially anyone can create derivative works.
-
They furnish evidence that factors such as brand names that are unrelated
to product features are still important in this environment. To cite
but one example, I (and I suspect other people) would trust a Linux version
"endorsed" by Linus Torvalds (the original inventor of Linux) more than
I would a version endorsed by an otherwise-unknown "John Doe". This
implies that the Netscape brand would still have value even if other people
supplied products based on our source code.
-
They show the power of licensing agreements to enforce behavior desired
by the creator of the source code. The GNU
General Public License is the legal mechanism by which creators of
GNU software attempt to enforce the restriction that creators of derivative
works based on GNU source make their own source code freely available.
In reality those original creators have very little power (in the sense
of legal and financial resources) to enforce these restrictions, and an
unscrupulous company could probably violate the GNU license with little
fear of ill consequences. However in actual practice the GNU license
terms seem to be almost universally complied with, presumably because of
both respect for them on the part of software developers and risk aversion
on the part of corporate lawyers. This implies that Netscape could
also enforce its own desired behavior on the part of source code licensees,
even if those licensees were individuals and academic organizations not
otherwise contractually bound to Netscape.
In general the GNU/Linux way of doing software development and distribution
holds many other lessons that could be useful to Netscape in pursuing in
a strategy of source code licensing and distribution (see below for another
example), and to a large degree the business model I am proposing can
be seen as a deliberate hybrid of GNU/Linux practice and traditional commercial
practice. If GNU and Linux are considered to be examples of pure
socialism (or communism or anarchy), and if Microsoft, Oracle, etc., are
considered to be examples of pure capitalism, then in a sense the strategy
in this paper represents an example of a mixed economy in which for-profit
and non-profit sectors could coexist and cooperate, with each benefiting
the other.
"What about things in the source that might
reflect badly on us?"
We might be concerned with releasing source code for fear of inadvertently
exposing material which might embarrass Netscape in some way if someone
were to come across it. Examples include bugs both minor and major,
security flaws, and embarassing comments by developers; the latter could
potentially include comments disparaging the code itself (e.g., "what a
brain-dead hack"), product quality ("fix #1,000,001 for this turkey"),
or particular customers ("patch for the idiots at Acme Widgets") as well
as the standard "seven dirty words" and other language not suitable for
material intended to be in universal public distribution.
For bugs and security flaws we want public visibility, in the
sense of people discovering problems and perhaps even identifying fixes
to them; in this case short-term embarassment is worth it in return both
for higher quality code and (just as important) the public perception that
Netscape takes fixing bugs and security problems seriously, and is willing
to open its source code to public inspection for others to investigate.
This would be in essence an extension of the current "bugs bounty" program
for security flaws, which overall has been a plus for Netscape.
As for embarassing comments and the like, the most straightforward approach
to address this would be to have developers understand that they were "writing
for publication" and that each and every line of their code would likely
be viewed both by customers and (even more important) by their peers in
the developer community. Within the context of a full source code
strategy as outlined above, we could no longer treat source code as an
internal-only matter, but would have to exercise just as much care as we
(ideally should) exercise with released binaries and documentation.
This might require extra editing steps and code reviews, greater adherence
to consistent formatting conventions (at least within particular sets of
modules), and related actions.
"What about source code for technology
we include from others?"
Many of Netscape's products incorporate technology from other companies,
licensed in either source or binary form; how would we handle such technology
in the context of an overall strategy of distributing source code?
This depends on the particular licensing terms that have been or could
be negotiated with the technology supplier.
The most common case, at least initially, will be that our license with
the technology supplier constrains us to shipping only the binary form
of their code, and only embedded in the binary form of a Netscape product.
In this case we might still be able to supply our own source code for most
of a product, as long as we "wrapped" the supplier's code in a binary component
(e.g., a static or shared library) that could be called from our own code
and statically or dynamically linked into other components compiled from
our source code. (We could use our own interfaces as the API between
our source code and the binary component, not the supplier's interfaces;
this would address the case where the supplier's interfaces were not publicly
released or releasable, and would also avoid competing with the supplier's
own products if they sold them in the form of a toolkit.)
In some cases the supplied technology would already be or could be encapsulated
in a wholly separate binary component intended to be accessed by a public
API; good examples of this today are Navigator plug-ins bundled and shipped
with Communicator (e.g., the Cosmos plug-in for VRML). Here we could
possibly simply ship the separate binary component as we already do, and
we would most likely have no restriction on releasing source code for our
own components that make use of the supplier's component.
However in both the above cases the technology supplier (at least in
the current environment) would almost certainly object to their components
(even in binary form) being used to create derivative works, especially
derivative works distributed noncommercially. In those cases we would
have to make it clear to customers that they would need to license those
components separately from the original supplier, and the supplier would
have to agree to this arrangement; otherwise we could release only our
own source code, and then leave it up to the customer to find a substitute
for the omitted components.
But assuming a clever and active developer community working with Netscape
source code, this would quite possibly lead to the creation of substitute
technology for the original supplier's technology, a substitute that would
almost certainly be available under more favorable licensing terms.
Netscape could then potentially adopt the substitute technology instead,
or at a minimum could use its existence as negotiating leverage to seek
more favorable terms from the original supplier.
In the longer term, if our own source code strategy proves to be a success,
there may be technology suppliers willing to emulate it and release their
own source code as part of our source code distribution, especially if
appropriate licensing terms could be worked out and if we can show
them that this is ultimately in their interest and not just in ours (and
the customers), by providing them with new ways to make money as well.
This should be a major focus of the strategy, because (among other things)
outside developers adding features to Netscape products could in turn become
technology suppliers to Netscape, and we would need to ensure that they
would share in the rewards of the business.
"What about things in our source code that
expose future plans or proprietary techniques?"
Often source code contains material such as comments or incomplete or "hidden"
code (e.g., new APIs not publicly exposed) that could possibly give competitors
insight into our future plans; the code may also implement new and useful
techniques which could enable our competitors to duplicate product attributes
such as features and performance that we consider to be competitive advantages.
How can we distribute source code in the face of such concerns?
There are actually two general types of information at issue here.
First is information which is in the original source code but which gets
removed as part of the process of creating a binary run-time for
distribution; this includes comments, "#ifdef-ed" code which ends up being
removed by the preprocessor, and symbol tables and related information
that are typically stripped from the released binaries. Second is
information which remains, and by definition must remain, in the
binary run-time once built, namely the actual machine instructions or byte
codes (in the case of Java) which implement the program's functionality
(whether documented or not).
Although we think of the first type of information as being removed
as part of the conversion from source to binary form, there is no reason
in principle why such information (or at least much of it) couldn't be
removed as part of the process of creating a "sanitized" source distribution;
for example, the released source could be preprocessed to remove #ifdef-ed
code and all comments except those specially flagged for public release.
On the other hand, information that must remain in the binary run-time
can be obscured but can never be completely hidden. Our competitors
are perfectly capable of disassembling our binary code today and will be
just as capable of doing so as we use Java more extensively, whether it's
obfuscated or not. License prohibitions against reverse engineering
are like laws against intercepting cellular phone calls: a rational person
should assume that their private secrets are available to anyone willing
to expend the (relatively small) effort to obtain them, and given that
assumption they should modify their behavior accordingly.
This goes back to the point above about
"writing for publication". If we are really concerned about material
and information we don't want publicly released, then we need development
guidelines and review procedures to ensure that such material is not present
in released code (or never gets in the code in the first place).
If we really want to exert intellectual property rights over techniques
(as opposed to the actual code), then we need to do such things as filing
patent applications before publishing the code in question. (Again, neither
software patents nor trade secrets are needed as underpinnings for this
proposed source code distribution strategy; I assume only that we have
copyright protection for our source code, combined with license agreements
to assist in enforcing that protection.)
There is a larger question about what is appropriate for Netscape to
keep secret, and under what circumstances. Arguably we should not
be concerned about keeping secret general information about our long-term
strategies or general information about produce release schedules.
In the case of corporate strategy we actually want people to know this
information, as it strengthens our marketing message to organizations concerned
with strategic planning and making long-term commitments to vendors.
(Our problem is more often the opposite: that people typecast Netscape
as a "browser company" and don't actually know that we have a real strategy.)
As for release schedules, these are roughly guessable by anyone looking
at our beta releases and familar with past history and the overall scope
of work. (For example, historically Netscape has released new Navigator
and Communicator releases roughly every 10 to 12 months; thus an outsider
could make reasonable estimates, say to within a quarter, of release dates
for Communicator 5.0 or even 6.0.)
There is information which we want to take reasonable measures
to protect, for legal or competitive reasons; examples include information
on revenue and profit figures (prior to public release), mergers and acquisitions
being evaluated, strategic agreements being negotiated with other companies,
large sales deals in progress, and so on. However little if any of
this information is reflected in the actual source code.
"What about export control issues?"
So far I've assumed that Netscape would have compete discretion over whether
we wished to release its own source code or not, as well as over how much
of that source we would choose to release. However there is one key
area, namely security-related and cryptographic code, where Netscape is
and will almost certainly continue to be constrained in major ways regarding
distribution of binary and source code; given recent activity in the U.S.
Congress, it is even possible that those constraints will become even more
restrictive than they are today. It's therefore useful to review
how much freedom of action we are likely to have in this area, and how
that would affect any source code distribution strategy.
Under the current regulatory regime, Netscape is prohibited from exporting
from the U.S. or Canada software that implements strong cryptography (e.g.,
using greater than a 40-bit symmetric encryption key). Thus at a
mininum Netscape would be prohibited from exporting source code that implemented
such cryptography. (However we could distribute such source code
within the U.S. and Canada, at least for the present.)
However the restrictions are actually more onerous than that.
The U.S. government has traditionally refused to permit the export of products
in which the supplied weak cryptography could be easily replaced with strong
cryptographic implementations developed outside the U.S. This is
exactly why the source code for the SSL Reference Library (SSLRef) was
considered to be an export-controlled item with controlled distribution,
even though the source did not actually include any cryptographic code.
Therefore it's reasonable to conclude that even under the current regime
Netscape would not be able to export source code to our security library.
It's also possible that the U.S. government may decide to impose further
restrictions as part of recent attempts to regulate domestic use of cryptography
within the U.S. For example, it may be that Netscape will be prohibited
in the future from shipping any product unless it implements a key escrow
scheme of some type. Assuming that the escrow scheme is enforced
by the security library, we may be prohibited from distributing source
code for the security library even within the U.S. and Canada, on the grounds
that others could easily create a derivative work that disabled key escrow.
The ultimate question is where the U.S. government will "draw the line"
in terms of attempting to exercise control over the use of cryptography
by imposing restrictions on commercial software vendors. Given that
Netscape and other software vendors have only limited influence over the
future of cryptography regulations, if Netscape decides to pursue a strategy
based on source code distribution the best that we can do is simply to
distribute source code to the maximum extent permitted by relevant laws
and regulations both in the U.S. and worldwide.
"Wouldn't this lead to fragmentation of the
market, as with Unix?"
Suppose anyone could modify Netscape source code as they wished and in
essence create in a new "version" of any Netscape product; wouldn't we
be in danger of seeing our market fragmented by the appearance of multiple
incompatible and competing versions of products based on our source?
How could we prevent this "Unixification" of our market?
Part of the answer might be in source code license terms prohibiting
licensees (commercial or noncommercial) from breaking backwards compatibility
and interoperability and introducing new and incompatible APIs. However
the ultimate solution to the problem lies in ensuring that the interests
of all parties are aligned, and that preserving compatibility and interoperability
is a major goal of everyone involved in creating products based on Netscape
source.
Arguably the fragmentation of Unix occurred because the companies involved
were not interested in Unix and Unix-based software per se; rather they
were interested in selling computer hardware, and Unix was merely a convenient
operating system to run on that hardware. (See Mike Loukides's "Brief
History of UNIX" for more on this view.) In competing with other
hardware vendors using Unix, there was no inherent aversion to changing
the operating system in incompatible ways; in fact, companies had an active
interest in differentiating their systems from their competitors', and
modifying and extending Unix was an easy way to do that.
However in this case both Netscape and Netscape source licensees would
have an interest in seeing their software be used as widely as possible
(whether for monetary reward or ego boost or both), and the chances of
success for any new product based on Netscape source (whether produced
by Netscape or not) would depend on the degree to which those products
could "plug in" to the existing installed base of such products.
It would be neither in Netscape's interest nor those of our source code
licensees to introduce gratuitous incompatibilies. (Again, GNU and
Linux offer good examples regarding the ability to maintain a wide degree
of software compatibility and interoperability even in a more loosely-organized
development environment.)
It is possible that Netscape might lose some measure of control
over the evolution of its products in terms of the exact APIs, content
data formats, and protocols we use and support. However we do not
have complete control of these even today: We are constrained in terms
of protocol and content standards support by organizations such as the
IETF and the W3 Consortium, as well as by Microsoft's support of competing
standards; we are also constrained in terms of API support by our installed
base and our developer community.
In an environment of widespread source code distribution and licensing,
we would have to accept some short-term loss of control, in the sense that
the outside community of Netscape developers would be more able to influence
the direction of our product evolution, even to the point of rejecting
the Netscape way of doing particular things and converging around alternative
ways of doing the same thing. However we could and no doubt would
still retain a significant measure of control through the use of the Netscape
brand name and Netscape endorsement and promotion of particular standards.
And in the longer term we would gain greater control over the standards
important to us because we would have more allies in the standards wars
whose interests were at least partially aligned with ours; we would then
no longer have to try and match Microsoft "body for body" in representing
our interests in standards bodies.
"How could we coordinate outside developers
creating fixes and add-ons?"
As shown by the Communicator development effort, it is a far from trivial
problem to coordinate the efforts just of Netscape's own developers.
How could we possibly coordinate the efforts of potentially thousands of
developers worldwide who might be creating bug fixes, customized versions,
and add-on products all based on Netscape source code?
At first glance this would seem to be impossible. However there
is at least one example of a successful project involving distributed and
relatively loosely-coordinated development of software products arguably
at least as complex and functional as any of Netscape's products, namely
the project to create the Linux operating system and the body of free software
that runs on top of it. The Linux project offers many lessons on
how Netscape might potentially organize software development in the context
of the proposed source code strategy. These are discussed at greater
length in the paper "The
Cathedral and the Bazaar" by Eric Raymond, but some key ones can be
summarized here as follows, together with implications for Netscape if
we wished to pursue this strategy:
-
Properly organized and coordinated, distributed development can produce
more products faster and with higher quality than would be possible in
an isolated effort. "The developer who uses only his or her own brain
in a closed project is going to fall behind the developer who knows how
to create an open, evolutionary context in which bug-spotting and improvements
get done by hundreds of people." Substitute "software company" for
"developer" and you have a basic theme of this paper; my suggestion is
that this approach offers Netscape one way (and perhaps the only way) to
compete successfully with Microsoft without having a Microsoft-size budget.
-
Distributed development is jump-started and proceeds most rapidly when
there is an existing body of code in which developers can see the promise
of solutions to problems which interest them, and which developers can
use a base for their own work to solve those problems. One of Netscape's
major roles would be to provide this existing source code base initially,
and to continue to seed it with new contributions in the form of new products
with accompanying source code.
-
Higher-quality code can be generated faster when you can enlist other people
to do not only bug detection and reporting, but bug fixing as well; bug
fixers are in turn more motivated when you do frequent releases that incorporate
their fixes and enable them to see the fruits of their efforts. Netscape's
planned componentization strategy would better enable us to do more frequent
source releases to developers; however we would also need good mechanisms
to ensure that bug fixes from other developers are in fact incorporated
back into our source tree. (This problem is both easier and harder
than the current problem we have using the world as our beta test site:
On the one hand, developers with access to source would be much more likely
to not only find problems but also reproduce, diagnose, and fix them.
On the other hand, they would have a much higher expectation of having
their contributions taken seriously by Netscape; they would request or
even demand access to the actual Netscape developers working on the components,
and would be even more turned off than regular users if they were to receive
only an automatically generated reply to their communications with Netscape.)
-
The Internet and the collaborative tools built on top of it (email, newsgroups,
etc.) form an indispensable infrastructure for the coordination of distributed
developers, but you can realize the true promise of distributed development
only if you provide the proper social context for it, including having
development coordinators with the necessary social and communications skills
to "lead without coercion" and focus developers' energies into productive
channels. Thus to make a source code-based strategy work, Netscape
would have to put the proper effort into selecting the teams and team leaders
chosen to develop products according to this strategy. (As part of
a pilot test it may even be best to let teams decide for themselves if
they would like to work this way.)
It is important to note that there is no "free lunch" here: We could
not simply release source code, put a few newsgroups up, and expect distributed
development to magically self-organize; we would need to make a sustained
effort involving various people's time and attention in order to get a
distributed development effort to the point where it would produce results.
However I believe that the potential rewards could be worth the effort,
and that we could not necessarily achieve comparable results by continuing
current practices.
"Why would outside developers work on Netscape products
'for free'?"
I've spent a lot of space discussing how by distributing source code Netscape
would be able to take advantage of the talents of non-Netscape software
developers. But why would those developers want to work with Netscape
source code, especially those developers who are doing it noncommercially
and thus in a sense are working "for free"?
First, developers are in large part attracted to working on software
that holds the promise of helping them solve problems they themselves consider
significant. Netscape has created and should continue to create software
that addresses important problems dealing with Internet- and intranet-based
information, collaboration, and applications (in part because Netscape's
own developers consider these to be significant areas), and it is a reasonably
safe bet that other developers will find this software promising themselves
and worthy of working with, especially if they have access to the underlying
source code.
But once attracted to working with Netscape source code, what will keep
developers interested in doing so? The answers will vary depending
on whether the developers are doing commercial or noncommercial development.
Commercial developers will obviously be interested in some way to profit
financially from their work. Working with Netscape source code they
will have a variety of possible approaches open to them:
-
They could specialize in customizing Netscape software for particular customers
or vertical markets.
-
They could provide high-level product or developer support for customers.
-
They could create and sell add-on products, either independently or as
Netscape resellers.
-
They could license derivative works and related technology back to Netscape.
-
They could be hired by Netscape, either as contractors or as employees.
-
They could found companies that end up being acquired by Netscape.
About the only thing commercial developers could not do with Netscape
source code is found new software businesses "from scratch" totally unencumbered
by source code licensing restrictions; in other words it would be difficult
for them to become "the next Netscape" (or the next Oracle, or Microsoft,
etc.), at least by creating the same sort of software as Netscape and Oracle
and Microsoft are already known for. (But this is already difficult
for other reasons, and who today really thinks that the road to commercial
success is to develop yet another operating system, or relational database,
or web browser?)
For noncommercial developers the rewards would be different. They
would likely be motivated more by the ego reward of seeing their software
used by other people and praised by other developers. If starting
with Netscape source allows them to build more interesting software, and
if licensing terms are liberal enough to allow them to distribute that
software worldwide with minimal restrictions (as proposed above),
then it is very likely that they would be enthusiastic about working with
our code. It is even likely that they would agree to license provisions
permitting Netscape to reuse their work for commercial purposes, as long
as they could still distribute their own works, including source code,
on a noncommercial basis.
"What about technical support for customers
who modify source code?"
Providing technical support to Netscape customers is hard enough as it
is, especially given the extra burden of providing at least minimal technical
support to users who are not actually paying for technical support, whether
these are home or academic users reporting problems on newsgroups, or enterprise
users who are evaluating software and having trouble getting it working.
How could we possibly provide technical support in an environment where
any user might be running modified Netscape software (either modified by
themselves or acquired from other people)?
Traditionally companies providing source code to customers would "disavow
all knowledge" if those customers had problems in using the code; that
is, companies provided no formal technical support for products provided
in source code form, and customers were considered to have "voided the
warranty" if they were running customized versions of the products built
from modified source code. This is certainly one way Netscape could
handle the problem of providing technical support for source code products:
provide no support whatsoever.
However, if we intend to provide source code as a product instead
of just as a special case, then we must provide (or cause to be provided)
all the things customers expect to receive in a product, including technical
support in particular. How can we best do that? Here are some
possibilities:
-
We could provide technical support for customer-modified products (i.e.,
product versions built from source code modified by or on behalf of the
customer), but only if we could duplicate the same problem in the original
products.
-
We could provide technical support for major accounts with customer-modified
products as an extra-price option to such existing technical support programs
as Expert
Alliance and Expert-to-Expert.
-
For smaller accounts, especially ISVs, VARs, and systems integrators, we
could provide technical support for customer-modified products as an extra-price
option to existing developer support programs such as the DevEdge
Application Builder program.
-
We could authorize third parties to provide technical support for customer-modified
products; this would be analogous to the GNU model of fee-based technical
support through companies such as Cygnus
Solutions.
As part of a wide-ranging program to distribute source code, Netscape might
ultimately decide simply to out-source technical support altogether for
certain products, for example earlier releases of current products or products
no longer deemed key to Netscape's business.
Action plan
Suppose other people in Netscape, including Netscape management, agree
that we should at least consider a development, sales, and distribution
strategy for source code like that proposed in this paper; what should
we do next? Here is one possible three-phase approach to implementing
such a strategy:
-
Take advantage of the experience we've already had with source code licensing
and distribution, including the public distribution of the SSLRef
and IFC
source code, as well as any other private source code licensing deals that
we have concluded (or have considered) with other companies (e.g., SGI).
Did licensing source code provide any concrete benefits in any of these
cases? If so, what were they? If not, why not? What extra
work (if any) was required in distributing source code? What special
licensing terms and conditions were used? For those deals where Netscape
was paid for licensing source code, what types of pricing schemes were
used (e.g., one-time, continuing royalties, per-user)? Was source
code pricing consistent across deals? The previous examples of Netscape
distributing source code were to a large degree ad hoc and sui generis,
and not done as a part of any comprehensive strategy; nevertheless the
answers to these questions may be useful in determining how we might proceed
with a more wide-ranging strategy for source code distribution.
-
As a pilot for the strategy, consider releasing full or partial source
as part of the upcoming Gemini
developer releases, either DR1 this fall or DR2 next year. This
would be a controlled experiment to investigate possible payoffs of the
strategy as well as reveal any extra work that would be need to be done
to implement it more extensively.
-
Do long term planning for a possible full implementation of the source
code licensing and distribution strategy with the Xena client release,
followed by implementation of the strategy for future SuiteSpot servers.
Appendix
Acknowledgments
This paper was inspired by discussions on various Netscape internal product
development newsgroups about the implications of releasing future Netscape
software products written in Java, JavaScript, and HTML; of particular
interest to me were an article
by Jamie Zawinski in the Xena
and Magellan newsgroups, and an unrelated
article by Eric
Krock in the JavaScript newsgroup.
Special thanks go to two people who reviewed early drafts of this paper:
John Menkart, who helped with formulating
suitable licensing and pricing models, and Jamie Zawinski, who provided
useful information on software development according to the GNU and Linux
models, including a pointer to Eric Raymond's paper.
Revision history
-
0.7
-
Revised answer to the objection concerning exposure of proprietary material
in source code.
-
0.6
-
Made minor revisions and additions.
-
0.5
-
First complete draft. Rewrote introduction. Wrote rest of responses
to objections. Made minor revisions throughout.
-
0.4
-
Wrote action plan and more responses to objections.
-
0.3
-
Wrote responses to more objections. Refined the licensing and pricing
section. Added a disclaimer.
-
0.2
-
Tightened up the introductory material. Added more material on suggested
licensing and pricing. Wrote responses to the first few objections.
-
0.1
-
First draft. Fairly complete main argument, skeletal objections/responses
and proposed action plan.
Revised 11 November 1997
Frank Hecker
- hecker@netscape.com