
Backblaze acknowledges using curl, becomes the new largest single-shot donor - sohkamyung
https://daniel.haxx.se/blog/2020/01/14/backblazed/
======
cerberusss
Donation to the sum of 15,600 US dollars. From the article: "Backblaze was
started in my living room on Jan 15, 2007 (13 years ago tomorrow) and that
represents $100/month for every month Backblaze has depended on libcurl back
to the beginning." \-- Brian Wilson, CTO of Backblaze

Very good solution.

~~~
atYevP
Yev here -> We love open source (our erasure coding, storage pods, other stuff
is all out there) and after we got his email we did realized our error and
wanted to make things right with Daniel and libcurl, it seemed like the fair
thing to do!

~~~
btreecat
Cool, cool, so desktop Linux client is coming along then? Or is B2 /
alternative vendors the only foreseeable option?

~~~
atYevP
No Linux client on the horizon - B2 is your way to go!

~~~
oliwarner
B2's great until you store more than 1.2Tb. After that you're penalised for
your choice in OS.

------
merb
well it's good what libcurl and the curl developer did. libcurl is so
widespread that it's sometimes not easy to figure out that the library your
using does use libcurl.

I mean who checks every library (even core libraries) if it uses an mit
licensed product. most people probably do not. btw. .net core uses libcurl on
linux which means that every product deployed to linux with dotnet needs to
acknowledge it.

------
smabie
I used libcurl 10 yeara ago in a C project and found it really difficult to
use. Granted, I was young and inexperienced but the C API struck me as super
baroque and strange. Does anyone else feel this way? It’s totally possible
(maybe even likely) that I was just a terrible programmer though...

~~~
brianwski
Backblaze CTO here....

> I found libcurl difficult to use in 'C'

Umm.... it is literally the most simple API that could possibly exist? Here
are the four lines in 'C' to fetch a URL:

curl_global_init(CURL_GLOBAL_SSL); // do this once inside of "main()"

CURL _ch = curl_easy_init();

curl_easy_setopt(ch, CURLOPT_URL,
"[http://www.google.com");](http://www.google.com"\);)

int res = curl_easy_perform(ch);

I'm not sure how you could fetch a URL without initializing the library or
specifying the URL?? It is like profoundly the most simple API that could
possibly exist, I challenge you to specify any imagined API that is shorter or
more simple or more straight-forward??!

The nice thing about the libcurl API is the above works and is the "base"
concept, but if you want to specify something like a "network throttle" to be
polite to other things on the network, you just start adding one extra line at
a time to the above code:

curl_easy_setopt(ch, CURLOPT_MAX_SEND_SPEED_LARGE, (curl_off_t) (256 _*
1024)); // 256 kbits/sec

~~~
rlonn
I founded an online load testing company called Load Impact, and we have also
used libcurl since way back. I agree the API is very simple, and libcurl is a
very reliable and performant piece of software. Daniel is also extremely
helpful while not charging a penny for all the time he puts in.

It's a great idea, this "paying back" accumulated moral debt (or whatever
you'd like to call it) to open source developers whose software you've built a
successful business on. Applauds to you, and to Backblaze!

I am not running Load Impact anymore, but will see if we can follow
Backblaze's lead here and do something similar.

------
clachance
Am I the only one who thinks this amount is very small?

Considering tens of thousands of paying users that use a service which would
not function if it wasn't for libcurl, I was expecting nothing short of 50k$

~~~
SheinhardtWigCo
$15.6k is generous considering the license requires them to pay $0. If the
author of libcurl wanted to profit from it, then he wouldn’t have picked a
license that allows it to be used for free with basically no restrictions.

