The Future of Vocal, Birdie, and More

The Vocal IndieGoGo crowdfunding campaign has reached its deadline and, unfortunately, failed to meet its goal. If you contributed to the campaign I want to personally thank you for your support. Since we set it up as a fixed funding campaign all contributors will be issued a full refund. If you have not already received a refund you should be seeing your money again very soon (IndieGoGo documentation says within five days).

I don’t want to reflect on the campaign itself quite yet. I’m still too close to it and am in the process of figuring out what it all means. I do think it’s important to start thinking about what the future plans are for the project, as well as for Birdie, given the failure.

As I mentioned in the developer Q&A from a few weeks ago, not meeting our goal means that we’re going to have to make some significant changes. Many of our planned features are going to have to either be dialed back or cut entirely. It’s important to be realistic about what is possible and to set expectations accordingly.


I’ve thought long and hard about the changes that will need to take place in terms of our goals for 2.0 and how our project functions as a whole. Before I discuss the features, I want to talk about some changes to the project itself:

  • Over the summer I will be moving Vocal from Launchpad over to GitHub. This isn’t directly related to the campaign failure, it’s just something I have carefully considered and made a decision on. It’s in the best interests of the project to make this move for several reasons, one of which being that it makes it much easier for me to have both Birdie and Vocal hosted at the same place. Hosting the code at GitHub brings lots of helpful benefits at present that will improve development and also opens the door to exciting new possibilities in the future. When the code for 2.0 becomes available in the next month or two it will be pushed to GitHub.
  • The Vocal website is going to be moving from Squarespace to WordPress. As much as I like the current site, using Squarespace is too costly for the project as it stands right now. Eventually it would be nice to use GitHub Pages, but I am not a web developer and my time is stretched far too thin as it is. If you are a web developer who would like to volunteer I would love to hear from you, but in the meantime, we’ll be switching to a cheaper WordPress instance.
  • I’m focusing all my energy on making Vocal as incredible as possible on elementary OS. Since the campaign failed I will continue to only have at most 10 hours or so per week to devote to development, split between multiple projects, and that isn’t enough to customize the code and perform the necessary modifications to provide a great experience across multiple distributions. That time is better spent adding new features and fixing existing issues. If other developers want to volunteer their time to make cross-distro support better we’ll welcome those contributions, but for the time being I’m 100% focused on making Vocal as amazing as I can for elementary OS.
  • Instead of a massive Vocal 2.0 release with all the features listed in the IndieGoGo campaign we’ll split the features into multiple major versions. In the future I plan to do smaller, more frequent major releases.

Okay, now for a specific list of features that will be developed as planned:

  • iTunes podcast store browsing and full iTunes store search. This has been the focus of the work up until now. We already have support for browsing top podcasts in iTunes, as well as searching across the local library and across the iTunes podcast store. These features aren’t rock-solid yet, but there has been good progress so far. (Vocal 2.0. Expected by end of Summer 2015)
  • A stunning new redesign that is both more beautiful and even simpler to use (Vocal 2.0. Expected by end of Summer 2015)
  • A new playback queue (Vocal 2.0. Expected by end of Summer 2015)
  • Background feed updates and downloads (either 2.0 or 3.0, depending on time)
  • Full HTML show notes (Vocal 2.0. Expected by end of Summer 2015)
  • Variable playback speeds (Vocal 2.0. Expected by end of Summer 2015)
  • Multiple/mobile device sync (Vocal 3.0. Expected by the end of 2015 at the earliest, most likely 2016)

And features that will NOT be developed as planned (although they might be added in the distant future):

  • A sleep timer
  • Chromecast support
  • Better native experiences across multiple Linux distros
  • Password protected feeds (unless it’s trivially simple to implement)


Birdie 2.0 is still on track and is expected to be released by the end of Summer 2015. Specific features have not yet been nailed down completely, but it will feature a refreshed design, better multimedia support, the new Twitter Streaming API, smooth scrolling, and more.

Other Projects

simply elementary

I’m excited to announce that I am launching a new project! One of the stretch goals was to create a new unofficial elementary podcast. Although we fell far short of the goal, I’m going to do it anyway! It’s something that I’ve always wanted to do.

Dane Henson, a staple in the elementary community, a great developer, and an all-around cool guy, has kindly agreed to co-host with me! The show is targeted for typical, everyday users. As a general rule it will not feature technobabble or long technical discussions. It will primarily consist of long-form interviews with elementary developers and community members, news, tips, reviews, and lots of other great stuff.

The show is titled simply elementary: the unofficial elementary OS podcast. We have done a practice recording and will be releasing a beta episode once our album art and music is finalized (soon). We plan to release new episodes every other week.

elementary Dropbox Mods

My script for making Dropbox work well in elementary is not dead, I just haven’t had time to work on it lately. I will devote a weekend to it soon.

What You Can Do to Help

As I said before, I am extremely appreciative of all the people who have contributed to the IndieGoGo Campaign. Although the campaign has ended and the money has been refunded, our expenses remain the same. As of right now we are around $300 in the red, and several expenses for the upcoming year are arriving soon. If you would still like to financially support the project we would gladly welcome it. I’ll post links below, and you can always find them here. I know we’ve mentioned money a lot over the past month so this is the last time I’ll ask for your help financially for a good long while.

Bitcoin Address: 15Vd7h2kbP3UxYyGyAzqCnURuLzVtUPcW4


Contribute via PayPal

Contribute Bitcoin via Coinbase

If you can’t help financially I hope you’ll consider spreading the word about the new unofficial elementary OS podcast when it arrives. I hope you’ll also give Vocal 2.0 a try and share your experience with it when it reaches beta later this summer.

Thank you all again for your support! If you have questions please leave a comment, send an email to mail [at] nathandyer [dot] me, or find me on Twitter or Google+.

Why Native, Why elementary OS?

Last week I shared a screenshot of the progress that has been made on Birdie 2.0 (see below) and one person left comments on that post asking questions that I promised to answer in more detail in a blog post. He asked why I write desktop apps instead of web apps, and why I develop apps that are targeted for elementary OS specifically.

Screenshot from 2015-05-06 16:06:58

Why Write Native Desktop Apps, Instead of Creating Web Apps Which Can Run Everywhere?

The reason why I write desktop apps is actually fairly simple: I want to create the best user experiences possible. Writing a web app is not, and will never be, the way to do that. Don’t get me wrong, you can make some pretty incredible web apps, but at the end of the day the only way to provide a truly remarkable experience is to target a specific platform.

Users choose to use systems for many reasons, but perhaps the most significant reason is that they like how the system works. They like the workflow, they like how the visual elements are presented, and they like how different components work together to provide a cohesive experience.

The best apps feel like they are native to the system you are using. The best Android apps are the ones that most closely follow the Material Design guidelines and use Android-specific features like global media controls, advanced notifications, widgets, etc. The best iOS apps are the ones that follow Apple’s design guidelines and feature platform-specific features like TouchID support, App Extensions, AirPlay, Apple Pay, Notification Center support, etc.

The same applies to free desktops as well. The best apps are the ones that tightly integrate with the system and feel as close to first-party as possible. Unfortunately, creating apps that feel native to a platform means making difficult decisions and sticking with them. Picking a platform can be a tough decision. In the Linux world there’s kind of an expectation that an app will run on Ubuntu and Fedora and Arch and CentOS and OpenSuse and… well, you get the point. The fact of the matter is that each of those systems are different. The same code might run on all of them, but the experience will be muddled. Trying to make one app work in all distros is exhaustive and nearly impossible to pull off effectively. You end up having a mediocre product running on 10 systems instead of one incredible product running as well as possible on one.

I struggle with that decision from time to time. Sometimes I feel bad when I get reports that there is an obscure issue causing a bad experience for people on distro A, or icons looking out of place in distro B, or so on. If it’s something easy to fix I always try to do so, but at the end of the day I don’t have enough time to test the product under each desktop environment and modify the code individually on a one-by-one basis. I hate leaving some users behind, but if I had to do it all over again I would always make the same choices every time.

This is the bottom line: I want to make the best apps for users that I possibly can. In order to do that, it means taking advantage of native technologies and making difficult choices by targeting specific platforms. That probably means having fewer users overall, but I would rather have a smaller number of users that are happier using a more polished app.

Why elementary OS?

I love elementary OS. I love the spirit of the project and I have great respect for the technical and design decisions that have been and are continuing to be made. I truly believe that elementary is the future of desktop Linux, and speaking as a third-party developer I want to help as much as I can to make it a attractive option.

So, once again, the explanation is fairly simple: I love elementary OS, I believe in the future of the project, and I’m making apps that I personally want to use— and that means making them for elementary OS.


Out of the Nest – Birdie 2.0

A short while ago I came across news on Twitter and Google+ that Birdie, my longtime favorite Twitter client for Linux, would be shutting down development. I was extremely sad to hear this so I contacted Ivo Nunes, the main developer for the project, to see if he would be open to the idea of me taking over development. He was very agreeable, so I am excited to announce that I will be developing Birdie 2.0. Ivo will continue to be a part of the project working on other areas as he sees fit.

I’m also excited to announce that with this hand-off Birdie will once again be written in Vala, and that the existing 2.0 code will be ported back from Python.

I’m writing this just after my conversation with Ivo so I don’t have any other specific information to share. This will not interfere with the release of Vocal 1.0. Vocal is currently extremely close to the release candidate stage, and should be available within the next month or so. Right now I’m planning on working on Birdie throughout the summer and having a final release somewhere within that time-frame, but I’ve not yet looked at the code enough to make any accurate estimates.

I’m excited to help make Birdie as great as I possibly can and get the next major version in the hands of free software users as soon as possible.

Welcome elementary OS Freya Beta Users

First off, I want to extend my congratulations to all the elementary developers and contributors on a fantastic beta release! As most of you know, Vocal has been designed and developed from day one to work seamlessly with Freya. Unfortunately, that meant that it was unavailable for the majority of people to test until now (unless you were impatient determined enough to ahead and build your own unofficial, franken-Freya).

With so many new users trying Vocal for the first time I just want to say, welcome! I hope you enjoy using it! Please keep in mind that it is still in beta, so you will almost certainly run into problems every now and again (and when you do please report them here). That said, it should be fairly usable at this point.

Install Vocal

Add the Vocal daily PPA and install it by typing or copying/pasting these commands in a terminal (in this case it’s safe, but fair warning- always be careful when a site tells you to type something into your terminal):

sudo apt-add-repository ppa:nathandyer/vocal-daily
sudo apt-get update
sudo apt-get install vocal

What’s New?

Video playback:

Vocal Video Playback

A vastly improved episode browsing experience:

Episode Details Side Pane

Tons of improvements under the hood, including a simpler and more robust media playback backend, better offline support, faster imports, and much more.

What’s Next?

Soon Vocal will pick up exactly where you leave off, by remembering which episode you’re listening to after you quit and how far you make it in each episode. A new cleanup system that automatically removes old downloaded episodes is also planned.

After that development will primarily be focused on more polish and bug fixes. Once I feel that it’s close to being ready I will announce a release candidate. I’ll fix any remaining issues after that, at which point it will go stable with version 1.0.

As for version 2.0 and on, I have lots of exciting new features in the works. I don’t want to officially announce anything yet, but I am confident that you will all absolutely love it. But for now,


How Do I Get Involved?


If you enjoy using Vocal I would encourage you to consider a donation. Vocal is entirely open source and 100% free to download, and always will be, but it takes a surprising amount of money to create free software. Any donation, even $1, makes a big difference.

Visit this link to donate (and yes, we take bitcoin).


If you are bilingual, translations are fantastic way to get involved. Just visit the Launchpad Translations page for Vocal to get started.

Bug Reports

If you run into any bugs, have would like to suggest an improvement or new feature, please report that here at Vocal’s bug tracker on Launchpad.

Let Me Know What You Think!

If you use Vocal I would love to hear your thoughts about it (both good and bad)! You can contact me:

Vocal Beta Released, Daily PPA Now Available

Screenshot from 2014-06-26 19:38:31

The first public development release of Vocal is now available!

Please keep in mind that this is a preview release. Vocal is still a work in progress. You should only use it at this point if you are comfortable running into unexpected problems and crashes.

That warning aside, I have been using it for a while now and I believe that it is starting to feel fairly stable. Your mileage may vary (and if it does, please let me know).

Most of the features of the final release are implemented in this beta, with the only major exception being embedded video support.You can manage video podcasts, and technically you can play them in Vocal, but the experience is not what I want it to be yet. Proper video playback will be added over the next few weeks and will be included in the 1.0 release, following a period of additional testing and bug fixing.

If you’re brave enough to give it a go you can add the daily (unstable) PPA by entering the below commands into a terminal:

sudo apt-add-repository ppa:nathandyer/vocal-daily
sudo apt-get update
sudo apt-get install vocal

Vocal will only work on elementary OS Freya.* The best course of action is to wait until the Freya Beta is released before trying out Vocal. For the impatient among you, however, you should be able to run it either on a copy of Freya you have built yourself, or on Ubuntu Trusy or Utopic after installing elementary-desktop from the elementary Daily PPA.

Get Involved

Please report any bugs you come across at the project’s Launchpad page:

If you enjoy using Vocal, and you want to continue to see cool stuff being added, please consider a donation here. Even small donations can have a HUGE impact on the project.

Keep in Touch

Let me know what you think! If you give the beta a try I’d love to hear from you. You can contact me in several different ways:

I hope you enjoy Vocal!

Vocal Development Update #4

We are getting close to the first beta for Vocal! Despite a few minor setbacks that caused me to miss three or four days of planned coding, everything is still right on schedule and it looks like my initial goal of having a beta out by the end of June will be possible. At this point all the core features that I want implemented before the first development release have been added, which means the next few weeks will be focused on fixing a handful of remaining bugs and then additional polish before I release it into the wild for the first time.

Please keep in mind any screenshots you see may very well change between now and the final release. This is still a look at a work in progress.

Screenshot from 2014-05-22 22:02:28

Screenshot from 2014-05-26 15:35:06Vocal feels a lot more functional as of late. For one thing, the downloads system has been added (although there are some small problems I need to fix). Active download information is presented in a new popup available from the toolbar. Files are downloaded to the local library, and Vocal knows whether to play the local or remote version automatically. Users are able to tell whether or not a file has been downloaded by looking in the episode view. Not only that, but now unplayed episodes are marked with a star so you can always tell what you have and haven’t listened to yet.

It has also received further integration with the desktop. Once episodes have been downloaded, or if it discovers that new episodes are available, a system notification gets sent. The dock icon also displays information about the number of unplayed episodes and total download progress.

Screenshot from 2014-05-23 18:40:54Lots of other fixes have been implemented, including a critical fix for a bug in the the feed parser that prevented certain podcasts from being added. I also fixed an issue where only certain episodes were added to the library.

The beta is still a few weeks away, but the most challenging parts for this pre-release are behind me. That being said, I want to make the app feel as solid as possible before I let others kick the tires.

Vocal Development Update #3

Big features and new improvements have been added to Vocal this past week, including two of the most critical components: the database and the episode updates. While there are plenty of bugs remaining to be squashed, those two parts are now operational.

Check out the latest screencast:

Although development this week has been primarily focused on those two features, additional bug fixing and polishing has been underway. The welcome screen text has been reworded to be more clear and concise. A new error message has been added when a feed cannot be parsed (as opposed to simply crashing). Overall, Vocal feels much more stable than it did just a week ago.

But there is still quite a lot of work to be done before an alpha or beta release will be available. I still need to add downloads, which also means adding local podcast file management. Additionally, I need to add OPML support so that you can transfer your subscriptions over to Vocal.

So stay tuned! We’re getting closer and closer to Vocal’s first public development release.