Free Software Audio Production, Part 1: Setting up JACK

A few months ago, I became very curious about audio production. The idea of writing, recording, mixing, and distributing my own original music has long been an enticing fantasy. But most of all, I wanted to know: is it possible to use only Free Software to produce good music?

The short answer is, ultimately: yes, you absolutely can! It’s entirely possible to use a Linux distribution as a daily driver, and leverage a workflow that only contains Free Software applications.

The longer answer is, again, yes. But there are some fundamental quirks to consider, and you’ll need to expand your knowledge a lot in order to get a usable workflow. I’d love to talk about my own setup, what tools I use, and what things I had to do to get the whole stack working.

Today, we’re going to focus on the basics: getting JACK audio set up with a desktop GNU/Linux distribution.

Linux Distribution

There are a couple of Linux distributions available today that focus specifically on audio production, such as Ubuntu Studio or the more contemporary KXStudio. That being said, you can pretty much use any general Linux distribution you please.

In my case, I ended up sticking with elementaryOS, which is a great generalist distro that focuses on visual design and usability.

Low-Latency Kernel

One important tweak that I made was that I installed the lowlatency Linux kernel, which is a must if you’re working with real-time audio applications. Most deb-based distributions have a package for this, which makes installation easy:

sudo apt-get install linux-lowlatency

After installation, you can load that kernel specifically by rebooting and choosing your kernel options in GRUB. You should boot to this kernel whenever you intend to work on audio production.

Understanding JACK

The sound system situation in Linux has historically been a mess in one way or another. Despite the existence of backends such as PulseAudio, or perhaps because of it, users can find it challenging to get different audio applications to play nice with each other.

For example, you might be using ALSA to play an audio track in a music sequencer, while simultaneously using a PortAudio application to record microphone input. If you’re trying to use real-time microphone monitoring, this can confuse applications such as Audacity!

One great way to work around this is to use JACK, which is specifically geared for audio production work. The project describes itself as infrastructure for audio applications to communicate with each other and audio hardware.

Have you ever wanted to take the audio output of one piece of software and send it to another? How about taking the output of that same program and send it to two others, then record the result in the first program? Or maybe you’re a programmer who writes real-time audio and music applications and who is looking for a cross-platform API that enables not only device sharing but also inter-application audio routing, and is incredibly easy to learn and use? If so, JACK may be what you’ve been looking for.

It’s a bit of a beast to work with, and can initially seem intimidating to newcomers, but JACK is extremely versatile and makes up for a lot of shortcomings one might feel when trying to use ALSA or PulseAudio.

There’s a few steps to setting JACK set up, so let’s run through them.

Step 1 – Install JACK

JACK is pretty widely packaged across Linux distributions, so you should be able to easily obtain it from your distribution’s package manager.

In a deb-based system, you’ll likely want to run:

sudo apt-get install jack-tools qjackctl

Step 2 – Add Real-Time Permissions

This part is a little more hairy, but we only have to address it once. Basically, we need to make sure that the system gives the JACK daemon permissions for real-time capabilities. The official JACK site has a really great guide that makes this process pretty cut-and-dry. Here’s what I did specifically:

Create a file at /etc/security/limits.d/99-realtime.conf

Give the file these contents:

@realtime   -  rtprio     99
@realtime   -  memlock    unlimited

Then create a realtime group:

groupadd realtime
usermod -a -G realtime yourUserID

Where yourUserID is whatever your system user id is.

After that, just log out and log back in!

Step 3 – Use QJackCtl

The easiest way to use the JACK system is to use a frontend – otherwise, you’re going to have to do everything in the terminal. qjackctl is a great app that makes this process mostly transparent.

The UI for QJackCtl, an interface for handling JACK audio
qjackctl, a qt-based frontend for handling the JACK system

All you need to do is click Start, and the daemon will begin. During this time, it may block audio coming from other backends, such as YouTube videos playing in Firefox. I’m not sure whether this is a bug or intended behavior, so as a rule I simply turn JACK on when I need to work with an audio application specifically, and turn it off when I need to use other programs.

Moving forward, I’ll dig into what audio apps I’m using specifically, and some lessons learned in getting them to play nice with JACK.

The Price of Freedom — A Review of the Librem 15 v3

Edit: Thanks so much for your feedback! An earlier version of this article missed a few key points — check out the FAQ on the bottom of the review.

Purism is a wild startup located in South San Francisco. Their mission? Providing a superior hardware experience for people who love privacy and software freedom. Purism is building and shipping GNU/Linux laptops, and is interested in developing a phone as well.

The Purism campaign originally launched on CrowdSupply late 2014. Since then, the company has shipped two revisions, and now offers three different models to choose from: an 11-inch convertible tablet, a 13-inch laptop, and a 15-inch powerhouse.

For a few years, I have strongly desired having a quality Linux laptop that has great hardware. So, I’ve taken the plunge on getting the latest 15-inch Librem model from Purism.

Buying Experience

Purism is a much newer brand compared to other, more established computer companies. So far, this company has largely dealt with a crowdfunding purchase model — in short, you donate X amount to the campaign, and receive physical hardware as a contribution reward.

Generally, this model of fulfillment takes a lot longer than more traditional on-demand methods of manufacturing a product and shipping it.

Purism seems to have outgrown this way of doing things, and now takes orders directly from their site. I placed my order on June 28th, with an estimated delivery in July 2017.

Because I was traveling in the middle of July, I reached out to their support team for when I might expect the order. An agent got back to me in less than 24 hours, and cheerfully informed me that the team would bump up my order in the queue.

Sure enough, my laptop arrived ahead of schedule.

Hardware

My first impression of the hardware was pretty positive. The v3 ships with an anodized black finish, and the frame feels sleek and solid. The only downside here is the color — it immediately attracts smudges.

Purism branding is completely nondescript — there’s no logo of half-eaten fruit on the lid. Only a humble brand sits on the bottom of the device. I’m vaguely reminded of Soylent.

Smudges aside, Purism has really done their homework on hardware. Everything works out-of-the-box, and with a few minor adjustments I found myself getting comfortable.

Coming from a world of Macbooks, I was initially disappointed with the trackpad, which felt less smooth and much slower. Gnome applications don’t all deal with multitouch in the same fashion yet, either. The good news is that the trackpad’s responsiveness can be managed by adjusting the cursor speed.

Power management in laptops has long been an achilles heel for many GNU/Linux distributions out there. Many laptops offer motherboard configurations and hardware combinations that are under-documented, which can lead to issues with suspend and waking from sleep.

Happily, Librem wakes from sleep with no issues to speak of. Wireless drivers pick up right where they left off, and the whole system feels smooth and responsive.

The device ships with a 3.1GHz Intel Core i7 CPU. This is from the Skylake family of Intel processors, and it works favorably well. By default, this laptop comes with 4GB of DDR4 Memory and a 120 GB SSD. For the purposes of my convenience, I upgraded to a 250GB SSD and 8GB of DDR4 for $138 extra, bringing my overall cost to $1,737.

The Atheros wireless hardware is well-documented to work with Linux-based systems, and performance of the Intel HD Graphics 520 is perfectly comparable to a mid-range 2017 Macbook Pro. That’s important, because those graphics have to support a 1920 x 1080 matte display @ 60Hz, and the picture looks all the better for it.

Bluetooth does not currently work without installing proprietary firmware, but the hardware does indeed ship with a bluetooth module. Purism is currently trying to hire a developer to write a libre driver for it.

In the third revision of the 15-inch, the number of kill switches has been reduced to just two, and they have been moved from the side of the computer to the hinge of the monitor. The kill switches can disable wireless, bluetooth, the microphone, and video all on the hardware level.

The web cam and microphone work well, and the video quality is comparable to a high-end Macbook. In good lighting, images look vibrant, and the picture remains sharp with a decent framerate. Video calls should for the most part be smooth, though that still depends on what app you’re using as well as your internet connection.

Additionally, if you’re coming from a 13″ Macbook, the keyboard will feel strange to you for about two days. I had to retrain my fingers to account for a change in key spacing and hotkey combinations.

Software

PureOS running stock Gnome. Theme customizations set by me.

Purism’s laptops ship with PureOS by default, which includes a stock Gnome 3.22. PureOS is based on Debian, and generally seems to work with Debian/Ubuntu packages. For proprietary debs (Slack, Steam, Skype, etc) you may have to do a little detective work to determine their dependencies to get them to run properly.

By default, the system runs on Wayland, the new display successor to Xorg, and you’ll barely notice. Overall, the new display server works perfectly well with Intel graphics, and the Mutter compositor in Gnome runs quite smoothly. A basic glxgears demo can pull somewhere between 66 to 76 FPS — part of this is because Wayland has excellent support for running classical Xorg applications in a wrapper (XWayland).

This works nicely as a glue layer for apps that have not natively implemented Wayland support yet themselves, but XWayland’s support for drawing tablets is only available in upstream Gnome. As a consequence, I’ll have to run a Xorg session any time I want to get some digital painting done.

On a similar note, Coreboot is present, but practically invisible in terms of system operation. It’s definitely on the Librem, but the boot process is quick and Coreboot mostly stays out of the way. Thanks to the use of open source graphics, the boot system is visually smooth and animated.

One nice surprise is that PureOS was able to play all of my backed-up music from iTunes, making this transition a million times easier than expected.

Web Experience

Most people would generally agree that desktops and laptops are increasingly using web applications in lieu of native desktop apps. If an OS is capable of providing a solid experience for web, the computer can meet most basic user needs, from social networking to processing tax returns. We can already see minimal examples of this taking hold in the market — take ChromeOS, for one.

How does pureOS stack up?

I ended up choosing Gnome Web as my default browser because it integrates directly into Gnome. Despite a few minor quibbles (why can’t tabs be pinned?), the WebKit support it ships with is very, very good. Multimedia plugins work out of the box (just install the GStreamer plugins), HTML5 media elements are incredibly smooth, and web applications all render correctly without any major issues…except for one.

When I initially tried to write this review, I found that Medium.com prevented me from creating or editing any stories. This is because Gnome Web, my browser of choice, is not officially supported. A quick application of a spoofed user-agent string completely fixes the issue, however.

Overall, the web experience works well. The Librem’s display lends itself to a high resolution, with fonts rendering smoothly and HTML5 sites working out-of-the-box.

One novel feature of Gnome Web is that it is possible to turn websites into web applications for the desktop. This is accomplished with a minimal wrapper, similar in fashion to Electron. This works particularly well for apps that don’t have Linux versions. Above is the team inbox Front, and it looks practically native.

Wrap-Up:

Overall, my experience with Librem has been highly positive, and I’m glad to switch away from a Macbook Pro for it. Though this is a system that will require some configuration to fit a person’s liking, it’s essentially a “set and forget it” affair.

Is it worth it?

For some people, this all may seem like some masochistic pursuit of technological asceticism. If you don’t have a reason to switch to a Linux-based system and don’t particularly care about proprietary drivers on your computer, this product probably isn’t for you.

Some people may balk at the price of Purism’s products, but I’m convinced that this was the right purchase for me. The dependent factor here involves two things: how experienced you are with using GNU/Linux, and whether you care about Free Software or privacy in computing.

In a way, this product is something of a philosophical statement for people who are interested in both. If you’re comfortable in a *nix environment, want to use a Free Software OS full-time, and prefer a premium build quality, this is a great laptop.


FAQ

A number of people wrote in with additional questions that were not covered by this review. I wanted to take a moment to clear up any ambiguous details that people wanted to know about.

Q: What’s the deal with the BIOS? Is it running Coreboot? Is it 100% free?

Librem v15 rev3 ships with Coreboot, and the experience is rather nondescript. Apparently, using the application me_cleaner makes it possible to get about 98% of the binary blobs free, though that means there is more work to be done.

Purism intends to get Coreboot support on all of their devices, and are working on improving me_cleaners capabilities to remove more of those blobs. At some point, it may be entirely possible Purism products will even support Libreboot by meeting the Respects Your Freedom certification requirements.

Q: How quick does a cold boot (power off, not sleeping) take?

The entire system can boot to desktop in under 10 seconds.

Q: How are the shortcut keys?

Overall, key placement and spacing is good, but Purism has made a few unusual design decisions with hotkeys. Volume has been superimposed on the up/down arrow keys, and there aren’t any dedicated keys for media controls. This can be fixed with a basic key remap, but it is initially puzzling.

Q: Is the whole body aluminum as the macbooks or does it have a plastic frame?

The entire body seems to be anodized aluminum. The only exception is the hinge, which is plastic and not noticeable.

Q: What’s the experience like on disassembly?

Although I haven’t dived into this too far yet, the laptop is designed to be 100% serviceable, meaning that you can take it apart completely and swap out components to your liking. The screws aren’t proprietary, nothing is sectioned off, and you can play with the guts of the machine all you’d like.

This guy’s video on the Librem 15 v2 is super informative on the subject: https://www.youtube.com/watch?v=thjkyGIMlyc&t=19s

Q: What does the warranty look like?

By default, the Librem ships with a 1 year warranty (you can upgrade to a 3-year during checkout). I haven’t needed to use it yet, but if anything comes up, I’ll update my answer to this question.

Q: Where is Purism at in dealing with the Intel Management Engine?

It is now possible to neutralize Intel ME, and the Purism team is doing some extra QA on it to ensure that there aren’t any nasty performance or driver regressions that come out of enabling the fix. Here’s a post back from March about the team’ experience with it so far.

Random Thoughts on Making a Free Software Adventure Game

I’ve been wanting to get back into game development as a hobby for a while – I used to do it years ago, but can no longer rely on Adventure Game Studio as a tool, due to the editor being windows-only with little chance of a port happening anytime soon.

I have been looking at the Godot game engine, which is Free Software and has many powerful capabilities for 2D games. I’ve played a number of game demos with it, and I believe that it could be just the system I need. It’s very different from what I’m used to, and will take a long period of practicing tutorials and building stupid demo games before I start making any real progress anywhere.

I really, deeply, truly love adventure games in the style of the Sierra titles that I played as a kid – these include King’s Quest, Space Quest, and most notably, Quest for Glory. I have spent a lot of time attempting to better approximate the visual styles and the type of gameplay that these older titles used to offer.

I recently had an idea about implementing different cursor modes in a Godot engine. Although I know very little of how Godot’s internal code system works, I believe that I could effectively create different interaction cursors by declaring global variables. Something like:

def cursorMode {
cursorMode() = c

function cycleCursor() {
  if cursorMode(c) = 0 & RightClick {
  setCursorMode(c) + 1
}

else if cursorMode(c) > 5 & RightClick {
  setCursorMode(c) = 0
}

Mind you, I’ve never been a particularly great coder, so there are probably some conventions that I am missing here in one form or another.

The main idea is that you have cursor modes 0-5, which covers Walking, Looking, Interacting, Talking, and Inventory. If a player right clicks on the final cursor mode, the mode variable is reset to the first one.

You could then define interactions with objects in their relative scripts, such as this:

// Rock
object Rock {

if cursorMode(c) = 1 {
  display("You see a rock.");
  }

if cursorMode(c) = 2 {
  display("You touch the smooth, cold surface of the rock.");
  }
}

Obviously, I will need to crack open some books to better understand the semantics, especially in relation to Godot system syntax, but I would be very interested in figuring out how to put these fundamental building blocks together.

Meeting Free Software Federated Folk in Meatspace

Meeting people in person for the first time is always kind of awkward – especially if you’ve never seen them before, and you also happen to really respect their work. You can find yourself walking down a long road with growing anticipation of things getting real. You’ve never been to this Mexican restaurant before, you’ve never met this person, who knows what could happen?

I got to meet Chris Webber from MediaGoblin while I was visiting San Francisco. I usually feel sort of antsy when I meet people in person for the first time, but that all evaporated as soon as we shook hands and said hello.

Chris has a great personality. It was wonderful talking about our different points of view on federation, and the schools of thought that have come up surrounding different implementations. We talked for three hours about Free Software, desktop environments, project philosophies, federation concepts, and our grand hopes and dreams for things we wanted to see succeed. He even told me a good Richard Stallman story!

There’s actually a lot of really interesting things going on in the Free Software space as of recently. Of note, GNU GUIX is under a lot of promising development, and could provide a better way forward for deploying packaged web applications, and rolling them forward or back from upgrades. To some effect, such an effort could make non-PHP open source web applications easier to package, install, and use with relatively little setup required on the user’s part.

Chris invited me to an SF Free Software Users meetup called Beowulf Cluster. We all crowded into a pie shop and many different kinds of conversations came up about what we did for a living and what we were interested in. Some guys talked about QA, others discussed semantics of their favorite tools and projects.

I got to meet Asheesh Laroia from the Sandstorm team. Sandstorm is extremely interesting to me, because it is a Free stack that effectively allows you to host and launch apps like a containerized Heroku – you can also host all of it on your own hardware independently. It feels a bit like Google apps, but with a much wider selection, and everything is sandboxed. The concept of an easy turn-key service for hosting a Diaspora pod is extremely appealing to me.

We talked a bit about packaging Diaspora for that platform – at some point, someone from their community had tried to package it. Some questions remain about how Diaspora’s components work in terms of in-bound and out-bound connections, and Sandstorm is a sandboxed environment for apps that can share data with each other from inside of a host. I hope to answer their outstanding questions sometime soon to get a better idea of what would need to happen.

All in all, these moments were the highlights of my trip this time. I was super glad to have met Chris and see a real Free Software hacker in the flesh.

Free Software: We Have the Capacity

When discussing the principles of Free Software, it is all too easy to make the mistake of emphasizing one interpretation of Free Software idealism over another. You can frame it two unique ways: “Microsoft is bad” vs “Free Software is great.”

One way of interpreting Free Software is in its inherent denouncement of proprietary code and the collective communities attitudes towards proprietary vendors such as Microsoft, Apple, and Adobe. “Proprietary software is bad, and so are the companies that make it,” it could be said.

Photo Credit: Defective By Design

But there’s a far greater message to be had, and I think it needs to be emphasized to the fullest.

“We have the capacity.”

It’s easy to focus on the negativity of an opposing ideal first. If nothing, the Free Software community is a fairly passionate one, and although internally it doesn’t always agree on everything, overall it’s a welcoming enough space that can encourage new people to become a part of it. A good experience of making things together is kind of what keeps a community going. This includes making decisions and assisting newcomers.

I think a better mindset for Free Software is “we have the capacity” because it focuses on all of the things one can do with it, rather than all of the things its opponents cannot do. It is an important distinction because it is foundational to the very tone and tenor of what Free Software is actually about: having the capacity to make things however you want to. You can study new ideas from existing code, and use that to learn how to do something new.

There are communities filled with volunteers that code together because they love it and care about their projects enough to keep working on them. There is code that can be used for free that anyone can install. You can make 3D printers, robots, desktop and web applications. You can use tools to build other tools, and make programs that create other things, such as art, music, and films.

In the end, Free Software is not just about being an alternative to the status quo. It is about giving empowerment to people, and levelling the economic playing field by offering every bit of it for free. By providing the tools and the knowledge to a person, you can give them the power to help themselves.

Understanding Decentralized Social Networking

The Scope of the Problem

The Internet of this day and age is a social place, and you don’t have to work in IT or even be a geek to understand that. Every day, hundreds of millions of people are interacting with one another on social platforms such as Facebook, Twitter, Google+, and YouTube. Let’s look at the following statistics:

  • Facebook: Over 1 billion user accounts.
  • YouTube: Over 800 million, over 4 billion hits per day.
  • Twitter: Over 500 million user accounts.
  • Google+: Over 400 million user accounts.

 Granted, these are large social networks that have the resources to scale up to accomodate having so many active users on a day-in, day-out basis, but I believe that this trend is problematic for a number of reasons. 

Personal Data, Meet Silo 

There’s a lot of misunderstanding as to what user data is, and what it can be used for. Most web applications make use of a database to store data and variables; social applications such as Facebook have large databases with exorbitant amounts of user data. Every post you make, every like every private message, every photo, every comment, and every social action you’ve done with Facebook is stored in their database. Played a song on Spotify? It’s in your Timeline somewhere, and that goes into the database, too.

After a while, this data piles up, and anyone with the means to read it can get a pretty good impression of what sort of person you are, what you like, and what you say privately to other people online. This data is then given to advertisers, who then pay to plaster their ads in Facebook’s stream, as well as in the sidebar. This feature is not unique to Facebook; in fact, most of the major social networks out there now have some semblance in which an advertiser pays for a promoted spot that every user can see.

With the rise in the use of context-sensitive data analytics on the social web, these advertisements are becoming more and more custom tailored to an individual person based on the data their social network practically handed out. Our social experience is reading more and more like the ad pages out of a newspaper, and the problem is that it has largely become the norm on the social web. The reality is that you can download all of your personal data out of most social networks, and close your account if you really wanted to. The problem is that there’s really nothing all that useful that you can do with it, unless you feel like cracking it open and reading JSON files. There aren’t really any tools to make use of this data.

Muting a Megaphone 

Another problem unique to networks of the scale of Facebook and YouTube is that they are run by multi-national corporations with a global presence. These companies typically have two underlying goals:

  1. Provide a service or set of services that everyone wants to use.
  2. Make money to fund further development 

These are fine goals to have if you’re a company, but a problem quickly becomes apparent when you think about the scope of these companies. As these networks come to have users from all over the world, the companies behind the network find themselves more and more in the position of maintaining a global presence, forcing them to deal with the governments of various different countries.

This is particularly problematic for activists that want to incite change against oppressive governments. Facebook has a habit of shutting down protest pages and YouTube has a history of pulling down protest videos to censor activists. These aren’t just isolated incidents; they’re the norm, and incidentally, they’re also the most popular platforms for their respective forms of communication. Everybody’s in the same boat, and similarly, everybody can be censored at the request of corrupt governing bodies. Whose interests are really being served here?

Decentralized social is a wildly different approach to social networking: rather than having central sites that millions of people get on, the network is made up of many websites with a much smaller amount of people on it. These multiple sites can be run by anybody: you, your friends, businesses, organizations, activists, and anyone else can set up their own social site and talk to other people seamlessly across the network.

There are several fundamental benefits to this design:

  1. No central authority can censor what you say.
  2. No social network has access to your private data. You have control over who sees what you post, including the social site that you’re on.
  3. Many decentralized social networks are Free Software, meaning you can look at the code and ensure that it’s not spying on you.

So, if I were running my own social site at DeadSuperHero.com, people would be able to follow my social account, see my public posts, like my things, and comment on anything I push out. If I choose to put my followers into a specific category of Contacts (in Diaspora, they’re called Aspects), then I can filter out who gets to see what kinds of posts I make. Maybe I have some colleagues at work that I don’t want to see my photos of a party, or maybe I have a group of local activists that I want to talk to that doesn’t concern anyone else. The point is, decentralized social is about having complete control over who gets to see the things you say and do online. 

One of the other interesting things to think about is customization. You’re running your own social site, so in essence, you’re free to customize how your profile works, and if you’re handy with some code, you can also customize how your social dashboard looks as well. Why constrain yourself to other social networks that make massive changes to how they are used when you can have that extra control over your own site’s functionality? 

An interesting development in decentralized social is the idea of being able to move from host to host, which is empowering for end users. The idea is that a user can pack up all of their social data and move to a different social site, they can. You’re not tied to the site you signed up on, and if you’re on a community-run pod and are unhappy with the person running it, you have the freedom to leave and take your valuables with you. All in all, decentralized social isn’t about “defeating” the existing social networks. It’s all about having control of your entire social experience online.

Boxing Out: The Value of Free Software in an Appified World

Whether you’d like to admit it or not, the technology industry is undergoing a rapid paradigm shift from traditional desktop computing to mobile platforms that are growing increasingly restrictive. The embrace of an appified mobile web has made for a lucrative business model for numerous startups, but these platforms are, by design, problematic in regards to user freedom and privacy.

Before I get to my main point, I would like to highlight three different parables about the problems we already are facing with innovation in technology. While you could make the argument that software patents are really what’s holding these things together, and you would be right, I feel that it’s really much more problematic than that. Please note that I’m not saying that these services and organizations in and of themselves are evil. What I’m getting at is how some of their practices and policies are holding back innovation.

The Boxed-In Web

We all know a thing or two about walled gardens. Regardless of what type of app development you’re doing, we can agree that open platforms have a lot more potential for third parties. Just look at how developers are getting excited about AppNet, just because they’re providing a more open API to play with, which is at odds with what Twitter is doing.

Twitter’s restriction on an API seems to be a growing trend, as many people are beginning to flock away from great third-party clients due to less and less flexibility being supported. Perfectly good clients have gotten their API tokens revoked, so it shouldn’t really come as a surprise. However, AppNet and Twitter are technically both contributing to the same problem: they are centralized services, and while an open API is great, it doesn’t exactly do much of anything for the Open Web, aside from having a new app to integrate with.

However, the real problem comes from the popularity of leveraging Facebook as a platform. Facebook, in comparison to Twitter, is actually stupidly easy to integrate with a web application, and does so at several different levels. Want a picture thumbnail to be the one Facebook catches when you share a link? Just give part of your article an OpenGraph Image tag, and a method to pass the uploaded image as the value.

Of course, Facebook has gone even further into integrating with the rest of the web. See, Timeline wasn’t just a redesign of a user’s profile: it’s a semantic web application in which API data is passed from one service back to Facebook. All a developer has to do is create an OG:action (played a song), apply it to some nouns (song_name, song_artist), and an originating service to come from (SoundDerp) and essentially, Timeline can tell everyone that “Sean is listening to Kids With Guns by Gorillaz on SoundDerp“, and it all plays into Facebook’s Timeline ecosystem. Apps leverage actions, and Facebook just to get to leverage a little bit more about you. Even as a basic authentication platform, it hooks into hundreds of thousands of sites out there. Ever seen a site with a “Log In With Facebook” button? At some level, it’s a social web app.

Facebook provides a compelling reason for developers to stay on its own platform. The tools are, compared to what some other services offer, stupidly easy to use. And therein lies the problem: because Facebook offers such an easy route for developers to go, it’s an enticing platform to get sucked into. Apps across the web have to conform to Facebook’s own developer guidelines, at least where usage of the Facebook API is concerned. Who would want to develop for an alternative, unless it were for pushing forward a web that isn’t tied to a central social power structure?

Because of the reliance that third-party developers and content distributors have on platforms such as Facebook and Twitter, we are increasingly finding ourselves in an appified web that crawls through user data at least one way or another. Relying on one central site essentially steers Facebook into an authority position.

Think about it: Facebook already abuses its permission by censoring links from the web, and it has to conform to handing over your user data to the authorities of your local government. It might as well be one big spy network disguised as an opiate for the masses.

This Little App

I think it’s a sad statement about society when you have to jailbreak your phone platform to truly get the functionality you need out of your own phone. One need only look at how Apple rules over the App store with an iron fist to gain an understanding of what a locked-down ecosystem means. Sure, you can make your app about anything, as long as it doesn’t work around carrier contracts, provide too much comparable functionality to the default included app, isn’t too expensive, only makes use of Apple’s official tools, has a less-than-stellar interface, or a dozen other restrictions.

Just look at how this trend is further being carried out in guidelines for the Mac App Store. It’s literally an instance in which the sale of applications that greatly enhance the functionality of the operating system is restricted. And sure, you can distribute your app without the Mac App store, but would a developer starting out get an opportunity for even 10% of the exposure that the Mac App Store provides? It’s an app ecosystem where, once again, innovation is hampered by playing by one company’s rules, at the risk of that developer losing a portion of their sales and income if they develop outside of Apple’s restrictions. Sure, it’s not a behavior for all Mac apps by default at the moment, but with the culture Apple has put together with App distribution, it might as well be. Free Software apps have been historically rejected frpm Apple’s distribution channels.

One of the best things to come out of the creation of iOS is not the vanilla stock experience itself, but the alternative App Store, Cydia. It’s a hacker/developer playground in which special applications can be released and even sold, without the overbearing rules handed down from Cupertino. You can modify iOS is a number of amazing ways using Cydia, and to a certain extent, run a device the way you want to run it. You want to tether your phone? Go for it. How about not being tied into iTunes for adding new music for your device? Or changing how your phone looks beyond a wallpaper? The sad thing is, you shouldn’t have to hack away so heavily at your mobile OS, and as more developers shift over to purely being on the Mac App Store, it’s not out of the realm of possibility to think that something similar could happen to the Mac desktop.

A Little Less Aliyun

Don’t just think that because Google’s the main opposition to Apple that it doesn’t get away with the same thing from time to time. Google tends to hold a strangely firm grip over its supposedly open developer ecosystem from time to time as well. Just take a look at the recent hubbub about Alibaba’s AliyunOS, a fork of Android.

Here’s the short version: Alibaba is a company that forked Android with their own interface, UI, and services, and they were going to launch a device in China using Acer as the hardware provider. Acer is part of the not-as-open-as-youd-think Open Handset Alliance, which is like an old boy’s club for big Android manufacturers that want to prevent Android’s fragmentation in the name of unity. Because of Acer’s involvement with the OHA, Google can effectively kill any adoption of Alibaba’s forked OS by forcing Acer to drop it. It doesn’t matter if it’s a better handset system; if Alibaba doesn’t find a non-OHA manufacturer or doesn’t go the route of being like MIUI and run on jailbroken devices, it’s not going to find a market to thrive in. Once again, innovation is strangled in the name of “following rules”.

What lessons can we draw from these seemingly unrelated examples? Let’s connect the dots: each problem highlights how different platforms have roped in developers to be dependent on a very overbearing set of rules and guidelines, each of which can affect a developer’s income, based purely on these regulations. People couldn’t ship or build the products they wanted to without bending over backwards for different restrictions. Google’s recent issue with AliyunOS raises the question of how open Android really is as a user-facing platform, considering the vast amount of influence it has over the Open Handset Alliance. In each case, deviating from the central authority can knock an entire product off of the market.

At what point did we consider this to be acceptable? We are openly embracing systems that make it difficult for Free Software to thrive. Free Software is important because it’s not just about the cost of the software, it’s a statement that you don’t have to be a part of those self-destructive walled gardens, that you don’t have to sacrifice user privacy, and that you can study how things work at your leisure.

There shouldn’t be so many barriers to using the technology you bought the way you want to. Free Software is a great vehicle for learning how computers work, and much freely available code has evolved greatly over the last twenty years. As we enter into an era with even more apps, even more proprietary social platforms, and even more corporate battles to influence what system a person gets to use, it’s quickly apparent that we need to embrace and cling to Free Software now more than ever before.