Clopen source

A few years ago, when I was working in a job, I attended a social media course. There was a training budget to use up, and I couldn’t find any technical courses worth attending. So I attended the social media one.

At one point in the one-day course, the trainer was showing the attendees how easy it was to create a Wikipedia entry. He showed the update history. He showed how to edit other Wikipedia entries.

Now I’m going to tell you about a book I read recently. Don’t worry, it’s related. The book is “Geekonomics” by David Rice. There’s a chapter on open source (specifically related to software development).

Rice wrote that the openness of the open source movement might also be its downfall. Because anyone can contribute to an open source project, anyone does.

He also wrote that open source project contributors are typically not paid (in the form of money). They contribute for geek cred. And if you don’t contribute anything, you don’t get any geek cred at all.

And so developers typically contribute to features the developers want themselves or that the features are cool, and not because the features are user-requested or even helpful to the project. I mean they’re not paid, so they might as well do something cool.

Remember, no contribution, no geek cred.

Now Wikipedia is successful because if any “amateur” goes in to create “useless” entries or update existing entries with wrong information, there’s someone else who’s willing to go in and change it. The long tail of contributors work here because the entries aren’t typically arcane. And that contributors are motivated enough to make Wikipedia better.

Open source software projects don’t work quite as well. Amateur developers add useless or unnecessary features. No one wants to go in and edit code. Because developers do it for geek cred, if you go in and delete their stuff, even if their stuff is unnecessary or possibly even detrimental, the original developer/contributor is going to be upset with you. Because you’re removing their geek cred.

This had put me in a bit of a quandary. For the purposes of this article, I’ll define “open source” as:

  • Source code is available
  • Licensing is such that users are able to study, change, redistribute the software and the source code

I’m not sure about the licensing part. Any license that qualifies as open-source is good enough for me.

And “closed source” will be defined as “not everything that has to do with the software is made available”. I’ll explain the meaning in a bit.

I made a spreadsheet library and made it open source. It’s open source because the source code is available for anyone to read. I’ve licensed it with the MIT License, which basically allows you to do whatever you want with very few restrictions.

It’s also closed, because I didn’t include the .csproj file and the strong name key file in the downloadable package. There are various reasons, but the main ones are that I intend to keep the branding and that there’s only one “original” SpreadsheetLight library running out there (mine). Anyone who forks my source code can compile it, but the resulting DLL won’t be the “original”, so to speak.

So I consider my project as clopen source. “Clopen” is a mathematical term used in topology to mean both open and closed. I’m not going to bore you with the details. Go Google the definition yourself.

The main point I had was that, while my project was open source, I don’t quite encourage open collaboration. Open collaboration is not a requirement for a project to be considered open source. And it is open source, because you can view all the source code.

My main motivation was that I had a specific vision for the project, which was to make the spreadsheet library as easy to use as possible for developers who are on a tight schedule and don’t have time to learn how to make spreadsheets with a third party library. This meant I had to maintain strict control over things like method signatures and even method/property/class names.

Can you imagine having just anyone coming in to change the source code? Or just adding a feature because they need it, but the intended developer audience doesn’t need it?

Not every contributor is interested in being aligned with the project’s vision and purpose.

Setting it free

It was the hardest, most painful decision I had to make in a long while.

I had worked hard on the project. I downloaded a few open-source versions of similar projects for comparison. I went through the use cases, on how to do certain tasks with those open-source projects.

Then I went to a couple of commercial projects. I couldn’t afford to buy them, but I went through sample source code to compare the use cases as well.

I did all that for research. Then I came up with a list of features that would be useful. Then I implemented them in a way that makes it easy for programmers to use.

It was also supposed to be a “big ticket” item, something I could sell for a higher price. I’m biased of course, but I believe my software is easier to use than either the open-source projects or the commercial projects.

The open-source projects targeted people who wanted free software, or supported open source projects (vehemently sometimes), or small to medium businesses. The commercial projects targeted the big enterprises. I targeted the small to medium businesses, appealing to the programmers or the IT managers/directors of those businesses and companies.

I launched my project. It didn’t do very well.

I added more features. I wrote detailed documentation of the software. I tweaked the price. I changed the sales copy. I did some advertising. I marketed the software project as best as I could. I created a whole website around it. Months of work went into the project. Still it floundered.

In the end, I dug into the core of why the project existed, and it was because I wanted to make the lives of programmers easier. And putting the software behind a payment wall might have put a dent in that.

And so I set it free.

It was heart-wrenching. I cried. Not so much for the lack of sales, but more because no one wanted to use the software. Ok, fine, it was equal measure of “no one using it” and “I need to eat”.

So if you have a few minutes, I’d appreciate it if you’d check out my spreadsheet software library. It’s called SpreadsheetLight, and it’s free for download, and has source code available. Tell someone who might find the software useful. Thanks.

Elance hates polymaths

Spiky tree

So a few weeks ago, I decided to try my hand at freelancing. Specifically, freelance writing through a third-party site. I wanted to try something other than programming, and I felt my writing skills were up to par. I researched on the freelancing sites available, and 2 of them stood out. One was oDesk, and the other was Elance.

Let me just say, both of them hate polymaths. Through reading their terms and conditions, I surmised the reason (which I’ll tell you later). Let’s talk about oDesk first.

I hate timesheets

There are 2 types of freelancing jobs: project-based or timesheet-based. For a project-based job, you get paid a predetermined amount of money. You finish the job, you get paid in full (there are also “half now, half when done” arrangements).

For timesheet-based jobs, you get paid by the hour. For oDesk, this seemed to be their focus. An hour’s work for an hour’s pay. In these unhealthy economic times, I can understand the need for people to feel that if they put in the hours and the work, they get paid. oDesk even has a desktop software that tracks and records your desktop screen to prove to the buyer/employer that you’re indeed working on their project.

The thing is, I hate timesheets. They imply I can’t be trusted to do and finish a job.

When I was working in a software house, where I was a small part of a programming factory, there’s nothing else I could do. “Working on inventory workflow class” was as meaningful as “I’m coding”. That filled up 8 1-hour slots in my timesheet.

When I was in the start-up or telecommunications company, the tasks were varied. Well, to be fair, I didn’t have to fill in a timesheet in the start-up. But that’s because the founder was seated right behind me.

At the telecommunications company, I took phone calls, answer user queries, fix computer/browser problems, write code, fix bugs, design interfaces, create graphics, attend meetings, and talked with directors, sales staff, marketing people, product managers, customer service officers and sometimes, even customers. My timesheet activities were all over the place. And I hated filling them, because the activities bleed from one to another, and I can’t remember how long each took. So I guessed. Which made the whole exercise kind of pointless, but the upper management wanted to know how their system analysts spent their time, so there.

Now writing words (and for that matter, writing code) is a creative endeavor. This means that given a task, you can’t say exactly how long it’s going to take. My blog articles range from 300 to 2000 words. I take anywhere from half an hour to 5 hours to finish writing them. And I don’t know how many words each article ended up with until I start writing. Sometimes, I just wanted a short 500 words article, then it blew up to 900 words. Sometimes, I allocated 2 hours (the average writing time for each article) and I ended up working on the article for 4 hours. Yes, I have more leeway since this is my blog, and I can limit myself to a certain number of words to practise concise thought and writing. I just find being a writing machine which churns out some average number of words per hour, regardless of the hour, to be unnatural.

Just to illustrate the phenomenon, I intended to just write a couple of short paragraphs on the timesheet-focussed nature of oDesk, but it’s already blown up to a few hundred words.

It’s the same with working on code. There’s a bug and you’re going to fix it. You guess how long it can take you, but it could be simple and you’re done in 15 minutes, or unexpectedly complex and takes up your entire day. As you gain experience, your guesses become more accurate, but sometimes you can never really tell how long it will take you.

You may be super lethargic this afternoon, but awesomely productive the entire next day. While you can’t guarantee every hour that you work on something to be productive, you can sort of guarantee that it’ll be done by next Monday. Following this logic, project-based jobs fit me better than timesheet-based jobs.

Pre-categorisation of service providers

So I decided to try my luck at Elance. I mean, I used it to outsource my blog design before (which turned out to be a total disaster), so I had some familiarity with the site. Now Elance has this “New provider” badge, to let service buyers know that the provider is new, that’s why there’s not much of a portfolio. Well, Elance kept my account, which means it’s more than 3 years old without me ever bidding or providing services of any kind.

Orcasquall Elance ID

Strike one against me before I did anything.

Then I looked at the kinds of freelance jobs I could do. Ok, I could probably do “Web & Programming”, “Writing & Translation” and “Admin Support”. Then I found out that I could only choose one of those categories. If I wanted to work on jobs spanning more than 1 category, I needed to pay additional monthly fees to Elance. Elance hates polymaths.

So the reason I surmised, was that Elance wanted to prevent people from bidding on jobs all over the place. This filters out non-serious providers, and increased the perceived quality of those who are in a particular category. I was a bit tired of programming, so I chose writing.

Just in case you’re interested, website programming (WordPress blog customisation in particular) and mobile app (iPhone) development are hot.

The Internet is filled with loveless words

I bid on 2 writing gigs. There’s a monthly limit to how many I can bid since I have a free account, though I can upgrade to a monthly paid subscription to increase that. Since I’m a “new” service provider with an “old” account, I took advantage of Elance’s certification tests.

Orcasquall Elance skills

I was surprised that I ranked in the top 5% in “Internet Marketing”. I don’t talk much about it here because I felt it wasn’t relevant. It’s about time I told you why I know so much about Internet marketing, which I already started here.

Oh yeah, I took the test on C#, and I scored below 60% (basically I failed). I was so sad about that until I started laughing at myself. The test had a lot of theory questions, with only a few questions with code. Interviewers, if you’re testing a candidate for a programming position, throw code at them, not theory questions.

Anyway, for one of those gigs, I was to edit and proofread some manuals on Internet marketing. I bid a fair amount (gauging from “market rate”), a low 3 digit (it starts with an even prime number), to go through more than 40,000 words in 7 days. I thought I had a chance, what with my fluency in English and knowledge in Internet marketing. Then I found the job was awarded to some provider offering an amount less than $100 (it starts with the highest single digit prime). I was a bit upset.

The other gig I bid on was to do with writing blog articles for a start-up. The job was never awarded to any provider. There’s this “trick” that you can use to determine market prices. Go post a job and ask for bidders. You’ll get to know what’s the typical asking price for the job based on the bids. It wastes the time of the service providers. So you’re either cheating the system, or you’d better have a good reason to withdraw the job. Elance discourages this by posting the history of the service buyer, such as how many jobs posted and how many jobs awarded.

Now I went through the descriptions of a lot of jobs. Basically, there’s a lot of people out there paying other people to write blog articles, newsletters, product material (to be sold), and even books (ghostwriting). There’s the “it must be original material, and I have software to check uniqueness/copyright” clause. After about 2 weeks of trawling through the job descriptions, I got discouraged by the state the Internet became.

So there are thousands of sites sprouting every minute, and many of them aren’t written by the owners. Many of those 300 to 500 word articles, designed to attract search engines and hopefully provide useful information to humans, are churned out by people whose job was to fill up some 2000 bytes of some Internet server’s disk space. You want good search engine rankings? You need content. As one Internet marketer said, “You need to own more of the Internet“.

Sure there’s the problem of ensuring the high quality of articles. Some bloggers already repeat what other bloggers are saying without adding any significant value, causing what’s known as the echo chamber. I’m not saying those paid writers create poor quality pieces of writing. I just feel there’s not a lot of love given to those words, since they’re given to and owned by the site owner.

I want to differentiate this from sales letter writing, copywriting and writing marketing material. These perform useful and needed functions for businesses. I just feel discouraged by the rampant bloating of the Internet with articles.

So for now, I’ve given up on freelance writing at Elance. The forces of specialisation grows stronger, and I have to find another avenue of work. And if you need help in editing, proofreading, writing, Internet marketing, advice on product creation, selling products online, email marketing, membership sites, just contact me and we can work something out.