2010 07 21
From TheCommandLineWiki
Contents |
Feature Cast for 2010-07-21
(00:17) Intro
- Review of "The Stars are Right"
- http://www.boardgamegeek.com/boardgame/37696/the-stars-are-right
- This is a mythos themed game, inspired by the works of Lovecraft
- Funny artwork from John Kovalek
- The game mechanics are tricky at first
- There is a five by five grid of star tiles
- Each tile has one of a couple different designs on each side
- Like one to five stars, the moon in different phases, meteors, etc.
- You also have a hand of cards
- By discarding a card, you can move or flip the tiles
- You need to get certain alignments to place cards down
- Those cards, ones that are summoned
- Let you augment how you can change the sky
- Being able to put cards down also earns points
- Depending on what the cards are
- The game is entirely family friendly
- It lists the age as 12 and up
- I think that is entirely due to the initial rule complexity
- Once you get the hang of the rules
- I suspect the game goes myuch quicker
- And it becomes more fun as you can start digging into the strategy
- Since each player's turn changes the stars
- It is similar to some building games I've played
- Where you cannot always be sure a tactic will work by the time it is your turn again
(04:02) Listener Feedback
- From Andrew
- From Carey
(09:11) Hacker Word of the Week
(10:39) True Burden of Forking
- This is another thought that occurred to me reading "Here Comes Everybody" by Clay Shirky
- http://www.amazon.com/gp/product/1594201536?ie=UTF8&tag=thecommandl0a-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1594201536
- One of the models Shirky discusses is open source
- He contrasts its resistance to failure with firms
- Where predictions of failure forms resistance to even starting a project
- See Shirky pp. 245-247
- Shirky talks about how open collaboration
- Can more effectively and efficiently search through
- A space of probabilities, despite the high number of misses
- Each failure costs as close to nothing as makes no odds
- This leads to the conclusion that given enough people
- And the right tools to allow them to communicate and coordinate
- Failing fast and often proves to be an incredibly powerful approach
- I started thinking more specifically how open source lowers the cost of failure
- There is obviously the fact that money is rarely the primary motivator
- Open source projects are not really capital intensive
- So there isn't a pressure to cover initial investment
- I think it goes beyond that though
- Otherwise why would open source be so critical to ultimate success?
- Low financial cost isn't essential to open source
- Any number of online endeavors can use new cheap and free as in cost tools
- Being able to freely re-use code is a distinct advantage
- For lower level components, to can save a project quite a bit of effort
- In the failure case, new effort is then limited to the focus of an experiment
- Rather than also bearing the burden of building out common plumbing
- I started to wonder if this iterative, almost brute force approach
- Goes even further than that, not just to re-using some code
- But to how re-using an entire project could interact with this idea
- Of lowering cost of failure
- Re-use taken to a certain logical conclusion is completely forking an existing project
- Forking is the act of taking a copy of an open source project
- Then starting to change it in an independent direction
- Kind of like two species of birds descending from a common ancestor
- But changing after a few generations so that while they still bear a similarity
- They also are pretty obviously distinct varieties from each other
- Forking often happens for reasons similar to selection pressure
- Some set of developers may feel that a need is not being met
- And that re-using all of a project that is already very close
- Is an efficient way to make just those changes that achieve that under served requirement
- Forking is not usually undertaken lightly and often draws rather a lot of criticism
- I thought I'd try to work through the advantages and drawbacks of forking
- Especially with Shirky's thoughts on failure and experimentation in mind
- First, there is a potential upside to forking
- Despite the perceived stigma or problems of hiving of a new project from an existing one
- It encourages experimentation that the source project
- May not have been willing to pursue
- As I've explained, the cost of trying is kept cheap
- This is the right reason to fork
- Trying something incremental new, just a bit beyond the original code
- Or possibly even radically different but using the old code as a spring board
- Other externalities are wholly the wrong reason for forking
- Here I mean things that aren't part of trying something different in the code
- I think a lot of the criticism of forks comes from splits not inspired by an experimental spirit
- Very often forks occur because collaborators fail to get along
- Coding style or other aesthetics can very quickly drive a wedge between teammates
- Copying code and striking off in a new direction is an alternative
- To working through such non-technical disagreements to reach an accord
- Admittedly, sometimes all other means of addressing deep rifts are tried first
- I merely thinking it is instructive to try to categorize forks
- By the merits of their causes
- Rather than categorically state a fork is always a bad thing
- In the case of a fork that isn't genuinely an experiment
- It reverses the lowering cost of failure
- So I am more inclined to agree with the common wisdom in this case
- Forking without a clear technical difference re-introduces transaction costs
- There is a decision cost where there isn't a clear difference in the goals of two or more forks
- A potential user or worse contributor has to select between projects
- That otherwise are almost entirely identical
- It isn't obvious how backing one fork over another truly advances the code into new territory
- If such a fork fails, users may be stranded by a non-zero cost to migrate to the other fork
- For a developer, that cost is magnified
- Either by the cost of bring a contribution along when switching forks
- Where that is possible and acceptable
- Or re-building code where porting efforts isn't possible or may be frowned upon
- Either by the cost of bring a contribution along when switching forks
- I do feel I am over-emphasizing this to make a point
- I think that forking for any reason is unusual, that it bears a unconditional stigma
- I just wonder if there is a class of forks that is less deserving of this negativity
- In particular if the idea of experimentation is the focus
- And more critically the goal of a fork is very clearly stated
- In contrast to the original effort's focus
- BREAK
- Modern version control systems, using acyclic directed graphs, confuse things a little
- I had an online conversation with a couple of acquaintances a while back
- We were discussing github's very prominent use of forking
- The fellow with whom I was corresponding thought this was a bad idea
- He worried about the fracturing of code bases that are to readily forked
- I'll consider the consequences of those
- Bearing in mind Shirky's points on cheap experimentation
- In a moment
- Having spent quite a bit more time with modern version control
- In the form of both git for my personal projects
- And Mercurial for team development at my day job
- I think I have a better answer for this concern
- The line between forking code and merely branching it is getting blurred
- Branching traditionally has been structurally similar to forking
- But has almost always remained within the bounds of a project and its maintainers
- Cutting a branch is usually done with the intention of making smaller changes
- On the same starting version of some source code
- For instance, a branch is often made based on a labeled release of some code
- So that any bug fixes can be incrementally added onto that release
- But tracked very clearly so they can be forward ported to a future release
- Or even ported backwards to an even older release
- If the same or similar bug is discovered there
- Branches rarely focus on some more drastic change
- Though that is not unheard of, either
- Usually when that happens, some new goal is a change in future direction for a project
- Using a branch in that instance boxes up the risk for a big code re-write or change
- Given how git and Mercurial work, there isn't much difference
- Between a branch mechanically produced within a project
- And a fork, or external branch, that someone makes in a clone of a project's code
- The flip side of the ease of branching and forking with these tools
- Is the lowered cost of merging, re-integrating changes for whatever purpose
- They use a much more capable storage structure
- It is based on a graph which better models parallel changes
- Than the tree structure used by older tools
- They also store and track changes, not the state of files
- So that what are essentially patches that make up the nodes of the graph
- Can be much more capably stitched together to combine different branches and forks
- I think graph based source control tools lower the cost of experiments and failures
- Bringing it down to the personal scale
- That is why I think github makes forking so prominent
- So that there users can do so to experiment cheaply
- And share back any useful outcomes to the source project
- Or abandon any efforts that fail to bear interesting fruit
- What about outcomes for forks?
- Failure is the normal state of open source
- That is not a deep criticism of the model or its goals
- Rather it is an observation on how cheap and easy it is to start an open source project
- Any set of scripts or chunk of code that someone hacks together
- To initially serve their own immediate need
- Can very easily be shared out as open source
- There is good motivation for doing so
- That other developers with similar needs and interests
- Can amplify the original effort to spin up some new project
- To achieve success of some measure
- The burden is either to find contributors to help the project sustain
- Which can be more easily accomplished by opening the source and sharing
- Or to keep up enough motivation to keep developing alone
- Both depend quite a bit on locating or attracting dedicated users
- But I don't think that is always necessary
- Especially for a project where the creator or creators are motivated users, too
- But I don't think that is always necessary
- In the absence of use by anyone, pure users or self interested creators
- Code runs the risk of stalling out
- Once it has served its original need
- Lacking active users robs it of further opportunities
- To grow and keep evolving in interesting and useful directions
- For some projects, this evolutionary dead end is acceptable
- The software has served its purposes and it doesn't matter what becomes of it
- In other cases, even the original creator realizes the software
- Isn't what was intended or truly needed
- But the experience of building and failing was necessary
- To appreciate this lesson, perhaps even to use it in a future endeavor
- Very few projects reach a critical mass of users or contributors
- That see them thrust into wider awareness
- Most often equated with some level of success
- The point though is that the cost of trying is so cheap
- There is far less of a barrier to simply rolling up sleeves and coding
- For whatever legitimate reasons, if failure is the majority outcome
- How can you control for forking as a cause of any kind of failure?
- You can't because I don't think the presence of a fork
- Is enough in and of itself to deter interest
- Assuming that each fork is driven by a validly differing purpose
- I suspect when the difference between forks is less clear
- Let's say petty forks undertaken for less technical reasons
- Then that might do more to sap potential from both forks
- As it is less clear to potential users and hackers why to choose one or the other
- If a program's promise is very clear, enough to attract use and support
- I don't think a fork would necessarily diminish that
- A great enough potential and attraction, enough to succeed
- Is likely to carry over into each fork
- Or to survive in one and not the other
- If the difference in approach and goals cuts against whatever attracts that success
- I am less convinced that even the discussion of success and failure is all that relevant
- For reasons of the cheap cost of trying and trying again
- And because I don't think success is as important, as I'll discuss later
- BREAK
- The potential user base is infinite for open source and free software
- I don't think reasons for failure relating to
- Failure to attract enough users make much sense
- The cost to use for a user of open source is effectively zero
- That absent cost is a defining characteristic
- Maybe there is some tax in the form of mental fatigue of hopping between alternate projects
- That focus on the same utility or need
- Really there is no impediment to growing a user base
- Other than the ability to attract one solely on the merits of the project
- One of the main qualities of the internet is its growth
- Since their earliest days free software and open source
- Have been closely tied to the internet as a means of distribution
- Given that FOSS has been in the minority
- Since the highly visible commercialization of software
- The growth potential is enormous
- It is all upside, the Internet is full of potential converts to FOSS projects
- There are tons of users who may have never heard of them or FOSS as a category
- They could be convinced to use them just based on being made aware
- Many popular projects are increasingly being built on portable toolkits
- Which increase the area to which they can spread considerably
- But even leaving out reaching beyond the traditional Linux and BSD users base
- The growth of users on the internet, of people trying out Linux
- Means that there isn't a zero sum aspect to adoption
- I am thinking of what Cory has said about e-books versus paper books
- The market for paper books is saturated so traditional publishers
- Can only manipulate price and margin to change their degree of success
- For e-books, we are far from reaching all the potential readers
- So a more effective strategy is simple growth of the number of buyers
- And a lower price, like the often free cost of FOSS, supports that end better
- It would be nice to convince users of proprietary software
- To be more receptive to the benefits, large and small
- Of open software, as I've said
- But it may not always be necessary
- The growth of the internet means every day there are new people
- Looking for software to browse, email, instant message, post social messages
- Basically to share and communicate
- With new classes of applications, like social network and messaging clients
- The field is often even more open than with entrenched types like office, email
- As long as open tools are attracting some of those users
- Then there isn't any upper limit to scaling adoption
- Can a project really fail because that infinite potential is split?
- Or is it down to more of a failing to simply attract users in the first place?
- I don't think it is relative to other projects given there are more than enough users to share
- I don't think reasons for failure relating to
- There are many examples of success of comparable efforts, thought not technically forks
- Fedora vs. Ubuntu are both growing and thriving
- They are largely constituted of the same packages
- There are some technical differences
- In particular for people who are aware of package formats
- More so in the way the systems of configured and managed
- At times one may have slightly more advanced versions of particular packages
- But given how easy it is to update either to newer packages
- In the longer run that isn't a substantial difference
- Despite some peoples' fears, I don't really see evidence
- Of one distribution robbing the other for users
- In fact, the existence of other distros with further differences
- Tells me my thoughts on ever increasing potential users are credible
- Further, both Fedora and Ubuntu allow people to make their own remixes
- Many of these are pretty popular in their own right
- But again, not at the cost of impoverishing their parent distros of users
- There is a deeper split that predates these two, informs their precedents
- Both are evidence that the difference between RedHat and Debian
- Wasn't enough to kill off one at the expense of the other
- Or to weaken both to the point where neither succeeded
- RedHat has been able to chart considerable commercial success
- But remains committed to the core value of sharing Fedora now represents
- Debian has never been about commercialization
- Yet thrives to the point where Debian can be built on top of it
- Without draining it either of the interest it needs to keep chugging along
- Gnome vs. KDE represent a similar division in a high profile area
- I think the two most popular Linux desktops also demonstrate
- A pretty valid reason for splitting efforts like this
- At least back in the beginning
- KDE uses Qt, a widget toolkit that was not original compatible
- With either free software or open source
- Folks, primarily at the Free Software Foundation, were concerned about this
- If a non-free or non-open desktop became the popular choice
- Wouldn't it make it difficult for those interested in software freedom and open sharing
- To be able to run a desktop environment consistent with those principles?
- I am, of necessity, greatly simplifying this
- But as I understand it, it was the primary motivation for Gnome
- Which originally was an independent, new effort to build a desktop
- That was comparable in features and capabilities to KDE
- But released entirely as free software
- There certainly have been times when it felt like
- One desktop must win at the expense of the other
- Maybe that was tied into concerns over adoption of Linux
- Specifically for desktop computers, what most users of PC are interested in
- We seem to have grown past that point so that both projects are thriving
- There have even been efforts in the last couple of years
- To standardize some interfaces so that they can better interoperate
- That trend looks likely to continue and to improve for the foreseeable future
- I think the two most popular Linux desktops also demonstrate
- Fedora vs. Ubuntu are both growing and thriving
- BREAK
- If a project is still active, it is a success
- Sure, user count can encourage or discourage development
- But is that the sole arbiter?
- Or even the best?
- For me, as long as a particular bit of FOSS remains available
- And is still compilable against a current system
- That is good enough to be considered successful
- Certainly, the criteria for success are much lower
- Taking the market largely out of the picture
- There are often no real capital costs, so no pressure to generate a return
- The number of users needed to keep a project healthy
- Can often number in dozens, compared to the hundreds or thousands commercial efforts need
- I think we need to be very careful when open source is competing with proprietary offerings
- The browser share, in particular, can make it seem like any of the open browsers
- Could sink to a point where they ultimately will fail
- To be fair, Safari and Chrome have commercial backers
- And Mozilla has grown a considerable organization that is no doubt cash hungry
- I think the point of tracking browser share is to see the right kinds of pressure
- On Microsoft Internet Explorer which is just a horrid entrant
- Not necessarily because it is proprietary or from the Redmond giant
- Though that undoubtedly is part of it
- But really because the browser has such a lousy track record
- Dealing with security issues and keeping up with and supporting web standards
(32:37) Outro
- Contact me
- Email to feedback@thecommandline.net
- Web site at http://thecommandline.net/
- IM to command.line@skype
- Listener comment line is 240-949-2638
- http://twitter.com/cmdln
- http://identi.ca/cmdln
- I'd like to thank libsyn.com for AAC hosting and Wouter de Bie for MP3 hosting
- These notes and the show audio and music are covered by a Creative Commons license
- http://creativecommons.org/licenses/by-sa/3.0/us/
- Attribution, share alike

