Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The problem is not to make a tool like curl.

The problem is the marketing and getting people to use it.

You can easily make the best product and still not being able to get the word out there.



I don't think Daniel "marketed" curl?

I couldn't say when curl was released without looking it up, but I know it's been around for at least a couple of decades. There were not many command-line tools for dealing with web stuff, and curl got picked up by most Linux distributions, the BSDs, and various embedded things because it was the only tool that did what it did, as well as it did. And then it became famous essentially for being ubiquitous, like bash or vim.

"Marketing" seems to have had very little (if anything at all) to do with it.


Best-in-class vs First-in-class (not that I have any criticisms of curl). Sometimes just being first is all it takes to win.


I am pretty sure wget existed before curl, insofar as I remember people back in the day talking about curl being a newer/better version of wget. From my limited usage it didn't seem like a better version because I had to remember a bunch of switches to get it to just download the file which wget already did out of the box, but somehow it became the industry standard anyway, perhaps because of the more permissive license. I don't have any particular complaints with it either, although I still always forget the switches I need to do to make it download a file instead of print a bunch of stuff to stdout. Oh well.


They overlap but wget focuses on downloading by default, while curl is more general purpose. Once I found httpie I didn’t really use either anymore, however.


And being consistent too.


I call that "last man standing" strategy, works really well in mature SaaS markets as well.


There was a bit of PR "war" between curl and wget a long time ago. At some point curl just became everyone's goto and even the reference implementation for http.


Many moons ago, I was in the small ISP business, and I discovered the aftermath of an attempted script kiddie hack on one of our servers. When I examined the logs I realized we were extremely vulnerable to the remote code execution exploit but had been completely saved by two things: they kept trying to use curl to install the payload, but we only had wget installed; and their scripts were extremely Linux-centric but we were using FreeBSD.


That's funny, I remember the exact same thing. It was either Joomla or Wordpress for us, and we were saved only by virtue of having everything in jails and those jails having a very limited (and un-Linux-like) userland.


Curl's success has more to do with it's quality (and ubiquity) as a C library. I think the curl cli somewhat got "taken along for a ride" with all the improvements that curl lib had by becoming the de-facto standard http library.

Because the library gets ported to every new platform anyways (it's what people use so will be the first to be ported to a new architecture or whatever) so the cli gets support for everything new "for free" so can outcompete wget (because it's always _there_ and works the same).

Now, there's also the fact that the curl cli is a fantastic piece of software, but in terms of features I don't think there's that much between curl and wget for simple cli usecases (but I still use curl).


wget (and htrack) is able to parse downloaded HTML and CSS for scanning additional URLs to fetch recursively and mirror entire sites that way, while curl is "just" a very very complete HTTP client.

Though wget isn't perfect for mirroring, as it will typically download large amounts of resources redundantly only differing in URL query params when those refer to the same content, such as on typical WeirdPress sites with comment links. Ideal would be an HTTP client with http/3, auth token, and keepalive support etc. based on libcurl that can be customized, such as via "href handlers" triggered by event-driven markup parsers for SGML (though CSS and JS imports need special treatment).


I never did really figure out why curl became a thing when we’d been wget to do that since 2001.


Because MacOS included curl because wget is GPL: https://daniel.haxx.se/blog/2021/09/25/curls-first-twenty-ye...


Because you could use curl as a library in PHP and some other languages.


They're actually very different tools: wget is mostly useful only for downloading of web resources, curl is for making arbitrary requests.


Curl certainly isn't my go-to, because it's so complicated. For most uses I can just "wget http://blahblah" and it just works. With curl I have to look up the flags to save the file, etc. Curl is certainly more powerful, but that power comes with a steep usability loss for the common case.


"curl http://blahblah > blahblah.html"

What other common cases take flags on curl but not wget?


-L (follow redirects) very commonly appears in curl commands, whereas it's the default in wget without needing a flag.


If curl was created today? Sure.

But curl was something new when it came out, and it truly filled a void both as a cli tool and as a library. It needed no marketing. We needed it.

It's hard now to imagine a world without a tool like curl, but quite a few of us are old enough to remember it still.


Word of mouth can still help you, but you at least need to find the community where people have the shared problem, so their recommendations have weight

Overcoming the initial "why should I even look at this" to me is the hardest part


Amen. Marketing is so important for software, even for OS software.


It seems like the first-mover advantage really plays a significant role here.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: