<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Open Source Solutions for Small Business Problems &#187; 01. Open Source</title>
	<atom:link href="http://opensourcesmall.biz/category/book/01-open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://opensourcesmall.biz</link>
	<description>The living site of the book by John Locke</description>
	<lastBuildDate>Fri, 05 Dec 2008 23:00:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>Socialism, individualism, and open source</title>
		<link>http://opensourcesmall.biz/2008/11/socialism-individualism-and-open-source/</link>
		<comments>http://opensourcesmall.biz/2008/11/socialism-individualism-and-open-source/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 23:12:03 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[Economic Musings]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[economics]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=283</guid>
		<description><![CDATA[I just heard a Republican pundit on the radio talking about how Republicans are supposed to stand for individual efforts over taking care of others, and small government rather than large. He posited that Republicans had lost the election because they hadn&#8217;t adhered to these core values. A colleague who sounds a bit upset at [...]]]></description>
			<content:encoded><![CDATA[<p>I just heard a Republican pundit on the radio talking about how Republicans are supposed to stand for individual efforts over taking care of others, and small government rather than large. He posited that Republicans had lost the election because they hadn&#8217;t adhered to these core values.</p>
<p>A colleague who sounds a bit upset at last week&#8217;s results twittered a link to a <a href="http://yedies.blogspot.com/2008/11/amerika-goes-socialist.html">blog post</a> that accuses us of being &#8220;sheeple&#8221;, and going down the path of socialism, and apparently the author believes this will cause our country to collapse. The tail end of the McCain/Palin campaign hurled the Socialism epithet as well. Other colleagues have been sending cartoons of trick-or-treaters collecting candy on behalf of their friends who are <a href="http://community.mccainspace.com/kickapps/_Trick-or-Treat/photo/1992873/41158.html">&#8220;too lazy&#8221; to trick-or-treat</a>.</p>
<p>There must be some fundamental difference in the way people see the world. I hear these things, and several thoughts come to mind: (warning: long, rambling unedited rant ahead)</p>
<ul>
<li>We&#8217;re facing some awfully large problems. Sub-par health-care system. Failing education system. Crumbling transportation infrastructure built around gas-guzzling cars as the cost of oil goes up. Failure of the free market to regulate itself. It strikes me that these are all problems we need to solve together, not leave to the laissez-faire system we&#8217;ve had that have rigged the playing field towards the rich, redistributing our country&#8217;s wealth to the very top.</li>
<li>Why does the word Socialism have such negative connotations for the right wing? Is it just because it was part of the USSR&#8217;s name? Most of Europe has socialist programs in place, resulting in much better health coverage and a social safety net to help reduce homelessness.</li>
<li>The word &#8220;lazy&#8221; is used as a broad brush to dismiss the efforts of anybody who hasn&#8217;t reached some level of success, often by people who are struggling themselves. I&#8217;d argue that people at the bottom of the pay scale, working 2 minimum-wage jobs and barely scraping by, are anything but lazy. Opportunity is capricious, and not evenly distributed.</li>
<li>Open Source provides a proof-of-concept that illustrates that we&#8217;re better off working together to solve our problems, rather than keeping our solutions close to our chest and not sharing with our neighbors.</li>
</ul>
<p>Us versus them</p>
<p>Our country was founded with a common enemy. For many people, it seems that patriotism depends upon having an external enemy. First the Brits. More recently, the Nazis and Japan, and then the Soviet Union. Now, it&#8217;s terrorism, along with illegal immigrants.</p>
<p>But Franklin Roosevelt, at his inauguration in the midst of the Great Depression, famously said &#8220;the only thing we have to fear is fear itself—nameless, unreasoning, unjustified terror which paralyzes needed efforts to convert retreat into advance.&#8221; And indeed, that is exactly what we fear today&#8211;terror. We&#8217;ve declared war on it, to the detriment of our civil rights and our moral standing in the world.</p>
<p>I think many people have transferred their fear and uncertainty of their own economic circumstances to this external threat of terrorism. But our real enemy, both here and abroad, is poverty and an unwillingness to work together in the face of much larger looming disasters, such as peak oil, climate change, water and energy shortages, overpopulation, mass extinctions. Instead of dealing with these issues, we&#8217;re blaming others for our problems.</p>
<p>I fail to see how the problems we face in the world are all because of terrorists, Democrats, or lazy people. I would argue we have terrorists because we have poverty, and hugely imbalanced distribution of wealth. If we don&#8217;t deal with those issues, we&#8217;ll surely see more terrorism in the future.</p>
<p>The individualist end game</p>
<p>Time is running out on many fronts. The sheer size of our population is putting a strain on the natural systems of our planet on which we&#8217;re completely dependent. Yet we squabble on how to divide up the planet, and those who play the dirtiest have long been winning.</p>
<p>In economics, there&#8217;s a distinction made between <a href="http://en.wikipedia.org/wiki/Rivalry_(economics)">rivalrous and non-rivalrous resources</a>. Rivalrous resources are those that can only be used by one person at any given time. Non-rivalrous resources are generally things that can be used by many at the same time. For example, my backpack is rivalrous&#8211;if you take it from me, I don&#8217;t have it anymore. A song is non-rivalrous&#8211;I can sing &#8220;Happy Birthday&#8221; without taking that away from you. Or at least, I should be able to&#8230;</p>
<p>In our current economic system, we have made more and more things rivalrous, at least in our legal system. We have carved up our land and made the vast majority of it private. We have granted patents on our very genes. We have allowed corporations to claim ownership of drinking water and charge people for access. We have companies whose sole purpose is to own a patent portfolio and make money off the use of ideas, whether or not other people came up with the same idea independently.</p>
<p>If you&#8217;re an individualist, you might see these things as capitalism at work, and the way it should be. But this is really a short-sighted view. Taken to the ultimate result of more and more people fighting over less and less, and you end up with situations like Rwanda in the 90s. According to Jared Diamond, one of the biggest factors leading up to the genocide was population-pressure&#8211;the population density had reached a level not seen anywhere else in Africa. Sons were fighting over postage-stamp lots of land to have something they could grow food on, as fathers divided the land into ever smaller bits. There were no shared spaces left, no mental buffers, not enough land to support the people. The rate we&#8217;re exhausting our planet&#8217;s resources, we risk a similar fate.</p>
<p>We&#8217;ve been steadily turning our common wealth into private wealth, redistributing wealth to a tiny few, leaving not enough for everybody else. We&#8217;ve been spending resources like oil that have taken millions of years to accumulate in a few generations, polluting our seas and soils, shipping our waste anywhere out of sight, and seeing all of this as somebody else&#8217;s problems.</p>
<p>Our country was founded on the principles of working together in the face of a common enemy. Ben Franklin is full of relevant quotes: &#8220;We must hang together, gentlemen&#8230;else, we shall most assuredly hang separately.&#8221; The biggest problem is that while these big companies take, take, take from our environment and people all to maximize their own profits, they&#8217;re stealing the resources everybody else will need in the long run, and socializing the true costs of them doing business.</p>
<p>Scarcity versus abundance</p>
<p>Ironically, the way out of this mess is to change perspectives and realize we really are blessed with tremendous resources. Among the largest, most under-utilized resource we&#8217;ve got are millions of smart people locked up doing menial work as cogs in the machinery of these big corporations. We&#8217;ve largely moved slavery out of agriculture into minimum-wage jobs across the country, and lower-wage jobs abroad. The term &#8220;wage slave&#8221; is not far off the mark. Prices of everything has been spiraling up while wages have flat-lined. In the past generation, the cost of buying a house has gone up by a factor of ten, while wages have doubled. Yet more people have bought houses than ever before, and we now see that it was mostly on borrowed money they couldn&#8217;t possibly pay back.</p>
<p>You hear the right wing complaining about big government, and how liberal policies reward people for not working. Our policies say a lot about what we value, and just about every decision congress makes benefits some people while penalizing others. We need to get a lot more strategic about our policy-making, and align those policies to address the big problems we&#8217;re facing&#8211;a health care crisis, global warming, deforestation, peak oil, the financial crisis, and more. If our most abundant under-utilized resource is brainpower, let&#8217;s make some policy changes that rewards using those resources, while penalizing the use of the natural resources we&#8217;re quickly exhausting.</p>
<p>We need to find ways of penalizing companies that consume natural resources and burden our systems with waste. We need to find ways of rewarding smart, responsible people and companies who help reduce waste in the system.</p>
<p>So how do we make this happen?</p>
<p>Let&#8217;s go back to the basics. What does everybody need? Food and shelter, obviously. Today, health-care needs to be a right&#8211;we&#8217;re a wealthy enough country that it&#8217;s absurd people have to choose between food and medication they need to treat and prevent a health issue. Beyond that, people need opportunity, and motivation. For far too long, our policy has been to motivate through fear. Make people afraid they won&#8217;t have enough food or have a place to live, and they&#8217;ll do drudgery work to avoid that. But it&#8217;s hard to give creativity free reign when you&#8217;re trying to scrape together the basic things you need to survive. Too many of our people are in exactly that position. And we need their help solving the bigger problems.</p>
<p>In fact, some of our biggest problems are caused by exactly this issue&#8211;people not having adequate food or shelter. Terrorists come from places where the future is bleak, where people aren&#8217;t secure that they&#8217;ll have a safe place to live and enough to eat, let alone make any positive contributions. But there&#8217;s always an opportunity to be destructive if your situation is dire.</p>
<p>Now, as much as I&#8217;ve been railing against big business, I do think business is the answer. We need to re-align our policies to favor small businesses, and lots of them, to power our way through this mess. Small businesses need to be part of their communities&#8211;they can&#8217;t just take their jobs to the lowest bidder. Small businesses are much more entrenched in location, and able to make contributions to help their communities. Small businesses provide jobs, solve multiple problems, and are able to think about things beyond merely satisfying their shareholders&#8217; greed&#8211;they are able to optimize their business to fit in their part of the economic ecosystem, rather than doing whatever it takes to maximize profits. And small businesses succeed by recognizing that others need to succeed too.</p>
<p>The current barriers to people creating small entrepreneurial businesses that solve real problems are many:</p>
<ul>
<li>A workforce trained to be wage slaves, rather than thinking, and making decisions, for themselves.</li>
<li>Crushing costs of doing business: payroll taxes, health care, business operational overhead that is a high cost of doing business.</li>
<li>Lack of knowledge/experience in creating a business. Very few people who start a business have done it before, and until you&#8217;ve started a business, it&#8217;s hard to understand the magnitude of the task.</li>
<li>Money. It takes money to get started. It takes money to hire people, provide training, lease space, buy equipment, get insurance, handle bookkeeping and taxes, and obtain licenses, let alone buy the raw materials that become your product.</li>
<li>Time management. If you&#8217;re a service business, you need to have enough billable hours to cover your costs and make a profit. If you&#8217;re a product business, you need to create or manage your products. You need to devote some of your time to marketing and sales before you make any money at all. You need to divide your time effectively between doing the stuff you get paid for, letting the world know you exist, developing the key relationships with partners and vendors and customers, and handling all the little stuff that needs to get done to keep the business running.</li>
</ul>
<p>The bottom line is, nobody can do all of this alone. To succeed in business, you need help, and lots of it. You need customers who will spread the good word. You need vendors to help with all the operational aspects of your business. You need employees to do the actual work of your business. You need competitors to prove to the marketplace that your product or service is valuable.</p>
<p>So that&#8217;s a very long-winded way to get to the point that the vast majority of businesses do not have a monopoly on their product, and do not need &#8220;Intellectual Property&#8221; (IP) protection to be successful.</p>
<p>Venture Capitalists are always looking for IP: patents, copyrights, trade secrets, or some element that gives a company an advantage over every other potential competitor in the market. They need this because the venture system is based on home runs&#8211;they expect that out of 10 businesses, 7 will fail, 2 may break even, and 1 will be successful enough to cover the losses of the other businesses. They don&#8217;t know which business will be that home run, so they&#8217;re going to invest in the businesses they think stand the best chance. </p>
<p>I&#8217;ve spoken with hundreds of people who think their idea is unique, and they don&#8217;t want to tell you about it because you might steal it and make a ton of money&#8211;or at least be a competitor. The problem is, there are lots of good ideas, and many people come up with very similar ideas independently&#8211;the real shortage is the talent to execute those ideas, turn them into a viable business.</p>
<p>One of my biggest challenges as an early open source solution provider was having my potential customers take my solutions seriously. After all, if the software is free, how can it be any good? And if it avoids vendor lock-in, why am I the only one proposing it while they&#8217;ve got a dozen vendors pitching Microsoft or Intuit solutions?</p>
<p>While the idea behind my business is wide open, and there&#8217;s no prohibitive barrier to competitors setting up shop and doing exactly the same thing, our business is succeeding on execution, on the talent of my employees. It doesn&#8217;t matter what your idea is&#8211;what matters is whether you can bring it to market.</p>
<p>Systems thinking</p>
<p>To wrap this long meandering post up, we can no longer afford to run businesses that maximize a single factor (profit) at the expense of everything else (people, environment, waste, the future). We need to start optimizing for all critical factors. Our products and businesses need to account for the full impact of what we&#8217;re doing, and if it doesn&#8217;t make the world a better place in some small way, it shouldn&#8217;t continue to exist.</p>
<p>Businesses don&#8217;t exist in a vacuum. Businesses can serve a highly constructive role in our society, and help address all of the major challenges we face. But we need to adopt the Unix architecture, create them as small pieces loosely joined, not big monolithic monsters that crush everything in their path.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/11/socialism-individualism-and-open-source/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TLLTS vs. TWIT: Linux support slam-a-thon</title>
		<link>http://opensourcesmall.biz/2008/07/tllts-vs-twit-linux-support-slam-a-thon/</link>
		<comments>http://opensourcesmall.biz/2008/07/tllts-vs-twit-linux-support-slam-a-thon/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 23:29:00 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[04. Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[podcasts]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=252</guid>
		<description><![CDATA[The Linux Link Tech Show (TLLTS) has a great segment dissecting the criticisms/wild flames put forth on a series of shows on the TWIT network. Wanted to add a couple comments missing from their discussion. First of all, the Mac Break Weekly show apparently spends some time bashing the open source community, calling out Drupal, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tllts.org/dl.php?episode=253">The Linux Link Tech Show</a> (TLLTS) has a great segment dissecting the criticisms/wild flames put forth on a series of shows on the <a href="http://twit.tv/">TWIT network</a>. Wanted to add a couple comments missing from their discussion.</p>
<p>First of all, the Mac Break Weekly show apparently spends some time bashing the open source community, calling out Drupal, and how difficult it is to solve &#8220;simple&#8221; problems like uploading images for blog posts. In practically the same breath, the hosts claim that the open source community never has any innovation behind it. Irony drips:</p>
<ul>
<li>In the world of content management systems (CMSs), most of the innovation starts in open source projects these days, and Drupal is at the cutting edge of this with its powerful system of taxonomies, and hundreds of add-ons freely available.</li>
<li>I can think of a grand total of 2 proprietary CMSs that have anywhere near as widespread use as most of the open source CMS systems. One has turned open source itself: Movable Type. The other is Sharepoint, and it&#8217;s widespread because Microsoft has shipped it out on lots of its server products.</li>
<li>Complain about usability all you want, but name a proprietary product as powerful as Drupal, that&#8217;s easier to install, administer, and configure.</li>
<li>The TWIT.tv site itself is running on Drupal.</li>
</ul>
<p>So let&#8217;s talk a little about innovation. While Photoshop may still dominate the world of graphic design, but the lines aren&#8217;t so clear when it comes to animation. The <a href="http://www.blender.org/">Blender project</a> recently released its second short animated film, <a href="http://www.bigbuckbunny.org/">Big Buck Bunny</a>. While you might argue about the strength of its story, you cannot deny that the technical effects are as stunning as any major animated film coming out from the big studios. And it was created by 7 people in 9 months, using open source software. Even the big studios like Pixar, Dreamworks, and Industrial Light and Magic rely on open source software to deliver their magic, such as CinePaint, POVray, and <a href="http://www.linuxmovies.org/software.html">several others</a>.</p>
<p>On the subject of innovation, <a href="http://www.groklaw.net/article.php?story=20080710131440951">KDE4 is breaking new ground and stirring up controversy</a>, laying a bedrock that promises the ability to do things beyond the standard &#8220;Desktop&#8221; paradigm that was invented over 30 years ago and we&#8217;ve all used ever since. Meanwhile, the GNOME team is <a href="http://live.gnome.org/OnlineDesktop/Vision">working on creative ways to embed web applications into your desktop</a>.</p>
<p>But the real innovations of the open source community are all a few layers deeper in the application stack, all the plumbing that powers the Internet. Microsoft itself borrowed its early networking stack from BSD, one of the earliest open source operating systems. Domain Name Service (DNS) and email were first implemented on the Internet using open source software (BIND and Sendmail).</p>
<p>The open source community tends to snicker whenever Apple claims to be innovative. Its core &#8220;innovations&#8221; were all invented somewhere else:</p>
<ul>
<li>The Mac Desktop interface borrowed heavily from Xerox PARC labs</li>
<li>OS X uses BSD under the hood</li>
<li>&#8220;Spaces&#8221; were in use in Unix systems for a decade before they arrived on the Mac</li>
<li>The &#8220;Time Machine&#8221; functionality in Leopard is standard in many source code management tools</li>
</ul>
<p>To its credit, Apple polishes these features better than anybody else, making them easier to find and use by normal people. But many, if not most of its innovations come from somebody else.</p>
<p>Read <a href="http://opensourcesmall.biz/archives/2008/07/how_open_source_support_is_different/">the previous post</a> for more discussion about Linux support.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/07/tllts-vs-twit-linux-support-slam-a-thon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Open Source support is different</title>
		<link>http://opensourcesmall.biz/2008/07/how_open_source_support_is_different/</link>
		<comments>http://opensourcesmall.biz/2008/07/how_open_source_support_is_different/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 23:26:59 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[02. Servers]]></category>
		<category><![CDATA[04. Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[podcasts]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=255</guid>
		<description><![CDATA[I started writing a response to a discussion in the latest &#8220;Linux Link Tech Show&#8221; episode, but ended up with something far too long, so I&#8217;ve split it up into 4 posts. The next post is about the TLLTS vs TWIT debate, and introduces this set of post. The previous two are about open source [...]]]></description>
			<content:encoded><![CDATA[<p>I started writing a response to a discussion in the latest &#8220;<a href="http://www.tllts.org/dl.php?episode=253">Linux Link Tech Show</a>&#8221; episode, but ended up with something far too long, so I&#8217;ve split it up into 4 posts. The next post is about <a href="http://opensourcesmall.biz/archives/2008/07/tllts-vs-twit-linux-support-slam-a-thon/">the TLLTS vs TWIT debate</a>, and introduces this set of post. The previous two are about open source support&#8211;a <a href="http://opensourcesmall.biz/archives/2008/07/an-example-of-open-source-support/">true story of a support incident</a> I had, and <a href="http://opensourcesmall.biz/archives/2008/07/the-unwritten-rules-of-open-source-support/">the unwritten rules of open source support</a>. In this post, I analyze the fundamental differences between Windows, Apple, and Linux when it comes to support.</p>
<p>Dann and Linc had a quite spirited debate about the merits of having a company hire low-end tech support with scripts (Dann) versus having an experienced, savvy, tech professional able to really solve the user&#8217;s problem (Linc). Dann&#8217;s point was that it can easily be more cost-effective for both the support company and the end user to go straight to reinstalling a system if rebooting doesn&#8217;t solve the user&#8217;s problem, while Linc seemed to think a savvy tech person could get to the root of the issue much quicker, and brought up the point that there&#8217;s a cost to the frustration of users being put through the whole front-line support nightmare.</p>
<p>I&#8217;d suggest the situation is even more complex than that, but it also differs greatly between the open source projects and proprietary operating systems. First, let me make a bold statement:</p>
<p><strong>Linux support is far better than Windows or Mac.</strong></p>
<p>But it also has a completely different set of rules. Learn those rules, and you&#8217;ll be able to solve your problems more satisfactorily than it&#8217;s possible to do in the proprietary world. Let&#8217;s talk about these differences, looking specifically at a who, where, what, and how long.</p>
<p><strong>Who can help with your problem?</strong></p>
<p>Let&#8217;s take a look at who can help with your problem:</p>
<table border="1">
<tr align="left">
<th>Level of support</th>
<th>Windows</th>
<th>Mac</th>
<th>Linux</th>
</tr>
<tr valign="top" align="left">
<td>Very basic help, no charge</td>
<td>Friends<br />
Family computer guy<br />
Newspaper columnists<br />
Web Forums</td>
<td>Friends (fewer than Windows)<br />
Family computer guy<br />
Mac User groups<br />
Web Forums</td>
<td>Friends (if you know any)<br />
Local Linux User groups<br />
Web forums<br />
Mailing lists<br />
Developers on main applications or distributions</td>
</tr>
<tr valign="top" align="left">
<td>Paid support</td>
<td>Local IT consultant<br />
Franchises like Geek Squad<br />
Microsoft, application companies
</td>
<td>Mac consultant<br />
Apple Genius Bar
</td>
<td>Linux consultants (like Freelock)<br />
Distribution companies (Red Hat, Novell, Canonical, others)<br />
Linux support companies (SpikeSource, SourceLabs, etc)<br />
Application companies (SugarCRM, MySQL/Sun, Command Prompt)<br />
Developers
</td>
</tr>
</table>
<p>The bottom line here is that while you probably know fewer people personally who can help you with Linux, there are more options for commercial support, and you can reach people who can do more to solve your problem for free, than you can with either Mac or Windows.</p>
<p>The fundamental reason for this is that anybody can read the raw source code of any open source product out there, and with enough skill and talent, can solve your problem without needing to pay anybody for the right to do so. In the proprietary world, only one company can help beyond a certain point: for Windows problems, that&#8217;s Microsoft. For problems in an application, it&#8217;s the application developer.</p>
<p>So the next question is:</p>
<p><strong>Where can you get help?</strong><br />
Again, let&#8217;s compare the options:</p>
<table border="1">
<tr align="left">
<th>Type of problem</th>
<th>Windows</th>
<th>Mac</th>
<th>Linux</th>
</tr>
<tr valign="top" align="left">
<td>Very basic usage help</td>
<td>Google<br />
Friends/family<br />
Forums<br />
IT consultants<br />
Seminars<br />
Paid support from vendor</td>
<td>Google<br />
Friends/family<br />
Forums<br />
Mac consultants<br />
Seminars<br />
Paid support from vendor</td>
<td>Google<br />
Friends/family<br />
Distribution Forums<br />
Distribution mailling lists<br />
IRC<br />
Linux consultants<br />
Seminars<br />
Paid support from dozens of companies</td>
</tr>
<tr valign="top" align="left">
<td>Hardware problems</td>
<td>Google<br />
IT consultants (may or may not be able to help)<br />
Microsoft<br />
Hardware vendor</td>
<td>Google<br />
Mac consultants (may or may not be able to help)<br />
Apple<br />
Hardware vendor</td>
<td>Google<br />
Linux consultants (may or may not be able to help)<br />
Distribution paid support (Red Hat, Novell, Canonical)<br />
Hardware vendor (support for many vendors is improving)<br />
Kernel developer<br />
Linux users with the same hardware<br />
Application developers for applications that use that hardware</td>
</tr>
<tr valign="top" align="left">
<td>Bug in operating system</td>
<td>Microsoft</td>
<td>Apple</td>
<td>RedHat<br />
Novell<br />
Canonical<br />
IBM<br />
HP<br />
Sourcelabs<br />
Many other independent developers</td>
</tr>
<tr valign="top" align="left">
<td>Bug in application</td>
<td>Application vendor</td>
<td>Application vendor</td>
<td>Linux consultant<br />
Developer<br />
Application vendors (often more than one can help)</td>
</tr>
<tr valign="top" align="left">
<td>Bug in interaction between applications</td>
<td>You&#8217;re screwed. Report it to both vendors and hope they will work it out.</td>
<td>You&#8217;re screwed.</td>
<td>Report it to both applications, and get guidance on how to address the issue.<br />
Hire a developer to create a workaround.<br />
Hire somebody to work with each application to integrate a real fix.</td>
</tr>
<tr valign="top" align="left">
<td>Help switching to another application</td>
<td>Application vendor (and you may have to pay them dearly)</td>
<td>Application vendor (and you may have to pay them dearly)</td>
<td>Application vendor, either old or new<br />
Any application that uses the same open format<br />
Any developer with knowledge of the underlying format</td>
</tr>
</table>
<p>The main point of the table above is that in the proprietary world, the harder your problem is to solve, the fewer people can help you solve it. You quickly get down to one place to go, and if it&#8217;s in the operating system, it might be expensive or not possible to fix. In the open source world, it&#8217;s nearly the opposite case&#8211;it can be harder to find the simple quick answer to your question, but the harder and deeper your problem, the more places you can go to get help.</p>
<p>Where do you look for help first? This is the single stumbling block for most otherwise tech-savvy users new to Linux. To learn Windows or Mac you can take a class, talk to neighbors and friends, and find lots of very low-end help that way. For Linux, unless you&#8217;re friends with some hard-core geeks, you need to go online to find help. Once you&#8217;re there, it really depends on where your problem lies.</p>
<p>For just figuring out how to use a system, go to the forums for your distribution. The Ubuntu forums are a great place to ask general questions. Be specific about what you&#8217;re trying to do and you&#8217;re more likely to get help. Remember that this level of support is free, and people helping you are volunteering their time and knowledge. While you&#8217;re there, see if you can answer somebody else&#8217;s question&#8211;the more help you give, the more you&#8217;ll get in return.</p>
<p>The other fantastic place to go for help, especially for quick questions, is IRC. IRC is a system that provides chat rooms and instant messaging. Most open source projects with any community behind them have a chat room on irc.freenode.net. Install an IRC program like Chatzilla, Konversation, Pidgin, or any number of others, connect to irc.freenode.net, pick a nickname to use, and join the channel for the program or distribution you&#8217;re having trouble with. Ask your question nicely, and if you don&#8217;t get a response immediately, keep your chat program open for a few hours&#8211;not everybody is watching the channel every minute.</p>
<p><strong>What kinds of problems can you solve?</strong><br />
Let&#8217;s look at the same types of problems as before, and look at the resolutions:</p>
<table border="1">
<tr align="left">
<th>Type of problem</th>
<th>Windows</th>
<th>Mac</th>
<th>Linux</th>
</tr>
<tr valign="top" align="left">
<td>Very basic usage help or problems</td>
<td>Reboot.<br />
Lots of good help available: documentation, classes, seminars, tutorials, books</td>
<td>Some help available: documentation, classes, seminars, tutorials, books</td>
<td>Same types of help available, but far less widespread.<br />
In many cases, the software interfaces aren&#8217;t as polished, and the help content is more menu- and feature-oriented than task-oriented&#8211;they explain the options, without telling you how to do what you&#8217;re trying to do.
</td>
</tr>
<tr valign="top" align="left">
<td>Hardware problems</td>
<td>Obtain driver from the vendor, and install.<br />
Hardware vendors almost universally provide support for Windows.
</td>
<td>If it&#8217;s supported by Mac, install the driver. If it&#8217;s not supported, you&#8217;re out of luck. Most external devices are supported on the Mac. Internal devices, you have far less choice than Windows or Linux.</td>
<td>More and more devices have manufacturers providing Linux support. Many devices have solid drivers written by the Linux community, without help from manufacturers. A few devices have no Linux support whatsoever. Usually if you can&#8217;t get it working in Linux, it&#8217;s either brand new, or there&#8217;s a legal reason it hasn&#8217;t been done yet. Do your homework before you buy, and only buy hardware others have gotten working in Linux.</td>
</tr>
<tr valign="top" align="left">
<td>Bug in operating system</td>
<td>Wait for a patch or service pack, cross your fingers and hope they fix it<br />
Get a premium support contract, and pay Microsoft to fix your bug (note: even with the best support package, they may not do this for you)</td>
<td>Wait for a new release of the Operating system</td>
<td>Report a bug, wait for the next release<br />
Hire a developer to fix it<br />
Find other people affected by the bug, and pool your resources to fix it</td>
</tr>
<tr valign="top" align="left">
<td>Bug in application</td>
<td>Report it to application vendor, wait for them to fix it (or pay them to fix it)</td>
<td>Report it to application vendor, wait for them to fix it (or pay them to fix it)</td>
<td>Report it to application vendor, wait for them to fix it (or pay them to fix it)<br />
Hire a developer to fix it yourself</td>
</tr>
<tr valign="top" align="left">
<td>Bug in interaction between applications</td>
<td>You&#8217;re screwed. You&#8217;re completely at the mercy of one or both vendors.</td>
<td>You&#8217;re screwed.</td>
<td>Report it to both applications, and get guidance on how to address the issue.<br />
Hire a developer to create a workaround.<br />
Hire somebody to work with each application to integrate a real fix.</td>
</tr>
<tr valign="top" align="left">
<td>Help switching to another application</td>
<td>Pay the company for access to your data<br />
Pay a developer to reverse-engineer the data formats and extract it</td>
<td>You may be screwed&#8211;Apple has a reputation of making it really difficult to get your data back out of any of its applications</td>
<td>Open source applications usually use open data formats. You may have other options that require no changes to your data. Anybody with knowledge can help.</td>
</tr>
</table>
<p>What&#8217;s the key thing in this section? Addressing actual problems is within your control, when you&#8217;re working with open source. In the proprietary world, you&#8217;re entirely at the mercy of a single software vendor. If your problem is in the interaction between two different applications, you&#8217;re really stuck &#8212; there&#8217;s nothing you can do.</p>
<p>But in the open source world, there&#8217;s always something you can do. You can hire anybody with the skills to solve your problem, and fix it in the software itself. You don&#8217;t need any blessing from any single software vendor. </p>
<p>Open formats are perhaps more valuable than open source software, for most businesses. Because this is such a compelling advantage of open source software, many proprietary programs are beginning to open up their formats to allow other software to read them&#8211;their customers are demanding it.</p>
<p><strong>How long will it take to solve your problem?</strong><br />
I&#8217;m not going to bother with a table for this one. The answer is nearly always &#8220;too long,&#8221; regardless of the operating system.</p>
<p>Actually, that&#8217;s not quite always the case&#8211;it depends on whether somebody has already solved the problem or not, as well as whether the solution is a fix or a workaround.</p>
<p>Many, many problems in Windows are not really fixes, they&#8217;re just workarounds. The only real &#8220;fix&#8221; for a virus-infected machine is the workaround of reinstalling your operating system. The only fix for lots of other minor issues that cause your system to slow down over time is to reboot. These are not fixes, they&#8217;re workarounds.</p>
<p>Real fixes take a lot longer, and need acknowledgment that the problem is real. Workarounds are band aids to get you through until there&#8217;s a real fix. And there are some real differences between the entire approaches of each operating system around these fixes.</p>
<p>Windows is chock-full of workarounds. Because Microsoft has gone to great lengths to maintain backwards compatibility of just about everything that&#8217;s been released for Windows since Windows 95, it&#8217;s full of workarounds to keep the old behavior. Rather than fixing behavior that might really be undesirable, they&#8217;ve had to patch it with workarounds because too many existing applications turned out to depend on that bad behavior. That, fundamentally, is why Windows is so big, bloated, slow, and painful to work with.</p>
<p>Apple suffers a different problem: changing their closed libraries too quickly for external developers to keep up. Each release, they break lots of things, and don&#8217;t always tell 3rd party developers ahead of time. This means the number of third party developers of Apple software is shrinking&#8211;they&#8217;ve managed to alienate quite a few. So their polish and high quality comes at the price of having a healthy thriving developer community outside the walls of Apple. There&#8217;s little transparency in this process, so developers outside Apple are always playing catch-up, and having to work around these changes in behavior.</p>
<p>Linux has its share of problems, too. Linux does not attempt to maintain &#8220;binary&#8221; compatibility between versions, though it does its best to maintain compatibility in source code. There is endless debate about the &#8220;correct&#8221; way to fix a problem, and competition between fixes. The challenge of this is that it can be hard for application developers to keep up, especially if they want to keep their source code closed and only ship software in binary form.</p>
<p>But the process is completely, utterly transparent. Anybody can see the progress on any fixes to any part of the system, and can jump in with their own solution at any time. It&#8217;s a true meritocracy, with those doing the actual work and providing the best solutions winning out over time.</p>
<p>The whole open source ecosystem is nimble enough to provide real fixes to technical problems, rather than just simple workarounds. If the source of the problem is design, it can take a long time to get the right design in place and resolve all the issues that changing the design causes in other applications. But when a bug gets fixed, it&#8217;s really fixed and usually doesn&#8217;t appear again.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/07/how_open_source_support_is_different/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An example of open source support</title>
		<link>http://opensourcesmall.biz/2008/07/an-example-of-open-source-support/</link>
		<comments>http://opensourcesmall.biz/2008/07/an-example-of-open-source-support/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 23:20:12 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[02. Servers]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[dspam]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=254</guid>
		<description><![CDATA[In my early Linux system administration days, when I was first trying to set up a mail server with spam filtering, I ran across a really puzzling bug in Dspam, the software I was trying to get working. While all the other users of the software were getting great results, with Dspam catching 99%+ of [...]]]></description>
			<content:encoded><![CDATA[<p>In my early Linux system administration days, when I was first trying to set up a mail server with spam filtering, I ran across a really puzzling bug in Dspam, the software I was trying to get working. While all the other users of the software were getting great results, with Dspam catching 99%+ of all their spam, it was only catching about 70% of my spam after quite a bit of training.</p>
<p>I posted my results, and confusion, to the Dspam mailing list. The original developer of this software (which has thousands of users), Jonathan Zdziarski, responded that that did not sound right. He asked if he could log into my server and see what was wrong.</p>
<p>I created a test account for him, and logged in to the same screen so I could watch what he was doing. As I watched, he put debugging messages into his code, ran several tests, and within 10 minutes had identified the problem: the 19-digit number he put into the database (MySQL) was different than the 19-digit number he got out. It was a storage error in somebody else&#8217;s software causing the problem, a rounding error. He filed a bug in MySQL, and it was fixed within a month or two. But he also had a workaround for me: change the data type to a set of characters instead of an integer. Problem solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/07/an-example-of-open-source-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The unwritten rules of open source support</title>
		<link>http://opensourcesmall.biz/2008/07/the-unwritten-rules-of-open-source-support/</link>
		<comments>http://opensourcesmall.biz/2008/07/the-unwritten-rules-of-open-source-support/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 23:19:14 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[02. Servers]]></category>
		<category><![CDATA[04. Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=253</guid>
		<description><![CDATA[What&#8217;s extraordinary about the open source community is that this level of support happens all the time, every day, without charge, in hundreds, thousands of projects out there. People that can get to the bottom of a problem and fix it at the source, not just provide a workaround, are directly reachable and motivated to [...]]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s extraordinary about the open source community is that this level of support happens all the time, every day, without charge, in hundreds, thousands of projects out there. People that can get to the bottom of a problem and fix it at the source, not just provide a workaround, are directly reachable and motivated to see their software work as well as possible. They&#8217;re not hidden away from the public behind a large corporation, unreachable with layers of clueless support script readers stuffed between you and them. Here are some rules for getting open source support directly from the projects:</p>
<ul>
<li>Before asking anybody, do your homework. Use Google, read the project FAQ, make some attempt to learn the basics without pestering people with questions they&#8217;ve already answered hundreds of times. Nine times out of ten, your problem has already been encountered and somebody has figured out a workaround.</li>
<li>Limit the scope of your question to the fundamental problem. Get to the point. I&#8217;m obviously guilty of being tremendously long-winded at times, but unless your question is right at the top and asked directly, you&#8217;ll probably get ignored. Developers are busy, they don&#8217;t want to read a novel, but they&#8217;re usually happy to answer a question.</li>
<li>Provide supporting details after asking your question. Many programs will create a log with lots of information that can help somebody diagnose your problem. Find what looks relevant in the logs. Specify what version of operating system, distribution, application, etc. Specify what you were trying to do, what you expected, and what really happened. But provide this stuff after asking your initial question&#8211;people aren&#8217;t going to wade through a long email to find your question.</li>
<li>Contribute something. The easiest way you can contribute is by answering other people&#8217;s questions. The whole thing works because people help each other, and this help goes both ways. If you always ask questions and never answer anybody else&#8217;s, or provide any other sort of contribution, you&#8217;ll eventually start getting ignored.</li>
<li>Always, always, be positive, respectful, and polite when asking your questions. Developers have a lot invested in their project, and insulting it won&#8217;t gain you any favors. Developers are under no obligation to help you either&#8211;you haven&#8217;t paid for it. Common courtesy is valuable. Complements are welcome. </li>
<li>Be patient. Sometimes the person who has the answer to your question is away from the computer. Usually you&#8217;ll get your problem solved quicker than you would calling some tech support line, but there are times it&#8217;s going to take a while. If you don&#8217;t get any response in a reasonable period of time (judged by how active the list or forum is, reasonable could be a couple hours or a couple days), there are several likely reasons: You haven&#8217;t been specific enough in your question; you&#8217;re in the wrong forum (e.g. users when it&#8217;s a developer question); nobody else is trying to do what you&#8217;re doing (in which case you may need to hire someone with the right skills); the project is dead (it happens sometimes&#8211;find another one); or the developers are swamped (give them more time, or come up with a new scenario that sheds light on your problem in a different way).</li>
</ul>
<p>That list describes how we get open source support at Freelock. Aside from a couple unsupported hardware devices, or issues with proprietary programs, we have yet to get stumped, in over 6 years of extremely heavy Linux and open source use. We&#8217;ve never paid a dime for this support, though we have provided help to many others in return.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/07/the-unwritten-rules-of-open-source-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s git, and why do you use it?</title>
		<link>http://opensourcesmall.biz/2008/06/whats-git-and-why-do-you-use-it/</link>
		<comments>http://opensourcesmall.biz/2008/06/whats-git-and-why-do-you-use-it/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 19:46:17 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[09. Document Management]]></category>
		<category><![CDATA[Economic Musings]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[code management]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[ledgersmb]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=250</guid>
		<description><![CDATA[At Freelock, we&#8217;re always trying to figure out ways to do things better. Recently I started digging into a developer tool that&#8217;s making, as Bryan over at the Linux Action Show would say, my head explode. For a long time, we&#8217;ve managed our custom code projects and business documents in a central repository, called Subversion [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://freelock.com">Freelock</a>, we&#8217;re always trying to figure out ways to do things better. Recently I started digging into a developer tool that&#8217;s making, as <a href="http://www.lunduke.com/" target="_blank">Bryan</a> over at the <a href="http://www.jupiterbroadcasting.com/?cat=4" target="_blank">Linux Action Show</a> would say, my head explode.</p>
<p>For a long time, we&#8217;ve managed our custom code projects and business documents in a central repository, called Subversion (also known as svn). Subversion is relatively easy to understand&#8211;it&#8217;s like having a library of files you can check a copy out of, do some work on it, and then check it back in. Subversion is the librarian that tracks who has copies of what, and when they checked it out. So if Erik checks in changes to a brochure, and then Jill goes to submit changes to the same document, Subversion will say &#8220;hey wait a minute, that document has already been changed&#8211;you need to make sure you put Erik&#8217;s changes in your document before I&#8217;ll let you put in your document.&#8221;</p>
<p>This is great for managing conflicts between people working on a single team, or for code that is being developed in relative isolation from the rest of the world.</p>
<p>The problem is, we&#8217;re doing more than that&#8211;we&#8217;re taking code from various open source projects and either customizing it or building new applications on top of it. And so when the outside projects get updated, we need to manually update anything we&#8217;ve written that depends on that code. There is no longer a single repository where we control our code&#8211;there is our code library, plus another one for every project we use.</p>
<p>This makes managing add-ons for projects like Joomla or ZenCart quite challenging, because our add-ons get scattered throughout the filesystem to be able to hook into the right place. And if we have to touch a core file, we&#8217;re going to end up needing to re-implement our change with any update to that core file.</p>
<p>There are other issues we run into, managing our code and hosting, all of which take fairly time-consuming, manual intervention. Here&#8217;s the list:</p>
<ul>
<li>Since we host and provide security updates for Joomla, Word Press, Zen Cart, Drupal, and others, we need to upgrade dozens of installations any time there&#8217;s a new release that has a fix for a security vulnerability. With Joomla this has happened quite a lot, and every Joomla installation needs to be upgraded individually&#8211;and tested. And since each installation is slightly different, we can&#8217;t manage them easily within a single repository, while updating the underlying code.</li>
<li>Templates, modules, components, blocks, themes, plugins, and whatever. Developing these types of add-ons are our bread-and-butter. But code for these often get scattered across an installation, making it quite difficult to manage just our add-ons while we develop them, or roll back to earlier versions if there&#8217;s a problem.</li>
<li><a href="http://dojotoolkit.org" target="_blank">The Dojo Toolkit</a>, and builds. We&#8217;re doing a lot of development with Dojo right now, to add desktop-like functionality such as trees, sortable tables, right-click menus, animations, and lots of other really cool things. However, if you don&#8217;t &#8220;build&#8221; the code after you write it, it&#8217;s painfully slow in a web browser. And due to the nature of how Subversion works, you can&#8217;t easily store a built Dojo tree if you ever want to change it again. Which means you&#8217;d need to build it every place you deploy it. And on some computers, it can take a long time to build&#8211;on our demo server, one of our projects currently takes 8 minutes.</li>
<li>As we get more directly involved with open source projects like <a href="http://ledgersmb.org">LedgerSMB</a>, we&#8217;re finding the need to change core files while we hack away at some particular feature. To do this, you create a branch of the code, work on your feature, and then merge your changes back into the &#8220;trunk.&#8221; If you don&#8217;t have access to save directly to the project repository, doing this gets a lot more complicated.</li>
</ul>
<p>Git to the rescue. Git solves all of these issues. Read on for a technical discussion of how.<br />
<span id="more-250"></span><br />
<strong>Managing lots of installations with Git</strong><br />
We haven&#8217;t yet started doing this, but for projects like Joomla and ZenCart, this is going to be really effective. It&#8217;s not quite as helpful for Drupal, which allows for a bunch of sites to be centrally managed out of the box&#8211;though even there it will help us recover quickly from a failed upgrade.</p>
<p>Here&#8217;s the basic approach:</p>
<ol>
<li>Create a master git repository, either by pulling down the Subversion repository using git svn, or just unpacking tarballs of a release and importing into our git repository for the project.</li>
<li>Create a new git clone for each installation, and drop into each installation directory. Create a current branch for that repository, and rebase it to the current installed version.</li>
<li>Commit local modifications to the repository. Make sure the .git directory is getting backed up, and is not accessible through the web server.</li>
<li>When a new release is available, use git pull to update each local installation. Use git reset HEAD^ &#8211;hard to undo if there&#8217;s a problem.</li>
</ol>
<p><strong>Managing submodules, customizations</strong><br />
This we get pretty much for free by having dedicated repositories for particular problems. Managing add-ons we&#8217;d like to use elsewhere can still be challenging, but we can pull customizations from other repositories to assemble custom packages&#8211;it&#8217;s at least easier to manage these across installations.</p>
<p>The main thing to do is to make sure when you&#8217;re developing on a particular add-on, you&#8217;re always doing it in a branch dedicated to those changes. Then you can merge them into other projects more easily. It&#8217;s also possible to &#8220;cherry-pick&#8221; commits involving particular files, and pull those changes into a new branch if development ended up getting mixed in with different features.</p>
<p><strong>Dojo Toolkit builds</strong><br />
We&#8217;re huge fans of the Dojo Toolkit. It makes developing really sophisticated browser-based applications much easier, not just providing a large set of active widgets but also a data abstraction layer and an encapsulation system for your own code.</p>
<p>Its biggest downside is that every feature you want to use means adding another file that the browser needs to load. And we use a lot of features&#8230; the base package loads about 20 files, and in our applications there are well over a hundred. This takes a long time to load, and isn&#8217;t very scalable.</p>
<p>The solution? Use the Dojo build process. A Java program can build all the features you want to use into a single compressed, stripped, javascript file. The difference in speed is incredible&#8211;applications suddenly load right up. And this build system can easily build your Javascript as well.</p>
<p>The problem is, this build system is not compatible with Subversion, because Subversion scatters its working copy data inside each directory, but the build system deletes the directories every time you build. So you can&#8217;t easily manage built code inside Subversion.</p>
<p>Git stores all of its repository information in the top level directory, so you can easily build and re-build Dojo and manage it without any issues.</p>
<p><strong>Do local development on open source projects</strong><br />
Now here&#8217;s the traditional reason to use git: to allow you to manage changes to open source projects without needing write access to their code repositories. We simply set up git repositories to track their Subversion repository, and then we can use all the features of git to manage our customizations.</p>
<p>When the original project has new releases, we just pull them into our repository and git handles most of the merging for us. If we want to contribute back to the project, we can copy them into our Subversion tracking branch and commit them straight back to Subversion&#8211;or send a patch.</p>
<p>We&#8217;re starting to set up public git repositories for projects we work with extensively. You can browse them here:<a href="http://git.freelock.com"> http://git.freelock.com</a>. You can clone and pull updates from here: git://git.freelock.com/git/&lt;projectname&gt;.git. You can read more about how to manage non-standard Subversion repositories in git <a href="http://freelock.com/kb/Git">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/06/whats-git-and-why-do-you-use-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 10 reasons why you should buy Office 2007</title>
		<link>http://opensourcesmall.biz/2008/06/top-10-reasons-why-you-should-buy-office-2007/</link>
		<comments>http://opensourcesmall.biz/2008/06/top-10-reasons-why-you-should-buy-office-2007/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 18:47:29 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[04. Desktop]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[openoffice]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=247</guid>
		<description><![CDATA[You want to make sure nobody will be able to read your documents in 10 years You want to help your buddy who works for Microsoft have enough income to buy a private island in the Carribean, because maybe he would invite you to come for a weekend You feel sorry for the PC on [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>You want to make sure nobody will be able to read your documents in 10 years</li>
<li>You want to help your buddy who works for Microsoft have enough income to buy a private island in the Carribean, because maybe he would invite you to come for a weekend</li>
<li>You feel sorry for the PC on the Mac commercials</li>
<li>Your buddy is buying it for you from the Microsoft company store, so you&#8217;re actually saving hundreds of dollars! You can&#8217;t get those types of deals on free software.</li>
<li>You hope that the extra emails it takes between you and your customers, partners, and vendors to get formats that they can open will improve your relationship with them</li>
<li>Having the newest software from Microsoft makes you cool</li>
<li>You want to extend Microsoft&#8217;s monopoly on the desktop, it&#8217;s just easier that way</li>
<li>You have a big technology budget, and can&#8217;t think of any better way to spend those dollars</li>
<li>You already spent the money on it, may as well force others to pay their Microsoft tax, too</li>
<li>You&#8217;re a big fan of Survivor, and like being dropped into an unfamiliar environment and having to figure out all over again how to do the things you need to survive</li>
<li>(Bonus!) You don&#8217;t know a better solution exists</li>
</ol>
<p>If your reason for purchasing Office 2007 is #11,<a href="http://freelock.com/mail.php"> drop us an email</a> and ask us how open source software can make your business run better.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/06/top-10-reasons-why-you-should-buy-office-2007/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Managing an Open Source project &#8211; LugRadio</title>
		<link>http://opensourcesmall.biz/2008/06/managing-an-open-source-project-lugradio/</link>
		<comments>http://opensourcesmall.biz/2008/06/managing-an-open-source-project-lugradio/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 02:58:57 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/?p=245</guid>
		<description><![CDATA[LugRadio has a very interesting discussion in their current podcast about the role of a community manager, in creating a vibrant community around an open source project. They came to the conclusion that each project needs a leader that people trust to take the project in the right direction, someone to be a diplomat to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lugradio.org/episodes/#episode102">LugRadio</a> has a very interesting discussion in their current podcast about the role of a community manager, in creating a vibrant community around an open source project. They came to the conclusion that each project needs a leader that people trust to take the project in the right direction, someone to be a diplomat to resolve issues among people in the community and keep everyone rowing in the same direction, and a strong technical lead to solve the hard problems.</p>
<p>This sounds quite similar to the challenges a small business faces. &#8220;The E-Myth Revisited,&#8221; by Michael Gerber, is essential reading for anyone wanting to start a small business, and some of the same ideas apply to building a successful open source project.</p>
<p>Basically, Gerber says you need to have 3 personalities in your business:</p>
<ul>
<li>The entrepreneur, the person with the vision to drive the business/project forward, always a step ahead working on what&#8217;s next</li>
<li>The manager, somebody to make sure all the work gets done on schedule, delivered on time, and that everybody is working in the same direction with the same priorities</li>
<li>The technician, who actually does the work</li>
</ul>
<p>And small businesses, like open source projects, are almost always started by technicians, people who just know they can do a better job than anybody else, so they set out to do it themselves. The reason why so many businesses fail is because the founders spend all their time building something without setting enough overall direction or managing their cash flow. Sound familiar?</p>
<p>The key to creating both a successful business and an open source project is balancing out these 3 personalities and making sure all are represented to an appropriate degree.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/06/managing-an-open-source-project-lugradio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The EU crashes Microsoft’s party</title>
		<link>http://opensourcesmall.biz/2008/03/the-eu-crashes-microsoft%e2%80%99s-party/</link>
		<comments>http://opensourcesmall.biz/2008/03/the-eu-crashes-microsoft%e2%80%99s-party/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 07:02:04 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[Economic Musings]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/archives/2008/03/the-eu-crashes-microsoft%e2%80%99s-party/</guid>
		<description><![CDATA[A couple weeks ago, the EU slapped Microsoft with a $1.35B fine, less than a week after Microsoft had made a big fanfare about their new &#8220;open&#8221; policies. Todd over at Napera asks, Certainly the terms Microsoft has been offering companies since the EU decision in October 2007 are extremely reasonable. Given Microsoft’s new open [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago, the EU slapped Microsoft with a $1.35B fine, less than a week after Microsoft had made a big fanfare about their new &#8220;open&#8221; policies.</p>
<p>Todd over at Napera asks,</p>
<blockquote><p>
Certainly the terms Microsoft has been offering companies since the EU decision in October 2007 are extremely reasonable. Given Microsoft’s new open protocol documentation and their patent pledge for open source developers, what’s not to like?</p>
<p>I haven’t seen any pundits or commentators in the US defending the EU decision. If they are, what are their substantive points?<br />
<a href="http://www.napera.com/blog/?p=10">Napera Networks » The EU crashes Microsoft’s party</a>
</p></blockquote>
<p>Hmm. Let me see if I can shed some light&#8230;</p>
<p>First of all, Microsoft wants you to believe that open source developers are all a bunch of hobbyists creating code for no pay. Their recent pledge is to not sue open source developers developing non-commercial systems.</p>
<p>Boy, what a deal that is&#8230; Microsoft gets all this open source development for free, right? And they can still charge anybody who dares to compete with them commercially? Great deal&#8211;for Microsoft.</p>
<p>The reality is, a great number of open source developers engage in commercial activity. Many successful open source projects are backed by commercial companies. OpenOffice.org, JBoss, SugarCRM, MySQL, PHP, the list goes on. By definition, open source means you can use and redistribute software for any reason, including commercial activity&#8211;by excluding commercial entities from patent protection, Microsoft is making a marketing play without making any real concession.</p>
<p>Their real agenda here is to give the illusion of openness so they can get their OOXML format approved as an open standard, without giving up any control over the format. Never mind that they were part of the committee developing the ODF standard and didn&#8217;t bother to contribute. Microsoft has no interest in working with other companies to develop an open standard&#8211;they want to be proclaimed the standard so they can demand &#8220;reasonable royalties&#8221; from everyone else, and all the rest of this is just marketing spin to try to put one past the EU, who so far have managed to see through all this bull.</p>
<p>Secondly, Microsoft seems to think the only healthy software marketplace is one that revolves around it. It got where it is by using all sorts of unethical, hardball business practices to drive its competition out of business. This is classic anti-competitive behavior, and is the reason it&#8217;s been the target of so many actions. </p>
<p>Microsoft has built a large ecosystem of developers and service providers all gathered around the MS stack. Yet you look at the stack and there&#8217;s not all that much vibrant activity, at least not compared to the open source bazaar. Take content management systems as an example. In the Microsoft world, you&#8217;ve got Sharepoint. You&#8217;ve got a couple of ASP.net open source projects like Dot Net Nuke. And that&#8217;s about it.</p>
<p>On the open source side, you&#8217;ve got overwhelming choice, and some of them quite great. Instead of one size fits all, you can go shopping for just the features you need, and get it all for a great price&#8211;free, if you have the technical ability to make them work. Joomla, Drupal, Plone, MediaWiki, Typo3, Postnuke, Word Press, Serendipity, several hundred different options for you to choose from. Which looks like a more vibrant marketplace, with more competition and more choice?</p>
<p>Ah, but then you ask about standards&#8211;isn&#8217;t it great that Microsoft makes it so simple for you to do what you need to do? You don&#8217;t have to make all those choices. Soviet bakeries were so much better than American supermarkets, too, huh?</p>
<p>Oh, but wait. Who invented http, rss, the world wide web, email, the spreadsheet, the database, the word processor, or anything else we use our computers for? Hint: not Microsoft. And the first few things in that list were created in universities and other open source, collaborative environments. </p>
<p>Finally, to speak directly to the EU&#8217;s decision, how does letting Microsoft get away with their monopolistic, anti-competitive behavior help the EU in any way? By protecting their software industry from Microsoft, they&#8217;re fostering an environment that can lead to a much more competitive, fertile ground to grow their own software industry.</p>
<p>No other industry (other than possibly the utility companies and the railroads) have had a single company that so dominates the industry like Microsoft dominates software. How can that be a good thing? I know from personal experience a half a dozen companies that Microsoft crushed, and for the most part their technology with them. This mono-culture of software has led to all the trouble with spyware and botnets and through them, spam. I don&#8217;t think we&#8217;re better off with our Redmond overlords.</p>
<p>I for one was happy to hear about the EU&#8217;s decision, glad they were able to stand up against monopolistic practices and do something to actually help their software industry thrive.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/03/the-eu-crashes-microsoft%e2%80%99s-party/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reliable code: building in robustness</title>
		<link>http://opensourcesmall.biz/2008/01/reliable-code-building-in-robustness/</link>
		<comments>http://opensourcesmall.biz/2008/01/reliable-code-building-in-robustness/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 20:08:09 +0000</pubDate>
		<dc:creator>freelock</dc:creator>
				<category><![CDATA[01. Open Source]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[reliability]]></category>

		<guid isPermaLink="false">http://opensourcesmall.biz/archives/2008/01/reliable-code-building-in-robustness/</guid>
		<description><![CDATA[Ok. Last post on the quality code series. One of the downsides of getting older is realizing you do have shortcomings. You know how when you&#8217;re young, going into a job interview, the toughest question is the one about your weaknesses? We&#8217;re all quite blind to our weaknesses, until experience comes up and forces you [...]]]></description>
			<content:encoded><![CDATA[<p>Ok. Last post on the quality code series. One of the downsides of getting older is realizing you do have shortcomings. You know how when you&#8217;re young, going into a job interview, the toughest question is the one about your weaknesses? We&#8217;re all quite blind to our weaknesses, until experience comes up and forces you to realize you&#8217;re not perfect. Sometimes this happens early, sometimes late, but it happens to everyone sometime.</p>
<p>My coding weakness, it turns out, is reliability. I&#8217;m terrible at handling errors, building test frameworks, doing unit testing. I find all of that stuff quite boring. But it&#8217;s essential to building a reliable application.</p>
<p>Reliability and security go hand in hand. In security, you&#8217;re looking at the attacks, and making sure your code is secure against them. In reliability, you&#8217;re identifying what each chunk of code expects to get, and then define how to handle exceptions, unexpected input. Done correctly, reliable code is secure. But it&#8217;s a total pain to do, and it takes a lot longer to get there.</p>
<p>One of the code samples I examined recently was set up in a completely class-driven way, though I would not call it object oriented because none of the classes extended other classes. It was a rather simple, flat collection of objects and helpers and interfaces. It was not powerful. My guess is, it is not fast. It did not look very customizable. But it was certainly clear, and every single method inspected every single parameter, making sure the input was valid. Calls to other objects had extensive error handling built-in &#8212; this application looked like it could not fail without notifying the programmer exactly where the failure was, with helpful feedback.</p>
<p>This is tedious work. I save it for the polishing phases of a project, focusing on getting things to work in the first place. But there&#8217;s a strong argument to be made for building reliability into each module from the start. It&#8217;s a very different style of programming, and takes a lot longer to get there, but the end result will inevitably be more secure, less buggy, and more able to account for every possible scenario&#8211;even if it handles a scenario by saying &#8220;I can&#8217;t do that yet.&#8221;</p>
<p>I think there&#8217;s a personality difference between these development styles. The artist figures out some innovative way of solving the problem, gets a proof-of-concept working brilliantly quickly, and cranks through code producing a huge amount in a short amount of time. The craftsman takes a slower, methodical approach, crafting each module individually, building unit tests to make sure it works correctly as he goes, and building a system piece by polished piece.</p>
<p>Successful projects need both. The artist/hacker provides vision, drive, and momentum. The craftsman makes sure the system can handle the load, and can prove it&#8217;s doing what it&#8217;s designed to do.</p>
<p>The 80/20 rule comes into play here. 80% of the features can be hacked together very quickly, in the first 20% of the project. To make the project stand the tests of time, handle everything that might be thrown at it, and act as a foundation for a business or a mission-critical part, you need the craftsman to do the remaining 80% of the work to finish the job and get that final 20% of the functionality complete.</p>
<p>So here&#8217;s a checklist for evaluating reliability of a project:</p>
<ul>
<li>Is the program broken up into discrete modules that can be completely tested one at a time?</li>
<li>Are there unit tests built for each module, testing the output for normal and exceptional conditions?</li>
<li>Is the input to each module validated and properly tested to handle all possible things that may be passed to it?</li>
<li>Does the module handle non-normal input, and raise the appropriate errors?</li>
<li>Are there regular tests of the software as a whole, and each module, to identify tests that fail, or regressions in the code?</li>
</ul>
<p>The only way to ensure reliability is through rigorous testing. Some of the newer programming practices rely on test-driven development&#8211;first you define what a module does, then you develop a test for it, and then only after all that do you finally develop the module until it passes all the tests.</p>
<p>In a small business environment, this all may be too much overhead. 80% of an application may be enough, and at 20% of the cost, much more inline with the budget. But when you need something to be completely reliable, take a look at the testing framework, how much it covers, and how much of the application passes the tests.</p>
]]></content:encoded>
			<wfw:commentRss>http://opensourcesmall.biz/2008/01/reliable-code-building-in-robustness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

