We started, and we went through a number of stages, like a lot of projects do.
We started with a small donation we were trying to build up and get into a system where we
could be self-sustaining because we wanted to actually have the ability to move faster.
We wanted to build a better project for our community.
The way we wanted to do that was we wanted to bring full-time developers into the project.
As of 2022, we've been successful.
We have two full-time developers working on the KeyCAD project.
We have eight other core developers who are all contributing and hundreds of people around
the world who we are able to successfully fund to help work on the project.
Designers, documentation, librarians, all of the people that it takes to make a large
open-source project work is sustained by our donations, by our community.
I want to tell you a little bit about how this came to be because this wasn't obvious
and it wasn't immediate and it wasn't just putting up a single page.
Initially, our first donation page looked like this and you can see I've kind of squished
it down so I could see the whole page.
If you looked at it on your web browser, you would see the top little picture and you had
to go all the way down to get to your donations.
Quick, I would like someone in the room to donate 120 Swiss franc to the KeyCAD project.
The question was for each user who went in there who didn't happen to use Swiss franc
as their base currency, how much is going to show up on my credit card bill if I decide
to support the project?
How do I know that this is going to actually support the project?
All of these initial pain points in our first generation of a donation page were there because
we picked what was available, the projects that were supporting us.
We were initially working through the CERN Open Society Foundation and they provided
this, but they worked in Swiss francs because they're CERN.
Our users, maybe not so much.
We were initially seeing very few donations from this site.
I'm going to tell you how we fixed it.
Six ways or six steps.
The first thing that we need to do is we need to identify who our users are because this
drives every single choice we make in design, who is going to be the person who we're talking
to.
Then never interrupt the experience that your community has, your donors have because the
moment that you interrupt their experience is the moment that they have better things
to do.
You always want to respect their time.
Then shorten that click path, make sure that you're not setting yourself up for failure
by putting intermediate steps that you don't have to have.
Every time that you have to click on another link, you are going to lose more and more
of your community before they get to that final point where they can actually come in
to the larger community.
It's in-house. There are a lot of places that will actually set up donations.
I'm going to tell you, you need to do that yourself.
Then test every single step.
Finally, build your community because this is the basic raison d'être that we have as
open source developers is we are a community. We're stronger as a community and this should
be focused as the primary reason for each element in our donation.
First, who is your customer?
Who is the user base that you are trying to support?
For KeyCAD, we were a bunch of engineers.
We were a bunch of designers, circuit designers.
Those were the professionals who were building those circuits.
We're our audience.
We needed to set up the system to reflect that.
Your designers or your customers are also in this space who you're focusing on.
It's not just what you do for a living.
It's where you are in the world.
What language do you speak natively?
What are you most comfortable in?
Once you can make your audience comfortable, your community more comfortable, then that
is a time in which your community becomes stronger, becomes more tightly bound together.
For us, we need to identify where we are. This is actual data.
For KeyCAD, where do we see people coming into the project?
We gather anonymized data that is sorted by country.
The actual map here, our top five regions, the United States, Germany, France, Japan,
and the UK. Notice Switzerland not in the top five.
We were doing this wrong in the beginning.
We were setting up a barrier in the beginning.
We should be donating in euro.
We should be donating in US dollar.
We should be donating in yen and pound, but Swiss franc is maybe not the currency we should
have chosen.
We need to address this.
The first step that we do is we try to address this.
We joined in 2019.
The Linux Foundation started a crowdfunding project.
This was a way of bringing donations into open source projects.
We joined this at the outset.
Our primary reason, even though the Linux Foundation site is slow, even though they
still have multiple clicks and they require way too much data to get you to allow you
to donate, even with all of that, just changing from Swiss franc to US dollar donations met
more of our community's needs.
Our donations increased from about 10 per month to about 30 per month, which is good.
It's a low increase because then we start to bring more people into our community.
We need to do more, so we want to say, all right, what are the pain points still?
Well, we're still slow.
We're still requiring multiple clicks.
I'm going to say, don't interrupt.
Don't interrupt your donor's experience.
I love GitHub sponsors.
It's a wonderful program.
If you're doing that, that's great, but you will never grow your community by putting
the GitHub sponsors up there because the only people who are going to go up to the
top of that page and find that button and click on that button are people who are already
looking for it because no one goes to this page unless they want to download your software,
unless they want to download their software, and the download is down here, and the sponsor
is all the way up there, and so you have to go out of your way to find this.
Going up this, for us, we identify, this is the KeyCAD website.
We identify, why do you go to the KeyCAD website?
You go to the KeyCAD website to get KeyCAD, to download KeyCAD, and so if we're respecting
our community's time, we don't make them go out of their way to the donate button in
the top right-hand corner.
We start with making sure that they get to do what they came here to do first, which
is download the software.
Once you click on the download, instead of just showing a static page, we start the download,
and while they're waiting, we give them the opportunity to donate because this means,
this says, you are already accomplishing what you wanted to do, and we're going to
give you this awesome software.
Your software is awesome too, so that then becomes an opportunity while you're waiting.
Maybe you also want to donate, and so this right here gave us an enormous increase because
people were now willing to say, that's a good idea because I want this software to be better,
I want to support this thing that I use, and our donations increase to 80 per month at
this point.
Now, part and parcel to this is shortening your click path because if you're respecting
your community's time, you don't make them jump through hoops.
Our initial page had nine to 12 clicks over four pages, and it went through postmates,
and it was a mess.
Our current page, every time we shortened it, we saw more people coming in, and so we're
right now at one to two clicks over two pages.
We'd like to get it even smaller, but that's where we're at right now because we have built
this sub-site that we hold on our own.
You can't shorten the click path if you don't own your own project's donation page because
then you're at the mercy of whatever intermediary is going to be in between your community and
you.
We built this ourselves, and we put it behind a CDN, Content Delivery Network, because we
want this fast.
We want this to be directly at the user to the extent that we can.
Right now, when you see this, all you need to do is, if you like the suggested donation,
you click.
It's one click.
If you don't like the suggested donation, you can change it to whatever you want and
then click through, so maybe two if you want to change it.
We go through Stripe.
We go through Stripe for the reason that we can pick how people are allowed to donate,
so within China, for instance, where a large number of our users are, we can link into
Alipay through Stripe.
This allows our Chinese user base to integrate into our community better than they would
be able to if we required credit cards, which are not common in China.
Similarly, JiroPay in Europe, we link that in, SEPA payments.
All of these things are accessible through Stripe, which is one of the reasons why we
chose it, but there are other options as well.
Then, we also added PayPal.
People have different feelings about PayPal, and that's fine, but what I'm going to tell
you is that if your community uses PayPal, then you should use PayPal because that is
meeting them where they're at right now, so bringing your donations in-house.
Internal are where you are controlling the information, and external, you need to get
the information from someone else, and I'm going to tell you that internal is where you
want to be because you get to make your own donation page, you get to make it as fast
as you possibly can, and you get to control the individual steps.
Every time that you make your users make your community wait to donate, every time you increase
that load time by 100 milliseconds, you've lost 20% of people.
They will go back, they'll click the back button, they'll go out and go somewhere else
because you're not sure if it's loading or not.
You get information when you bring it in.
Bring this into your own organization because it allows you to connect with your community,
and you get to every single donation should have a thank you from your project.
You should never leave people out hanging saying, oh, I just sent this money into the
ether, I hope it does something good.
Send them a thank you.
Send them a thank you because it lets them know that the community has received it, that
they appreciate it, and you include in there a link into your forum, into your bug tracker,
into the other ways that the community connects.
This allows you to build these communities that bind all of us together more closely.
Finally, test, real quick, A-B testing, piece of cake, never change everything outright.
Never make a new donation page and get rid of your old one.
You make donate 41, you want to change something, you make donate 42, and the only thing that
you need to change is some simple little JavaScript.
If math.random is less than 0.5, go to this one, otherwise go to that one.
Two different pages, and each of them should have an embedded code in there, an embedded
number that you get to send to Stripe.
Because you're controlling your own donation pipeline now, so you get to send that to Stripe,
you get to send that to PayPal so that when you do this, when you make a change, you get
to look for your metrics, and you get to measure what the changes affect is, and whether you
are trying to get people to join your mailing list because you want to announce releases
or you want to get them to support the project or new users coming in, whatever it is, you
are trying to change, you won't know if you've achieved it unless you're measuring it.
So measure it in a way that respects people's privacy, measure it in a way that allows you
to be the most effective you can in building your community.
And finally, every donation is an opportunity to build your community because your donors
are the most invested customers in your project, and you should treat them that way.
You should bring them in because they saw fit to support you financially.
They deserve to have that community wrap them in ways that are supportive and give them
the opportunity to be part of the larger project.
Every donor gets a thank you email, and then give them ways to deepen that connection,
offer them things that are straightforward, so t-shirts for donation levels or badges
on your user forum, all of these are ways to build that connection between your community
and your project.
And then directed donations give you more information about what your users are interested
in.
Finally, support your upstream because all of us stand on each other's shoulders.
So when you are, whether you are a houseplant open source project just doing this for yourself
or you're a big, large project, if you're receiving donations, pass that up because
the things that allow you to build your project and allow all of us to do better are the things
that we should be supporting ourselves.
So last couple of tips.
Be transparent.
Show people how much processing charges are in the project and allow them to donate a
specific amount to your project.
You can add a small check box to round up to the donation amount.
And always, always, always if you're doing your donation page, watch for fraud because
there are a lot of bad actors who will automatically try to use your donation page to verify stolen
credit card numbers.
So when you do this, you watch out for this because it's not just an ethical responsibility,
it's a financial responsibility to actually make sure that people are not being charged
for things that they don't know.
And so in this case, you can see this was all within one minute, this is actual attack
on the KeyCAD donation website, it's like 30 donations per minute.
They were just cycling through a bunch of credit cards.
And we found the one that they work that they succeeded and we reported it as fraud and they
stop after you do that for a little while.
So thank you very much.
I really appreciate it.
If there are any questions, I'm happy to take them.
Not actually a question, but I think I don't now remember which opens up project it was,
but it might have been KeyCAD actually even, but I remember it was very nice to have like
a donation page, which then listed a bunch of new features kind of that came up recently
and just said that these were made possible thanks to your help.
Yes.
I think that was an excellent way to think about it because it's true.
Yeah.
So the statement was that you can show what the donations have done with and one of the
things that KeyCAD does is after you donate, it shows you a thank you page after the donation
and that it has a little graphic of all the things that we've done in the past year and
we update that about once a year or so.
So yeah.
Yeah.
There we go.
Yes.
How and why did you understand that these implementation were in such a way?
So the question was how and why do we know that we need to make changes?
We weren't where we needed to be.
So we wanted to support full-time developers and we did not have the funding level to be
able to do that.
So we wanted to increase that to be able to develop the project faster and better and
we knew because we'd periodically dog food it ourselves.
We'd try and the developers will donate not just our time but we'll practice going through
the donation page and it was painful.
So we'd click and we'd be like, okay, come on, come on, come on, come on.
And then we'd get there and I had to pull up the, like, how much is 120 Swiss franc
in euro?
Now I know but intuitively I didn't know that.
So dog fooding what you build is an important step and it costs you a five dollar donation
which is, you know, you run it through there and you're supporting a good project when
you do this.
Yes.
How do you handle one-time donation versus recurring donation?
So the question is how do you handle one-time donation versus recurring donation?
So we have right here a highlighted one-time and monthly.
So we have this option and you can set up the back end to do that.
Right now we only support that through PayPal because we don't want to be responsible for
keeping track of user accounts.
And PayPal allows you to set up subscriptions without the user account.
So right now we do that through PayPal but the thing to watch out for is to make sure
in your design that you're very, very clear about what the user is, do they have a subscription
or do they have a one-time.
So when you click on this, instead of saying donate, this says donate via PayPal or donate
via credit card, e-wallet, instead of saying donate, we change that to subscribe.
So we do a couple of things to make it really, really obvious that if you move this slider
over here and click on this button, you're signing up for a monthly subscription.
We still have people making the mistake though.
So we're still working out, we're still doing AB testing to see can we get that better.
Yes.
The suggestion is to have a separate button for the subscribe, yes.
I'm going to AB test that and we'll see what comes out.
Yes.
You absolutely can and I skipped by a couple of the options here for, here we go.
So open collective, Patreon, coffee, Linux foundation, if that's where your community is,
do that.
Absolutely.
That's fantastic.
If your community is on coffee, you should have coffee on there.
But there's a balance to be struck and open collective is nice, but it's one, two, three
clicks deep and we've never seen a way to shorten that and we can't cash it.
So it does add a couple of steps, but I do know a lot of projects that use it successfully
and that like it a lot.
So definitely, you know, test it out, but try to replace one of the buttons, AB testing
with open collective and see if that's where your community is and the only way you know
that is by checking.
Thank you.