Bradley M. Kühn
●Contact
●
Fediverse / Mastodon / Microblog
●
Blog
●
Interviews / Articles
●Software
●Résumé
(一)accounting
(二)advocacy
(三)agpl
(四)ai
(五)android
(六)apache
(七)apple
(八)apt
(九)artistic
(十)asterisk
(11)automotive
(12)autonomous
(13)award
(14)bilski
(15)canonical
(16)capitalism
(17)centos
(18)cla
(19)community
(20)compliance
(21)conferences
(22)conservancy
(23)copyleft
(24)copyright
(25)cow-orking
(26)cpp
(27)debian
(28)denounce
(29)development
(30)diversity
(31)emacs
(32)encryption
(33)enforcement
(34)exceptions
(35)faif
(36)fdl
(37)for-profit
(38)fosdem
(39)foss
(40)fsf
(41)gcc
(42)git
(43)gnome
(44)gnu
(45)google
(46)GPL
(47)gpl
(48)gpl-compatibility
(49)gpl-enforcement
(50)gplv3
(51)guadec
(52)ibm
(53)identica
(54)infringement
(55)java
(56)javascript
(57)jvm
(58)launchpad
(59)ldap
(60)lgpl
(61)libreoffice
(62)libreplanet
(63)licensing
(64)lindows
(65)linux
(66)llm
(67)maemo
(68)mail
(69)meego
(70)microsoft
(71)mobile
(72)moblin
(73)mono
(74)motorola
(75)mta
(76)murder
(77)mysql
(78)net-services
(79)nlp
(80)nokia
(81)non-profit
(82)np-complete
(83)open-core
(84)open-foam
(85)open-source
(86)oracle
(87)osi
(88)parrot
(89)patents
(90)perl
(91)perljvm
(92)permissive-license
(93)piracy
(94)podcast
(95)podjango
(96)poker
(97)politics
(98)postfix
(99)proprietary
(100)qt
(101)red-hat
(102)replicant
(103)requiem
(104)rhel
(105)rtlinux
(106)SCALE
(107)sco
(108)scotus
(109)security
(110)sexism
(111)sflc
(112)slicing
(113)social-justice
(114)software
(115)software-freedom
(116)speeches
(117)stet
(118)talks
(119)tcl
(120)teaching
(121)tech-press
(122)technology
(123)thesis
(124)tivoization
(125)trademarks
(126)trump
(127)ubuntu
(128)vizio
(129)voip
(130)xen
Powered by
A Very Old Fork of Jekyll
"Source Code" for this site
Where Are The Bytes?
Friday 11 June 2010 by Bradley M. Kühn
A few years ago, I was considering starting a Free Software project. I
never did start that one, but I learned something valuable in the
process. When I thought about starting this project, I did what I
usually do: ask someone who knows more about the topic than I do. So I
phoned my friend Loïc Dachary, who
has started many Free Software projects, and asked him for advice.
Before I could even describe the idea, Loïc said: you don't have
a
URL?
I was taken aback; I said: but I haven't started yet.
He said: of course you have, you'r
e talking to me about it, so
you
've started already
. The most im
portant thing you can tell
me
, he said, is Where are the bytes?
Loïc explained further: Most projects don't succeed. The hardest
part about a software freedom project is carrying it far enough so it
can survive even if its founders quit. Therefore, under Loïc's
theory, the most important task at the project's start is to generate
those bytes, in hopes those bytes find their way to the a group of
developers who will help keep the project alive.
But, what does he mean by “bytes”? He means, quite simply,
that you have to core dump your thinking, your code, your plans, your
ideas, just about everything on a public URL that everyone can take a
look at. Push bytes. Push them out every time you generate a few.
It's the only chance your software freedom project has.
The first goal of a software freedom project is to gain developers. No
project can have long-term success without a diverse developer base.
The problem is, the initial development work and project planning too
often ends up trapped in the head of a few developers. It's human
nature: How
can I spend my time telling ever
yone about what I'm
doing? If I
do that, when will I actually doa
nything?
Successful software freedom project leaders resist this human urge and
do the seemingly counterintuitive thing: they dump their bytes on the
public, even if it slows them down a bit.
This process is even more essential in the network age. If someone
wants to find a program that does a job, the first tool is a search
engine: to find out if someone else has done it yet. Your project's
future depends completely that every such search performed helps
developers find your bytes.
In early 2001, I asked Larry
Wall, of all the projects he'd worked on, which was the hardest.
His answer was quick: when I was d
eveloping the first version of
p
erl5,
Larry said, I felt like I
had to code completely alone and
just make it work by myself
. Of course, Larry's a very talented guy
who can make that happen: generate something by himself that everyone
wanted to use. While I haven't asked him what he'd do in today's world
if he was charged with a similar task, I can guess — especially
given at how public the Perl6 process has been — that he'd instead
use the new network tools, such as DVCS, to push his bytes early and
often and seek to get more developers involved
early.
Admittedly, most developers' first urge is to hide
everything. W
e'll release it when it's ready
, is often heard, or
— even worse — Our core team works so well t
ogether;
it'll just slow us down
to make things public now
. Truth is, this
is a dangerous mixture of fear and narcissism — the very same
drives that lead proprietary software developers to keep things
proprietary.
Software freedom developers have the opportunity to actually get past
the simple reality of software development: all code sucks, and usually
isn't complete. Yet, it's still essential that the community see what's
going on at ever step, from the empty codebase and beyond. When a
project is seen as active, that draws in developers and gives the
project hope of success.
When I was in college, one of the teams in a software engineering class
crashed and burned; their project failed hopelessly. This happened
despite one of the team members spending about half the semester up long
nights, coding by himself, ignoring the other team members. In their
final evaluation, the professor pointed out: Being a software
developer
isn't like being a fighter pilo
t
. The student, missing
the point, quipped: Yeah, I know, at lea
st a fighter pilot has a
wingman
. Truth is, one person, or two people, or even a small team,
aren't going to make a software freedom project succeed. It's only
going to succeed when a large community bolsters it and prevents any
single point of failure.
Nevertheless, most software freedom projects are going to fail. But,
there is no shame in pushing out a bunch of bytes, encouraging people to
take a look, and giving up later if it just doesn't make it. All of
science works this way, and there's no reason computer science should be
any different. Keeping your project private assures its failure; the
only benefit is that you can hide that you even tried. As my graduate
advisor told me when I was worried my thesis wasn't a success: a
negative result can be ju
st as compelling as a positive o
ne
. What's
important is to make sure all results are published and available for
public scrutiny.
When I
started discussing
this idea a few weeks ago, some argued that early GNU programs
— the founding software of our community — were developed in
private initially. This much is true, but just because GNU developers
once operated that way doesn't mean it was the right way. We have the
tools now to easily do development in public, so we should. In my view,
today, it's not really in the spirit of software freedom until the
project, including its design discussions, plans, and prototypes are all
developed in public. Code (regardless of its license) merely dumped
over the wall on intervals deserves to be forked by a community
committed to public development.
Update (2010-06-12): I completely forgot to mention
The Risks of
Distributed Version Control by Ben Collins-Sussman, which
is five years old now but still useful. Ben is making a similar
point to mine, and pointing out how some uses of DVCS can cause the
effects that I'm encouraging developers to avoid. I think DVCS is
like any tool: it can be used wrongly. The usage Ben warns about
should be avoided, and DVCS, when used correctly, assists
in the public software development process.
Note that pushing code
out to the public in the mid-1990s was substantially more arduous (from a
technological perspective) than it is today. Those of you who don't
remember shar archives may not realize that. :)
Posted on Friday 11 June 2010 at 16:31 by Bradley M. Kühn.
Comment on this post in this discussion forum conversation.
← Previous: Beware of Proprietary Drift
Next: SouthEast Linux Fest 2010 →
This website and all documents on it are licensed under a
Creative Commons Attribution-Share Alike 3.0 United States License
.
#include <std/disclaimer.h>
use Standard::Disclaimer;
from standard import disclaimer
SELECT full_text FROM standard WHERE type = 'disclaimer';
Both previously and presently, I have been employed by and/or done work for various organizations that also have views on Free, Libre, and Open Source Software. As should be blatantly obvious, this is my website, not theirs, so please do not assume views and opinions here belong to any such organization.
— bkuhn
ebb is a (currently) unregistered service mark of Bradley Kühn.
Bradley M Kühn
<bkuhn@ebb.org>