Open Source Obligations

December 30th, 2009

One of the beautiful aspects of open source software development is that individual contributors are, generally speaking, under no obligation to contribute their work. People who find time on their hands, and an inspiration to do something great, write some code and share it with the world. End of story. Or at least, that’s the way I see it.

Jeff Atwood is pissed because John Gruber hasn’t been a “good mommy” to Markdown.

Disregarding whether the accusations are true or not, it pisses me off when somebody is criticized for giving something away, yet somehow not giving enough. What part of FREE don’t you understand? Somebody, in this case John Gruber, wrote something great, and gave it to you for free. It’s a technology you would not have access to without his generosity, and which you could not even obtain commercially, had he chosen to keep it private. A completely new, compelling solution which is available to you because one man had the community-serving idea that it should be open. Are you getting my drift?

I grew up in Santa Cruz, California. A city famous for its hippies, vagrants, and college students. (At some point in my youth I aspired to fit into each of these classes of people.) One day I was walking down the main downtown strip, Pacific Avenue, with a half-finished paper cup of coffee in my hands. A panhandler yelled out to me: “Can I have your coffee!?” Feeling generous and well-caffeinated, I surrendered my cup and strolled off. Moments later, the man shrieked after me: “There’s no whisky in this coffee!”

You can’t please everybody. In the open source community, and in the larger community that consumes open source goods, there will always be complainers. For some people, free simply isn’t good enough.

I believe that anybody who gives away the results of their hard labor for free should be praised. By no means should they be expected to contribute more than they already have, or to bend to the screeching whims of their consumers. If you don’t like all of what you’ve received, take what you do like, and modify it to make it perfect. Take the free cup of coffee, and add your own damned whisky.

FastScripts 2.5

December 29th, 2009

Today I released an updated version of FastScripts with some pretty cool features and bug fixes:

  • Now supports running plain-text .applescript files
  • The FastScripts menu icon can now be changed to a custom color
  • Alter appearance of menu so it doesn’t have rounded top corners on 10.6
  • Bug Fixes
    • Fix glitches with “Smart Switching” on Snow Leopard 10.6
    • Fix processing of shell script arguments embedded in the “shebang” line
    • Fix a possible crash when changing mouse cursor while selecting from menu
    • Fix proper display of filenames e.g. when they contain slashes

I struggled with the question of whether to allow for colorizing of the menu bar icon. I think personally that all icons in the menu bar should be monochrome and approximately black. But the chorus of feedback from people with legitimate accessibility concerns prompted me to give in and provide a preference to set the color of the icon to any color you like. Yes, you can now make FastScripts hideously ugly, with a simple preference change!

Most of the other changes should be obvious from the outline what they imply. The “smart switching” fix will be a welcome change for anybody who started noticing on 10.6 that FastScripts would no longer always become active to make sure a dialog is presented in front of all other windows. I think I’ve come up with a solution that will now withstand the test of time. Special thanks to Mike Ash for a giving me a very helpful clue for solving this issue.

The biggest change from a development point of view is one of the most subtle to the user. Here is the FastScripts 2.5 menu:

And here is the old FastScripts 2.4 one:

The rounded corners in the old version weren’t too terrible, but there was clearly something wrong. Small blemishes such as this are like a dent in the side of a used car. Is it the only thing wrong with the car, or does it reflect an owner who has not taken care of it, inside or out? Now the FastScripts menu projects solidity and reliability, reflecting its core functionality. Thanks to Nicholas Riley for pointing out this issue and inspiring me to finally fix it. He also reported the issue with script names not being displayed correctly.

An interesting developer side-note: the explanation for the rounded corners are that up until FastScripts 2.5, the menu was entirely Carbon-based. So what you are seeing is a Carbon “pop-up menu” cleverly positioned so that it shows up exactly in the spot where a real menu would appear if I were using one!

When I first developed FastScripts, Cocoa’s menus were not sophisticated enough to handle all of the functionality I needed. So I used Carbon menus inside what is otherwise a Cocoa app. Fortunately I had the foresight to develop NSMenu and NSMenuItem style wrappers for the Carbon menus. Now that Cocoa menus are suitable for my needs, I was able to essentially remove the wrappers and write directly to the Cocoa menus API for a more integrated look (and less code to maintain, down the road!).

Payback Time

December 23rd, 2009

Several weeks ago, I put together a seat-of-my-pants promotion called One Finger Discount. Over the course of a week, I facilitated the listing of software being offered at a 20% discount for a limited time. I did this because I was inspired to leverage the enthusiasm for software generated by MacHeist into something that might also benefit many other developers.

The response was so overwhelming, that a day into the promotion I realized I would not be getting much work done. I spent most of the following week keeping up with new additions to the promotion, and trying to update the web site to be more useful and attractive. I worked my butt off and didn’t take a penny from any of the participating developers. It just felt great to be doing something and getting the word out about smaller software shops.

When the promotion was over, I got a few really heartwarming notes of thanks from various developers who had taken part. I also ended up selling quite a bit more software last month than I do in ordinary months. Word from developers was that they had likewise seen significantly improved sales. We all win!

Today, with memories of One Finger Discount fading, I was busy coding away on MarsEdit, when my wife knocks on the door with an important looking envelope. Air mail from Canada? Hmm, what could it be? I recognized the name on the envelope as Dan Messing of Stunt Software, a friend of mine and fellow indie developer. Inside, I found two cards:

A thank you card? But what had I done for Dan lately? Even the tell-tale white hearts on pink didn’t clue me in that it was One Finger Discount related. It wasn’t until I opened the Thank You card, and noticed that it was in fact a 10 page booklet containing dozens and dozens of personal thank you messages from a large number of One Finger participants:

Holy cow! How touching that Dan (with help from my podcasting cohort Manton Reece, and my wife) managed to collect so many notes of thanks from so many participants. This was truly an accomplishment, and a greatly appreciated one. Thank you Dan, Manton, and Chrissa for your parts in organizing this. This alone is quite a payback for the hours I spent laboring to make One Finger Discount the success it turned out to be.

And the other card in that envelope? Each developer who had graciously agreed to send a personal note of thanks had also chipped in some cash and sent me the largest Amazon gift card I have ever seen! If you ever wondered whether $700 was enough gift to convey your heartfelt thanks, the answer is yes, yes, yes! Thank you so much to each and every developer who took part in this thrilling and inspiring gesture.

It’s great to be reminded that there are so many generous and thoughtful people in the world, and in our community. Sometimes you may feel that your deeds are going unthanked or unnoticed, but the old cliché that “what you give comes back to you” is true on many levels, and it may surprise you the ways it finds of doing so.

Thanks again, everybody!

Wishes Do Come True

December 21st, 2009

I don’t use Twitter as an official support avenue. It’s simply not possible to conduct effective support when limited to 140 characters per transaction. But it’s great for staying casually in touch with existing and potential customers. To try to stay as connected as possible, I monitor Twitter for mentions of my company name and products, as well as specific mentions of the company twitter account, the anthropomorphized MarsEdit account, and my personal account.

Starting today and running through the New Year, I’ll be giving away free Red Sweater products to a different Twitter user every day, from among those who mention them by name. This will be a fun way to recognize folks who are helping to spread the word about Red Sweater products, by casually mentioning them in their tweets.

OK, So How Do I Get My Wish Granted?

First of all, I’d like to be clear there is no guarantee that your tweet will be selected. But I’m on a mission to give away something every day, and to decide who I give it to, I’ll be reviewing the list of tweets that match our broad list of search terms. Basically, if you mention MarsEdit, Black Ink, FlexTime, FastScripts, or Clarion by name, or if you mention the @marsedit or @redsweater Twitter accounts, and you make it clear that you wish you had one of our products, then I might select you.

You don’t have to tweet repeatedly or daily. Any tweet starting today may be chosen as a winner up and through the New Year. You don’t even have to wish specifically for one of our products, but if you do it might make it easier for me to grant the wish!

If you’re curious to see who the winners are, you can follow @redsweater on Twitter, where I’ll be announcing and linking to the winner for each day.

Are You Asking Me To Spam My Followers?

I don’t think so, but I admit it’s a grey area. What really annoys me about Twitter-related promotions is when a company asks you to repost verbatim some slick marketing slogan, just for the chance of winning something. Here, I’m not asking you to do anything specific. I’m letting the world know that I’m giving some stuff away, and that in order to find out who wants it, I’m using Twitter as a convenient way of gauging desire for Red Sweater stuff.

In brief: it’s your Twitter account, and you know best how to keep it tasteful and amusing. If you can’t find an interesting way to express your Red Sweater wish, best not to participate!

The Fine Print

I REALLY HOPE THERE ISN’T ANY NEED FOR FINE PRINT BECAUSE I JUST WANT TO GIVE SOME STUFF AWAY AND HAVE NOBODY RAISE A BIG LEGAL FUSS ABOUT IT ARE WE AGREED THIS IS A GOOD IDEA AND THE LAWYERS DON’T NEED TO GET INVOLVED, AM I RIGHT?