Half-Elf on Tech

Thoughts From a Professional Lesbian

Tag: essay

  • SEO Doesn’t Auto Post Anymore

    SEO Doesn’t Auto Post Anymore

    I don’t auto post to Twitter, Tumblr, Facebook, Google Plus or LiveJournal. I stopped about a year ago, and since then, I’ve stopped crossposting to everywhere except the places I actually frequent. That’s not to say I don’t skim Tumblfeeds (the spam monsters than they are) or check in on my LJ communities. It means that I no longer have any code that automatically posts to those places when I make a new blog post. Any time you see a link to my posts on another site, made by me, that means I took the time to log in and fill in the data by hand.

    Why? Well, I’ll jump around chronologically and tell you that a pair of articles hit my feed recently. First, one about how “3rd party APIs […] are punished in Facebook’s EdgeRank algorithm” (Source: Edgerank Checker — Does Using a 3rd Party API Decrease Your Engagement Per Post?) and the second, which linked back, said that pages that auto publish lose 70% of ‘likes’ and comments. (Source: Insider Facebook — Study: Auto-Posting to Facebook Decreases Likes and Comments by 70%)

    AutobotBoth of those back up what I’ve always said about SEO and HEO. If you want people to come to your site, you have to engage with them. That means you need to interact, not spam, and converse. Find out what they like and how they like it. They hammer home a point that was obvious to many of us old hats know, but many young bucks ignore. You have to be in touch with your readers, and no automated system in the world can do that for you.

    Now, certainly, I use tools like Google Analytics’ Campaign feature, and Crowdrise, to help me determine what posts of mine are popular, when and where, and attempt to comprehend the why of it all. It’s a very fuzzy science. I know I hit paydirt when my @-replies on Twitter are coming so fast I can’t keep up, and my comment-feed is burning a hole in my screen. But until we perfect an AI that knows, before I do, what I want, we’ll never have one that can predict accurately what we need to do to make our sites popular. And we all know that popularity is the end game.

    Popularity has a strange converse, though. For example, you may think that auto-tweeting your blog posts is a great idea to get the content out there and read. This is true, but I found that the more I auto-tweeted, the more splogs came to my site! That’s right, I was increasing the attack of content scrapers, and tweet bots that spam, which in turn decreased any SEO benefit I might have acquired. Sucks, doesn’t it? Thankfully, manually crafting a quick tweet, and taking the time to phrase it right, got me more traction than anything else.

    The other massive downside to auto-posting on social networks is that you rarely get to make the post look the way you want to. I want to pick which image I’ve attached to be the thumbnail, and I want to make sure my custom excerpt (which I always write) is picked up, and I want to maybe put in an extra explanation on G+, but not on Tumblr or Facebook, and … you know, I want people to know I’m thinking about them.

    There is a huge desire to share everything with everyone. To tell your friends in one social network the same things you tell them in others. And for self-promotion, this is big as well. But as the media is learning, a blanket advertisement like you see on TV doesn’t work so well anymore. How many commercials can you remember well? I can remember the Old Spice guy and the Most Interesting Man in the World (also a couple weird phone commercials), but we don’t always remember the products, nor do we actually always buy the product being advertised. I don’t use Old Spice or Dos Equis. Still, blanket ads are hard to land, since you don’t know who’s going to read your site. Similarly, blanket ‘Hey look at me!’ is hard to make efficient, because you’re not reaching out to your audience and making them a part of your process. You’re shouting at them, not talking with them.

    DecepticonWhat about those of us who aren’t advertising. If you’re crosslinking just to share with friends, an automated system seems fine, except these are your friends and don’t you want to be personal with your friends? Don’t you think they deserve the time and effort of a real ‘Hey, this is what I’m up to!’ instead of a blanket letter? Wouldn’t it be nice to say “Bob, I thought of you when I wrote this because of that conversation we had about …” Or if you send it to a group of your friends and Bob’s, then Bob feels great because you’ve brought him into the conversation and your friends know you think about them.

    The funny thing about this is I also stopped scheduling posts. I used to set posts up to run once a week, minimum, even if I was going to be off line. Now, because I want to interact with people, I post them only when I know I’ll be around.

    The next time you see a social media post of mine, linking back to a blog post, know that I took the time and effort to link it. If it’s styled pretty, I did that on purpose. I try to make it personal and not just slap a link up, and I think that effort shows, and comes back to me in pageviews, comments and likes.

  • GPL Freedoms – Yep, Porn’s Good!

    Did you know you can use WordPress for a porn site?

    Did you know you can use Drupal to show autopsy pictures?

    The freedoms of GPL don’t just extend to the software itself, but to how you use it. See, most of the time when we talk about GPL freedom, we’re talking about how you’re free to take the code and turn it into a monkey if you want to. But lately, there’s been an effort to remind people that part of GPL also means we don’t restrict your usage either.

    WordPress has a link to ‘Freedoms’ at the footer of all admin pages, and that duplicates the Bill of Rights found at WordPress’s Philosophy:

    WordPress is licensed under the General Public License (GPLv2 or later) which provides four core freedoms, consider this as the WordPress “bill of rights”:

    • The freedom to run the program, for any purpose.
    • The freedom to study how the program works, and change it to make it do what you wish.
    • The freedom to redistribute.
    • The freedom to distribute copies of your modified versions to others.

    Drupal doesn’t spell it out as clearly, but given that they have fetchgals, which can pull in thumbnails of porno pics (if I read that right), I feel confident to say that Drupal doesn’t care what you use Drupal for. Joolma! puts a lot of stock in people using their product for their communities and nowhere did I find note of a limitation of what you cannot do.

    The point is valid, however. You can use WordPress, Drupal, Joomla! and pretty much any GPL software for whatever purpose you want, moral or immoral, legal or illegal. This is interesting when you compare it to most EULAs, like Microsoft Office:

    7. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the features included in the software edition you licensed. Microsoft reserve reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not
    […]
    • use the software in any way that is against the law;

    GPL doesn’t tell you that you can’t use it in a way that’s illegal, and perhaps Microsoft only does to escape a potential lawsuit for someone saying “Aha! You used Office to draft your Mainifesto!” We live in over litigious times. Open Source, by telling us ‘Do what you want, it’s not our beef.’ removes themselves from those issues cleanly and without ass hattery.

    One of the tenets of American Law is our freedom to speak our mind. Part of being an American Citizen is that you have the right to defend your beliefs, no matter how much I oppose them, and so long as no one breaks the law, that’s fine. I can ask you to leave my house if you do it on my private property, and you can ask me to leave yours. But if we meet on the street I cannot have you arrested for that. I will defend your freedoms just as you must defend mine, regardless of any agreement or lack there of.

    This applies to Open Source because I have the right to use WordPress, Drupal or Joomla! in ways you may find distasteful. As long as I’m not violating the agreement of my ISP, the laws of where my server is located, and the laws of my nation, I’m allowed to call you names, insult your heritage, and show nudie pics of pretty girls. On the other hand, I cannot publish your personal information (it’s a violation of invasion of privacy) and I cannot post naked pictures of you without your consent. Actually, my webhost won’t permit and naked pictures at all, so there’s that.

    So when you see a site run by WordPress, Drupal or Joomla! that’s doing something you hate, there’s very little you can do about it. Report it to their webhost if you think it’s breaking the law, but otherwise celebrate people in their freedom.

  • BuddyPress Overkill

    BuddyPress LogoFor a lot of people, BuddyPress is overkill. Personally I love it, it’s great to make your own ‘Facebook’ or ‘Ning’ type site. But there’s a time and a place for everything.  BuddyPress’s intention is to let you build your own social network.  This means that it’s a Big Dog type application, that it has a lot of bells a whistles.  And while you certainly can install it and only activate a few, if you’re only doing it to use one of those things, it may be overkill.

    I’m going to take this one by the numbers.  Or rather, by the features listed on BuddyPress’s site!

    I need to stress, since some people miss the point of these posts, that if you’re only going to use one feature of a product this big, you should reconsider if it’s the best use of your time.  If you only want to use one for now, and plan to grow, that’s different altogether.  In each of my examples, I’m presuming that the user plans to only use that one specific feature, and I will address alternatives.

    Activity Streams

    StreamsThis is actually my favorite thing about BuddyPress.  If you post in a blog, or a group, or a forum, all of that gets pulled into ‘Sitewide Activity.’  That’s right, every last bit of your site is on one big page!  Now, if you’re only using WordPress as a blog (no groups, no forums, JUST a CMS/blog), you’d think “I want this because I want a page that lists all my comments from all my posts!”  To an extent, you’re right.  There isn’t a better way to do this!  Or is there?

    There’s already a widget in the default WP install and theme for ‘Recent Comments’ which shows all comments, right?  And there are plugins that can show Recent network wide comments too.  So if you’re really lazy, why not use Widgets on Pages and call it a day?

    Extended Profiles

    If all you need is fancy profiles, BuddyPress is way overkill.  In fact, for super cool profiles, most people use a plugin to extend the defaults!  What’s the alternative? There are a lot of profile related plugins in the WordPress repository, and it just matters what you want.  Personally, I’d caution against using those default Yahoo/AIM ones in our current profiles, as they may be going away. By the way, many of those profile plugins can add in extra fields to use on registration as well, like Cimy User Extra Fields.

    Local Avatar

    This isn’t a promoted feature of BuddyPress, but I’ve seen a lot of people do this.  Yes, BuddyPress can let you use local avatars for your users, this is true, however so can plugins like Add Local Avatars.  Frankly, I’m a proponent of Gravatar, since it works, and much like YouTube, I’m no longer responsible for you uploading nudie pics.  Keeps legal brouhahah off my back.

    Friend Connections and Private Messaging

    ConnectionsWhile there are plugins like Private Messaging for WordPress out there, I have to hat-tip BuddyPress for a fully integrated front end PM system.  This is one of the moments where, hands down, I would seriously consider using BP just for one feature.  Ditto Friend Connections.  I’ve just never seen its equal, and since the odds are most people would be using it for both friends and PM, it’s a great reason for BuddyPress.

    WordPress Blogging

    I don’t even know where to start.  Someone insisted the only way to use WordPress for blogging was to install BuddyPress.  It was a moment where I wanted a button to press to make a giant mallet jump out of his monitor and bash his head in for not reading.  (By the way, you also don’t need MultiSite to use BuddyPress anymore.  It works just fine with single site.)

    Groups

    This is tricky.  Part of me wants to say ‘Just make a page and let people comment’ because, to some degree, that’s all a group really is.  It’s a fan page (ala FaceBook) which shows posts in reverse order.  Like a P2 blog.  Which means that it’s not insurmountable to make a single page for your site that behaves that way (or a subsite running P2 if you went the MultiSite way).  But is that the best way?

    Forums

    AgoraIf you just want a forum, just install bbPress.  Nuff said.  Now, knowing that bbPress 2.0 is now a 2.0 plugin, and that BuddyPress is still on 1.2 (I think), and that the import from bbPress 1.x to 2.0 is a bit iffy, I would really be cautious about using bbPress if I know I want to upgrade to BuddyPress in the future.  Connecting the bells and whistles are interesting.

    What about you?  What reasons have you seen people use to justify BuddyPress when it was clearly overkill?

  • Risk Theater and Open Source Testing

    Risk Theater and Open Source Testing

    Audits Are Fun!We make multiple test environments and platforms, testing with hundreds of users.  We perform stress tests (how much traffic can my site take?), and have an obscene amount of checks and balances to ensure that only code that is good makes it into the file product.  We have teams who question every change asking “Do you need this?” or “What’s this function for?”  We audit every update process and ensure that our work is as good as we can make it.  This is all done, we say, to reduce our risk.  Our software, we insist, will be better if we do all these things.

    But the failure rate has not dropped.

    Initially, when a product is released, there’s a spike of failures.  We didn’t anticipate that, or this didn’t work like we expected it to.  Those are not classified as ‘failures’ but as kinks to be ironed out.  Six or seven months down the line, we’ve released another set of itterations to fix the worst offenders and our failure rate drops to a comfortable rate where, most of the time, everything’s fine.

    What if I told you that one in five IT projects was a success?(Source: Statistics over IT Failure Rate)

    What if I told you that all your myriad checks, balances, testing, forms and CYA dances didn’t make anything less risky?

    What if I told you it was all Risk Theater.

    Of course you can do things in a less risky way.  If given the choice between dismantling a bomb in a nice quiet room, where you have all the time in the world and a blast shield, or doing it on the back of a van while being shot at and you only have 30 seconds, everyone would point at that room and say ‘Less risky!’  And they’d be right.  The problem with risk is that there are often, if not always, external forces that perpetuate risk.

    We have to ask ourselves “What is risk?”  We can look at it mathematically.  Risk = {si, λi, xi} – and most of us have no idea what that means.  Risk is not a magical number that says “Defusing a bomb is this risky.”  Determining risk is how we discern how likely something is to happen, and from that, what is the likelihood of an unwelcome outcome.

    Too often risk is defined as risk = likelihood * consequence and safety = 1-risk

    This can misinform: acceptable risk is a consideration of likelihood ANDconsequence, not a simple multiplication with safety as the additive inverse of risk. Acceptable risk and safety are normative notions, changing with situations and expectations, and must be assessed accordingly. (Source: Woody’s Perspective – by Steven A. “Woody” Epstein)

    Risk analysis, for all it’s a mathematical discipline, is just that.  A discipline.  That means the numbers matter far less than you think they do, and if all you do is look at the numbers and say “But we’ve predicted a five point uptime!” then you’re ignorant of the truth.(A five point uptime refers to the claim people make of providing 99.99999% uptime.  The five 9s after the decimal point are feel-good numbers/)  The trick to it all is that variation is something computers are phenomenally bad at handling.  Look at your computer.  It’s what can be best described as a ‘brittle’ system.  If you throw something a computer’s never seen before, it tends to react poorly, because unlike the human brain, it can’t adapt or improvise.  It can’t know “Oh, you meant ‘yes’ when you typed ‘yea’” unless some programmer has put in a catch for that.  On some systems, it may not even know the difference between an uppercase Y and a lowercase y.

    Variation in LeavesVariation is nature.  It’s reality.  It’ll never go away, either.  The point of risk analysis is not to come up with that number to say ‘By doing foo, we are x% less risky.’  The point is to look at the system and understand it better.  The point is to learn.  The act of explaining and defining the process, whatever it is from changing a tire to pushing software to a few hundred servers, is what makes a process less risky.  You understand what it is you’re doing, and you can explain it to someone so they too can understand it, and now you know what you’re doing.  The numbers will come, but they’ll also change over time due to variation.

    We mitigate our risk by understanding, testing and documenting.  But just as you can never have 100% uptime on a system (you have to upgrade it at some point), you cannot excise risk entirely.  On the other hand, we cannot ignore the need for testing.

    A woman named Lisa Norris died due to a software error, caused by a lack of testing.  All the safety checks, the manual monitoring and brainpower failed because the automated system wasn’t tested.  Prior to the automated system going online, the old way was for people to manually transcribe medical dosage.  This was felt to be ‘high risk’ because there was a risk of transcription error.  However nowhere in the incident report were any ‘manual errors’ noted, prior to the automated system being used. We can assume, then, that any manual errors (i.e. transcription errors, the risk the system was meant to abrogate) were caught in-flight and corrected.  The automated system does not appear to have ever been tested with ‘real world’ scenarios (there’s no documentation to that affect that anyone investigating the situation had found).  If they had run simulations, testing with data from the previous, manual system, they may have found the errors that lead to a woman’s death. (Source: Lisa Norris’ Death by Software Changes – by Steven A. “Woody” Epstein)

    There remains a possibility, however, that even with all the testing in the world, that the error that led to Miss Norris’ death would have been missed.  So how do we make testing better?  As long as we’re only testing for the sake of testing (i.e. it’s expected, so we do it), or we follow the standard test plan, we miss the point of dry testing.  Even people who stick by their ridgid test scripts are missing the point.

    Open Source software, however, gets the point.

    Monkeys sans keyboardsYou see, we know we can’t test everything, and we know that we’re going to miss that one variation on a server where code that works a hundred times on a ninety-nine servers will fail on that one where it has a tiny difference.  And yet, if a million monkeys banging on a million keyboards could write Hamlet, then why can’t they fix software?  They can help cure AIDS, we know.  Crowd sourcing knowledge means that you let the monkeys bang on your data and test it in ways you never imagined it being used.  No longer driven by a salary (and that really does lock your brain in weird ways), the monkeys (and I’m one of them), cheerfully set up rigs where we can roll back quickly if things break, and start just using the iterations of software, coming up with weird errors in peculiar situations.

    We always talk about how we want to lower the bar and make products more accessible to more people.  Make it easier for them to use.  In order to sustain that model, we need to embrace the inherent risk of software and teach the users how to correctly perform basic troubleshooting and report real errors.  To often we write our code in a vacuum, test it in a limited fashion, and release into the wild knowing there will be a second release to fix things.  As development matures, we push out more changes more often, small changes, so people are eased into that new thing.  We step out of isolation and embrace the varations of how our product will be used.

    Now we need to get our users to step out of their isolation and join the monkeys.  We can’t make things better for everyone unless everyone is a part of the improvement process.  We must ease these users into understanding that every software product is ‘in progress’, just like we taught them to accept that all webpages are perpetually ‘under construction.’  Our dry tests will never be complete until we can determine how to safely bring them in.  Maybe we make smaller changes every day, like Google does with Chrome, such that they never notice.  Or maybe we ask them to ‘check the box to join our test group and get cool features before everyone else!’  But we must do it, or we will fall behind in giving the users what they want, and giving them a solid, safe, secure product.

    Until then, we’re not analyzing or assessing actual risk, we’re merely players in risk theater.

  • Oversight and Responsibility

    Oversight and Responsibility

    I was actually asked by a handful of people what my thoughts on this were, and while part of me is loath to wade in(I’m loathe because someone will accuse me of being pro-WP or anti-Devpress, and ignore the fact that I’m a Devpress affiliate or that I don’t work for WP. I don’t pretend to know all the answers, or the reasons, but I know what bothers me.), I agree it’s something that affects the open source community. Personal attacks aimed at me will be deleted.

    I’ll let WPCandy sum it up:

    Yesterday I posted about DevPress’ offer of free memberships to any WordCamp attendees, provided the WordCamp organizers are legit and contact DevPress about their interest. A number of organizers showed interest in the comments of that post, and WordCamp Philly organizer Doug Stewart announced the deal for attendees on their blog.

    Then, last evening, WPCandy was contacted by Andrea Middleton, who took an administration role with WordCamp Central earlier this year. Middleton notified WPCandy that the WordCamp guidelines (specifically the part on fundraising), WordCamp organizers should not allow companies that are not sponsoring their event to do giveaways at a WordCamp.(Source: WPCandy – Devpress deal for WordCamps is against WordCamp Central Guidelines.)

    They cover the situation pretty well, but the comments on WPCandy and the twitterverse is what has upset me, greatly. This whole mess was blown out of proportion and could have been handled quietly and maturely off book, without any of the name slinging and pointy-fingers that I’ve seen.

    What went wrong?

    WordCamp Philly should have said “Let’s double-check about the rules, because this is a grey area.” They made a perfectly understandable human ‘gaff’ and assumed it was cool, because we all know Devpress is cool and GPL and basically awesome.

    WordPress Hand StampDevpress should have said “I want to give things away at WordCamps.  I’ll ask the head honchos at WordCamp and find out what I need to do!”  They too made a perfectly normal mistake, assuming that WordCamp Philly would do any needed due diligence.

    One of the many things I’ve learned working for The Man is that people see a server on fire and always assume someone else has reported it, right up until you run in with a fire extinguisher and shout at them.(That’s a true story.)  I always quote Lord Buckley here: If you know what to do and you don’t do it, there you bloody well are, aren’t you?

    The right thing was to look before you leap and not assume.  People made mistakes.  They could have kept it all off the funny pages, too, by being patient.  WordCamp telling WPCandy “Hey, sorry, not so much kosher.” was a polite heads up and WPCandy, being journalistic in inclinations, ran with the story.  Devpress’s rep was, understandably, frustrated and upset at the smack down and at the slowness of resolution, and it showed.  But as a ‘formal’ statement, his email is the example the need of a bit of PR.(This mess is in part why I don’t consider websites like WPCandy (and certainly not this site!) to be journalism.  There’s an attitude and (supposedly) ethics to which journalists abide and a code to follow about how to handle this.  One of them is that WPCandy’s email should have explicitly stated that Justin’s response would be posted on their blog.  I studied journalism for a year, and I know I’m not a journalist!)

    Who is right?  Devpress or WordCamp?

    A lot of ‘right and wrong’ ties into my last two big posts, about legality and morality. I’ll put it plain and simple for you: If you’re going to have a WordCamp, which is sanctioned and branded by WordPress, then you are obligated, legally and morally, to abide by their guidelines.

    The rest of the bitching is commentary. If you don’t like WordPress’s rules and regulations, don’t use them. It’s just like the theme and plugin repos. If you don’t want to follow those guidelines, then you self-host, and as long as you abide by GPLv2, everyone’s happy. But WordCamp is run by WordPress, and they get to make the rules. No one’s stopping you from making ‘BlogCamp’ or whatever you want. You could probably even get away with using ‘Word’ in the title, though you would be wise to make it painfully clear that it was not a sanctioned WordPress event.

    WordCamps are an extension of WordPress.org and the WordPress Foundation, which means that they are not community ‘owned’ products, though they are community driven.  Maybe people are forgetting that, at the end of the day, the responsibility for WordCamp, and WordPress, is not us.  We’re the result, and the reason, but not the responsibility.  If WordPress vanished tomorrow, we could fork it and move on, make our own forums, and actually be okay.  But right now, we’re all taking advantage of a free product.  We give up our time and our efforts for something that doesn’t directly make us money.

    Why isn’t the community in charge?

    That points right back to the heart of the issue for me.  The community isn’t in charge because it’s not a Big Dog.  At the end of the day, every project needs someone to stand up and say “This is what we’re doing.”  We need a big dog, someone to be in charge, and someone to draw a line.  A lot of people have made noise that this should be a person the community votes on and approves.  I disagree.

    WordPress was never about ‘community’ in that sense.

    The community doesn’t provide oversight to the plugins, the themes, or the forums on WordPress.org.  Sure, we volunteer our time, but we don’t all have trac commit privileges, do we?  We are not where the buck stops for this, and we have to keep that in perspective. You can tout all you want about doing what the ‘community’ wants, but the community provides ideas, suggestions, dreams and hopes. Someone else looks at the bottom line and says yes or no.

    Fly Again - Some rights reserved by cornerofartThat’s really very freeing to me.  That makes it easy for me to say ‘You know, I really hate this new thing.’ and I don’t feel like they’re going to revoke my license.  As long as I keep it all in perspective and remember that I don’t have to like it, but as long as I play this game, thems the rules, and it’s okay.  You can support the tool without loving every aspect of it, and no one says otherwise.

    The responsibility of oversight belongs with WordPress, not you or me, and the fall out does too.  A community has trouble being in charge like that because oversight ‘committees’ rarely work to anything but mediocrity.  As it stands today, WordPress is benignly governed by a company who listens, pays attention, and respects us, even if they don’t do everything each individual wants, and they keep their eye on the scope. (Perhaps by comparison, you should read up on the growing pains Drupal’s had recently.  Not enough oversight there, perhaps, but I have to study more about their entire situation to know for sure.)  If everything goes great, we ignore our overlords, and when we don’t like something, we vilify them.

    Why are you so mad about this?

    The vilification.

    I’m upset to see people being mean to each other. People are blaming each other, calling names, and pointing fingers. Of course this is a situation that makes people angry and emotional, but if we’re running a business, we don’t get the luxury of doing that publicly anymore. You no longer speak for yourself, you speak for your group.(I run a fan website for an actress.  Every single time I speak my own speculation about the TV show she’s on, someone assumes I know something secret and am not telling them, or I’m hinting at what’s to come.  I no longer am able to speak for me the fan because of this.  Trust me, I know how daft it is, and I hate it.)

    But the problem is I see a lot of name calling aimed at one person alone. That really bothers me because it looks like people are attacking a person and not remembering that the WordPress Foundation manages WordCamps. NOT the community. NOT the sponsors. NOT you or me. Hell, not even the volunteers who are doing the work!

    The Foundation.

    If you have a problem with WordCamp and the WordPress Foundation, do the right thing and take it to them.

    Most importantly, we need to be patient with each other. You don’t change the world in a day. Sure, we’re used to a fast paced world, where decisions are made on a dime and the whole status quo changes in the time it takes to svn up. But things still need to happen with thought and understanding. We have to look at the whole situation. And that’s why with responsibility comes the need to have oversight.

  • The Morality of Forking

    The Morality of Forking

    Having already established that Forking is Legal, I felt it best to take the other end of the argument.(This was intended to be all one post, but at about 3000 words, it needed to be split up.)

    Clarification here. Jigoshop is a product of Jigowatt. I call them Jigoshop in both my posts because it’s easier for my brain.

    Gil Rutkowski remarked (without knowing I was already writing this):

    Funny how people pick and choose between the “SPIRIT” of the GPL and its literal legal application to fit their argument. (@flashingcursor on Twitter)

    Two ForksWe often sum up GPL as “Do what you want with this software. Just let other people do what they want with the software you make from it.” If you’re not familiar with it, I think I can sum up the spirit of GPL as “Don’t be a dick.” (Wil Wheaton in Exile) People get in a lot of arguments about the ‘spirit’ of things. You’ve probably heard someone complain “He’s following the letter of the law, but not the spirit.” Basically what that means is someone is obeying the law, but not what it means.

    How can that even be? If the law is the law, then the law is the law and there should be no wibbly wobbly involved! It happens because of intent. The intent of the law in general is really something we shouldn’t have needed to be told in the first place, when you think about it. Primum non nocere: First, do no harm. Doctors are taught this, and you’d really think that’s self-evident! And yet, even the US Declaration of Independence starts out “We hold these truths to be self-evident…” If they were self-evident, why are we saying thing?

    People are selfish. We care about ourselves first, then the people closest to us, and so on and so forth. To say the ‘spirit’ of the law means we’re no longer actually talking about the law as a legislative statute, but about the idiomatic application there of. We’re now talking about how we feel the law should be, which is pretty iffy territory. Talking about the spirit of the law brings up things like the moral ambiguity of the law, and the ethics we try to impose on others. What’s ethical for me may not be so for you, and so on.

    So what does the moral aspect of GPL have to do with the recent forking of Jigoshop’s eCommerce plugin? Interestingly we can see how both parties ended up at the fork because they were selfish. Jigoshop didn’t want to give up control and neither did WooThemes. Neither was willing to concede, and in a way, they both ‘lost’ because of it.

    Melted ForkWas Woo being a dick to fork the plugin? Yes. And no. You have to keep this in perspective.

    You see, no one has made a ‘Killer’ eCommerce plugin for WordPress. Not even Jigoshop. From what I’ve been told, Woo has struggled to make their own killer plugin for eCommerce, and failed at it. I will leave it to others who actually use eCommerce on their sites to determine which plugin is queen, but I feel comfortable saying that taking someone else’s work, even when you credit them, can be a dick move.

    At the exact same time that WooThemes is being a dick for forking, they’re doing a right thing. No that’s not a typo, they are doing A thing that is right. We all know that ‘hacking core’ for WordPress (or any app) is a terrible thing. Merging changesets is a nightmare, no matter what tool you use, and a fork makes it just as hard to incorporate changes. So would not a better solution be to make a WooTheme add-on plugin that just changed the parts of Jigoshop they didn’t like? A Woo/Jigo integration plugin?

    That would be a wonderful, perfect world. Let me know when we get there. Sometimes the direction of a plugin is such that you have to fork it to do what you want. The developers don’t want to follow your dream of unicorns and puppies. Until we reach the perfect world, we fork. Now, it took a bit of reading to verify that WooThemes was unable to make their desired changes without editing core plugin code. That left them with only a few viable options. They could submit the changes to Jigoshop and hope for the best, or they could hack the Gibson. Basically, this was the best choice for WooThemes and really, nothing’s wrong with that.

    The problem is that WooThemes is going to be making money off this acquisition. Their WooCommerce plugin will be free, just like Jigoshop, but just like Jigoshop, they aim to make a living off the plugin. Off someone else’s work. To be fair, that’s what I do. I support other people’s ‘stuff’ all the time. I’ve not written a lick of code for Windows in years (except DOS and PowerShell scripts) but their products pay my bills. Does that make me a thief?

    No, it makes me an opportunist. WooThemes is being opportunistic as well. Remember how I said we are, all of us, selfish? Well so is Woo. They see a chance to make money and use a plugin that works, and not their own with a weird history. (Did you know Nacin was once going to head up WooCommerce before he was snatched by Matt? That’s fun to look at in retrospect.) Woo had a series of unfortunate issues with their own plugin, and it never worked right. They weren’t a dick because they talked to Jigoshop first (they didn’t have to), and I rather hope they said ‘Okay, we’re going to agree to disagree on the direction of the plugin and fork it.’ If Jigoshop first learned of the fork via Woo’s blog post, then they were entirely dicks.

    Was Woo being a dick to ‘head hunt’ the developers? Yes. And again, No. Yet again, perspective is important.

    I said before that the developers they ‘stole’ wouldn’t have left if they had a reason to stay. People leave companies all the time for myriad reasons. They also stay with companies for others. In the ‘traditional’ corporate world, people get a job and stay with it for a million years. In the freelance world, though, people switch jobs around a lot more. Even so, people only leave companies for three reasons:

    1. They hate it here
    2. They found something better
    3. They were let go

    That’s really it. So if someone chooses to leave a company, options one and two are there on the table, and you have to be honest to ask if they would have left if Woo hadn’t made the offer? And there’s where the dick move possibly lives. Was it Woo’s promise of skittles and beer that made them leave, or was there something wrong at Jigoshop? It’s far too early to point fingers at anyone, especially the developers who may discover they made a poor choice. You have to take risks, after all, or you never succeed.

    WooThemes was dickish if they bribed away the developers. But they weren’t if this was just one of those serendipity moments. What if the developers said ‘Wow! Woo shares our vision!’ We don’t know, so we have to speculate, but either way, the decision was the developers and not WooThemes or Jigoshop, so any dickery actually belongs to the devs and them alone.

    Twisted ForksSince I was asked, my personal opinion is this: WooThemes pulled a dick move which in no way violated the letter or the spirit of GPL.

    See the spirit would have been violated if, as another shop did recently, they lifted the plugin wholesale, made a couple tweaks, rebrand it, and released it without telling anyone. You know who I’m talking about here. That was violation of the spirit of GPL. But WooThemes was upfront about this. They talked to Jigoshop first, and everyone seems to have known what was going on before the news broke.

    While I dislike that WooThemes did this, I will defend their right to do so (and Jigoshop’s right to be upset) until the day we all stop using GPL.

    The whole reason I wrote the first post, however, was the high number of people I talked to who said that the spirit of the law was violated. It really wasn’t. Yes, these were dick moves, but the spirit of the law is the meaning, and the meaning of GPL is that you can’t impose more restrictions on a GPL product than it started with. No one did that. What Woo did was pretty shitty to their neighbor, don’t get me wrong, but it didn’t kill GPL. It hurt feelings and left a bad taste in the mouth, but that’s not the spirit of GPL either.

    The Spirit of GPL is freedom. It’s sharing your work, working together, and when you take someone’s work, being open about them and crediting them. And while you don’t have to like what Woo did, they did not harm the spirit of GPL, because we’re all here, talking about it and still abiding by it.

    I can but hope that the fallout from this is that we’ll finally have an eCommerce plugin that stands up as the best because of worth and not because that’s all we’ve got, but we’ll have to wait a couple of years for that to settle.