Threadable is joining forces with Emmerge!

I have some very big news.

We've decided to join forces with a startup called Emmerge, which is taking a different but very complementary approach to building better group communication with email. The new product is still in closed beta, but we're super excited about it. It incorporates many of Threadable's central insights, with a bunch of new ideas and a bigger team to make them happen. When it's ready to use, I'll definitely let you know!

I'm sure you're wondering how this affects you as a Threadable user. There are a few changes, but it's nothing too scary:

  • Threadable Pro is now free for everyone. If you're on a monthly subscription plan, this will be your last paid month. If you're not on Pro, now you get all those cool features!
  • The service is staying up and you can keep using it for the foreseeable future. Should that ever change, you'll get plenty of advance notice, and we'll make sure you can get an archive of your data. So, no need to worry.
  • Support will be more limited, and we're unlikely to add many new features. We'll keep maintaining Threadable, but we're focusing our resources on the new product.
  • New organizations can only be created by existing members. You can still add new members to your organizations, but new signups are no longer available to the general public (But, if you have a friend who wants to use it, email us and we'll make it happen).
  • We're open-sourcing Threadable! We'll be making the repo public under the Apache 2.0 license as soon as we finish a quick audit of the code. Stay tuned!

Building Threadable has been an incredible experience, and I would do it all again in a heartbeat. Thank you so much for your support over the past two years. It's been wonderful to work with users like you, to support your efforts, and to hear your ideas and feedback. I'm amazed by the things Threadable users create together, and feel honored to have been even a small part of that.

I'd also like to express the gratitude I feel to my cofounders for their vision and their extremely hard work; to our investors for their advice, support, and encouragement; and to the partners at YCombinator for teaching us so much about what it means to make something people want.

If you have questions, I'm happy to chat. Just get in touch.

Thanks for using Threadable, and for believing in us.


Ian Baker

Threadable Co-founder & CEO


How big is email?

Our co-founder Ian just published a piece on the total size of the world's emails, over on Medium.com:

"And, so it is with email. 150 billion is an impossibly large number, and that’s each day. If you printed one day of the world’s emails out, the stack of paper would be 10,000 miles high. A month of them would reach to the moon."

Check it out: How Big is Email?

Threadable Pro: Private groups and access controls

At the core of any successful team that does anything is communication. You might even say communication is what defines a team in the first place. Imagine a sports team with no communication: it's just a bunch of people standing around in a field (and, just between you and me, you all look a little silly wearing the same color shirt). Our goal is to get teammates everywhere talking to one another, and to filter the information they receive intelligently so that their communication serves them well.

We've studied how companies and grassroots efforts differ, and we believe we've created a set of features that will be super useful for business, but won't be missed by a professional society, giant art project, student group, or activist organization.

Today, I'm very excited to announce the release of Threadable Pro. It includes a bunch of cool new stuff, like:

  • Private Groups: You can create a group that is only visible to its members. This is perfect for departments like HR or recruiting, or for a new initiative that you're not ready to show to the whole company yet. Organization owners can still see every group.
  • Permissions: You can set whether your members are able to invite people to the organization, create groups, change group settings, or update subscription settings for their colleagues. We believe we've created a fairly complete set of permissions, but if there's something you need that you don't see, let us know!
  • Custom Email Domain: Do you want your groups to be available someplace other than threadable.com? With Pro, you can use your own domain. Contact us and we'll help you sort out how best to configure your DNS to work with Threadable.
  • Google Apps Integration: Threadable can play nice with Google Docs and Calendar, letting you share with a group instead of individuals. Very soon, your members list will even automatically stay in sync with your Google Apps domain.

For a complete feature comparison, check out our pricing page.

Threadable Pro costs $5/user/month. But, if you sign up while we're in beta, you can get it for $3/user/month forever! Just visit your organization settings in the Threadable web app.

On a free Threadable, everyone who's a member can read every message, create groups, join groups, and change some settings on behalf of their teammates. This grew from our experiences working with the Wikipedia community. There, we saw first-hand how, when you assume someone will do the right thing, they will generally live up to your expectations.

We realize that this isn't the best model for everyone, though. As a business grows, it's important to keep some secrets, even from your co-workers. Sometimes you're legally required to. Threadable Pro gives you that additional control.

I'm so happy we've reached this point, and we couldn't have done it without the amazing support and feedback we've received from our users. Thank you all so much.

If you have suggestions for things you'd like to see in Threadable Free or Threadable Pro, get in touch! We'll be adding lots more features to both products in the coming months.


Are you a nonprofit or community organization that could still really use Threadable Pro? Ask us about our special nonprofit discount. It's pretty sweet.


Public Signup is here!

Until now, your Threadable organization has been invite-only. This is great for a small, close-knit team. But, efforts like big volunteer organizations, community initiatives, open-source projects, and political campaigns need to be able to leave the door unlocked.

You now have the option to enable a beautiful public signup page! Once you turn it on, anyone can add themselves to your organization. No more inviting new users. Just send them the link. Post it to your blog! Put it on the wiki! Post it by the coffee machine!

Here's what a public page looks like now:

We'll be giving you more options to customize it for your unique organization soon. And, like all of Threadable, the public signup page is responsive and works great on mobile.

To get your public signup page, have an organization's owner visit the Organization Settings pane in the Threadable web app.

Even more control over your inbox.

People are constantly telling me that they get too much email. In fact, it's the #1 issue I hear about online communication.

This matters to us a lot at Threadable, and I'm really excited to tell you about some new features that give you an unprecedented level of control over what arrives in your inbox.

Follow
One of our most popular features is "Mute", which lets you stop a conversation in one of your groups from showing up in your inbox.

Now, you can follow conversations you weren't getting, too! Instead of joining a whole group, you can cherry pick just the things that are most important to you. Look for the "Follow" button in the Threadable web view. And, once you've followed a conversation, you can sync any messages you might have missed into your inbox!

Any time you reply to a conversation, you'll follow it automatically.

Follow from a summary

Threadable will send you a daily summary of all the conversations in a group. I use this feature to keep tabs on other teams. I can get a sense of what's happening, and participate where I'm needed without being overwhelmed.

Now, you can follow and sync a conversation directly from the summary! This means you can get one easy message a day, and pick the conversations that look most interesting to receive in real-time.

First message mode

"But Ian", you say, "sometimes a summary is too slow! I want to know what's happening right away, but I don't want to participate in every discussion." We heard you, and we added a third delivery mode just for you!

If you choose first-message mode for a group, you'll receive the very first message of any conversation. Then, you can follow it if it looks interesting. When you follow, we'll catch you up on the thread, so you don't have to worry about missing anything.

To turn on summaries or first-message mode, visit the group's members, find the member whose settings you want to change, and click their name. You'll get a dropdown that lets you change the the delivery method.

Sync to Inbox

Back when I joined the Wikimedia Foundation, the IT staff helpfully created my email account a week before I started work. When I showed up, I had a week's worth of email sitting in my inbox. I could get caught up on everything right away. It meant I could hit the ground running, and saved me hours of searching for the info I needed to get up to speed. I was doing meaningful work on day one.

Now, you can have that same experience any time you join a new group. Threadable keeps track of which messages you've received, and you can tell us to send you what you missed! Just visit any conversation you're receiving in the Web View, and you'll have the option to sync the missing messages.

Use this feature when you've just joined a group, if you mute a conversation and then change your mind, or if you follow something new (see our next blog post for more on follow). Sync the last few days of conversations, and get started right away! Turn off your Threadable email while you're on vacation, then sync the important stuff when you get back!

We've never seen this feature in another product, so we're really curious how you'll make use of it. If you have feedback or suggestions, please get in touch at support@threadable.com.


Remove all the things!

Over the past months, we've spent a lot of time making it easy to get your communications into Threadable and into the hands of your teammates. Last week we spent a little time making it easy to remove things, too.

Trash!

Threadable's web view now has a trash can. To move a conversation to the trash, just click delete while viewing it on the web. You can't reply to it while it's there, but it's easy to un-delete it. To find it in the trash, check the bottom of the left hand menu.

If a conversation stays in the trash for 30 days, it's deleted from our servers forever. Be careful!

Removing a conversation from a group via email

You've always been able to add a conversation to a group by CC'ing your reply to the new group, but if you wanted to remove a conversation from a group, you had to visit the Threadable web view.

It worked this way because we didn't want the conversation's groups to be reverted if someone replied to an earlier message. It would be impossible to move a conversation that's been mis-addressed, or to create a new group to categorize existing conversations. So, add-only, no remove via email. This was confusing, though. If you write an email and don't address it to someone, it shouldn't go to them!

Last week, we added some clever new header parsing code. Now you can remove a conversation from a group by writing back to it and removing the group from the reply's To: header. Threadable will do what you expect, but if you move a conversation into a new group, it'll still stay moved!

This is possible because Threadable's email processing backend gives us a lot of information about your messages and the other messages that are related to it. So we can do the right thing, every time.

Addressing changes, and subdomains!

tl;dr: The format of Threadable email addresses has changed, and "Ungrouped" mail has been replaced with a group instead. This probably doesn't affect you, but it might mean your email filters need an update. It also enables us to do a bunch of cool new things.


We've been up to a lot here at Threadable HQ. We're getting ready to roll out some exciting new features, but to make those possible, we had to make a few changes first:

Introducing subdomains, and the new Threadable email address format!

Every Threadable organization now has a subdomain. To illustrate, here's an example:

You have an organization called "Sammy's Burger Palace", at sammys@threadable.com. You also have two groups:


Now with subdomains, there's a new sammys.threadable.com, with the following addresses:


Personally, I think these new addresses are prettier, and they should also be easier to understand. More importantly, it will be possible to replace sammys.threadable.com with your own domain. We'll be releasing that feature soon!

Important note: All the email addresses you were using still work, and will continue to work forever, even going back to addresses at covered.io. We've just added a new format, and changed what gets sent on outgoing mail. There is no need to update your address book.

No more "ungrouped" mail

Messages sent to your organization's main address used to show up in "Ungrouped" in the Threadable web application. That worked okay, but we have lots of important new features coming up that depend on groups: things like access control, external task manager integration, group-level aliasing, translation, and Google Apps integration. We don't want your ungrouped mail to get left out of all these exciting new developments!

Also, it was impossible for a conversation to exist in ungrouped and a group simultaneously. This occasionally caused problems in some discussions.

So, ungrouped is now a thing of the past. Instead, your organization has a "primary" group, which is where mail sent to your-organization@threadable.com is routed. The primary group is named for your organization. So, using the example above, the primary group is called Sammy's Burger Palace.

New list-id precedence for more effective filtering

If you filter your Threadable mail into different mailboxes, you probably do it based on the List-Id: header. Since we only ever want to break filters once, we decided to take this opportunity to fix the group/organization precedence in that header.

Previously, the header was written like organization.group.threadable.com, so mail to the Cooks group at Sammy's would have a List-Id of sammys.cooks.threadable.com. Those have been reversed, so now it's cooks.sammys.threadable.com.

This means that if you want to filter just the cooks group, you'd create a filter for cooks.sammys.threadable.com. Or, if you wanted to filter all mail for the organization, you could make one for sammys.threadable.com instead. That was much more complicated before.

Oh, and the primary group mentioned above has its own List-Id, too: sammys.sammys.threadable.com.

We might have broken your email filters. We're sorry!

Speaking of mail filters, you might notice that Threadable mail is suddenly getting around yours. I'm really sorry about that! If there was a way to make these changes without breaking anyone's mail filters, we'd have done it. It just wasn't possible.

We took great care to make sure we wouldn't be changing anything about our addressing or List-Id format again, so you can be sure you'll only have to fix your filters once.

And, of course, if you run into trouble, just email us at support@threadable.com. We'd be more than happy to help you get things working just right.

Finally, An End To The Reply-To Munging Debate

Mailing lists have been with us since the earliest years of the Internet. Thanks to the universality of email, they remain one of the easiest and most inclusive methods to communicate with groups of people online. 

But so long as mailing lists have existed, so has the debate about whether the Reply-To field of a message sent via a mailing list should point to the original sender, or back to the entire list. The technical term for this is “Reply-To munging”, a wonderfully esoteric term whose roots date back to the late 50’s, and over the years numerous impassioned arguments have been made against itfor it, and against it yet again. While no formal survey has been taken, the Internet seems pretty evenly divided here.

We’re thrilled to announce that we’ve solved this problem once and for all. In Threadable, Reply-To munging can be enabled or disabled on a per user basis, rather than at the list level. Now that we've built it, it's clear that this should have been a user-level preference all along.

This is made possible by the unique way Threadable handles email. Rather than acting like a simple reflector, sending out identical messages to every list member, Threadable individually constructs unique outgoing messages for each recipient. This gives us the ability to deliver messages to users in a highly personalized manner, of which customizable Reply-To munging is only the beginning. 

How Threadable solved the DMARC problem

Update: Steve Atkins of Word to the Wise points out that the solution described below is lacking a critical detail and, as originally described, could train users in a way that makes your list exploitable to phishers. I've updated the "How it works" section to add details about the safest implementation.

What Happened?

Over the weekend, Yahoo changed a setting that affects the deliverability of messages sent from yahoo.com addresses. Specifically, Yahoo published a DMARC record with a policy to reject all yahoo.com mail that fails DMARC. 

The result is that mail sent from yahoo.com addresses will now bounce when sent via a mailing list, like Google Groups or mailman. Worse, these bounces can result in the senders being unsubscribed from the list altogether. As John Levine of IETF explains:

Since Yahoo mail provokes bounces from lots of other mail systems, innocent subscribers at Gmail, Hotmail, etc. not only won't get Yahoo subscribers' messages, but all those bounces are likely to bounce them off the lists.

He recommends that all list administrators immediately stop delivering mail from Yahoo addresses to limit damage, and encourage members to move to a more friendly provider.

How Threadable Fixes This

Today, Threadable released an update that fixes the DMARC issue for our users. Rather than bounce a message that fails DMARC (or worse, unsubscribe the sender), Threadable will proactively check the sender domain's DMARC settings and generate a message with correctly aligned identifiers, resulting in a successful delivery. 

Better still, this fix doesn’t just work for the yahoo.com problem, but for any domain owner who might change their DMARC policy in the future. This happens more than you'd think: what if you subscribe your mailing list to Twitter notifications? What if you have a procmail rule that forwards important notices from your bank to your accounting department? These are the correct application of a DMARC 'reject' policy, and all of these examples will break your average mailing list.

One Step Further

Because of Threadable's unique design, we were able to re-deliver all the messages that failed using the new DMARC-friendly headers. So, no Threadable users missed email: it was just a bit delayed for some of them.

This is possible because on the backend, Threadable is very different from other mailing lists. Rather than using a mail reflector and a separate archive, emails actually pass through Threadable's message store as part of the remailing process. Each message can be customized and delivered on-demand to a single user. In some ways, it's more like an email client than a list server. In this case, it was trivial to identify the individual rejected outgoing emails and re-send them.

How does it work?

The DMARC FAQ suggests three options for mailing list operators. We've implemented the third, "take ownership of the email."

The minimum standard here is to rewrite the From header to point to an address at your own domain. There's even a patch for Mailman 2.1 that implements this option by replacing From with the list address. However, maintaining a good user experience requires a few additional tweaks.

Threadable checks the From address domain's DNS to determine if the DMARC policy is too strict to interfere with delivery ("p=reject"), and if so, does the following:
  1. Rewrite the From address to use the local domain: "Some Guy <someguy@example.com>" becomes "Some Guy via Threadable <placeholder@threadable.com>". I like this because it preserves the name part of the address, which is super useful when browsing my inbox.
  2. Sign the new message with DKIM, and send using an SMTP envelope From at threadable.com. This gets the message delivered.
  3. If Reply-to munging is enabled for the recipient (this is a user-level setting on Threadable, not a list-level setting as on most mailing lists):
    1. Add the original From address to the CC, so that it's available to the recipient
    2. Remember, Reply-to was already being set in this case, so there's no need to change it
  4. If reply-to munging is disabled for the recipient
    1. Set the reply-to address to the original From address
This preserves the reply semantics. That is, if the recipient expects a reply to go to the list, it will. If they expect the reply to go to the sender, it will do that instead. If they hit reply-all, the presence of the list in the To header ensures the message goes to both the sender and the list.

We're considering an implementation that makes the From address deliverable, but that's probably not necessary: setting Reply-to should protect the recipient from ever using our placeholder address, or getting it added to their address book.

Important note: If you're going to implement this, make sure to never include the sender domain in your rewritten From address. Doing so could teach your users to trust that domain to indicate the sender's identity, and make your list vulnerable to phishing. Here's specifically what Threadable does when rewriting From:
  • Grab the name part if it's present, so "Some Guy <someguy@example.com>" becomes "Some Guy via Threadable <placeholder@threadable.com>"
  • If there's no name part, grab only the local part of the email. So, "no-name@example.com" becomes "no-name via Threadable <placeholder@threadable.com>"
  • Whatever you do, do not write an address that looks like "no-name@example.com via Threadable <placeholder@threadable.com>".
Other solutions

If you don't want to do it this way, there are two other options offered in the FAQ:
  • Operate as a strict forwarder, so as to not break the original message's DKIM signature. This works as long as your list has no features. As soon as you add a link to a footer, change a header, or enable web-based posting, you'll need to generate your own DKIM signatures.
  • Add the Original Authentication Results (aka XOAR) header. It's totally worthwhile to do this. However, it only makes a difference if the destination ESP has listed you as a trusted sender. If you have that luxury, awesome! Most mailing list operators don't.
Was this the right thing for Yahoo to do?

Not a chance. A restricted DMARC policy makes sense for domains on which phishing is a serious risk, and who are not also email service providers. An ESP's job, first, is to interoperate with existing Internet infrastructure. It will be a couple years at least before DMARC support is widely deployed enough in mailing lists to make this feasible. Furthermore, this makes it difficult if not impossible to use a yahoo.com address with many 3rd-party mail clients.

Because lists tend to unsubscribe addresses that generate bounces, Yahoo is not only breaking email for their own customers, but for everyone else.

I expect that they'll eventually figure out what they've done and change it. It was a fun challenge to work around this, and exercise the power of our platform, but it's bad for the Internet. Yahoo: please fix this soon.

References