Shared publicly  - 
ASIHTTPRequest is no more. I know many experienced /Cocoa( Touch)?/ developers who look upon it with heavy disdain, claiming that it was too big, too heavy, too much code, and that most developers wouldn't need all of its functionality. I've heard similar things about other projects, such as the Three20 framework from Facebook.

In almost every case, the complaints about libraries like ASIHTTPRequest are coming from highly experienced and well-respected engineers who understand far more about the low-level details of stuff like HTTP, asynchronous run-loop programming, security, authentication, and RESTful design. Where these complaints AREN'T coming from is less experienced engineers, or from people who don't work exclusively on Apple platforms. For someone who isn't a total Cocoa gearhead, they don't have time to learn the ins and outs of NSURLConnection, or understand how to best make use of NSRunLoop to process lots of requests concurrently in the background. They just want to make network requests, get the responses, and leave dealing with the delicacies of all of it to a library.

Up until very recently, doing anything involving networking in Objective-C required a lot of code. A lot of fragile code that required knowing where the framework was going to help you and where it was going to leave you on your own. A lot of code that was generally not well laid out in the documentation. Doing the wrong thing could lead to hung apps, or apps which crashed due to threading race conditions, or apps which had spurious errors. You can get it right, but it wasn't easy.

While ASIHTTPRequest was not perfect, it got the job done for a lot of people. People shipped real apps with it. It helped countless developers build better network-backed apps than they would have been able to build themselves in the same time. And it was a task pushed largely by the efforts of one guy, Ben Copsey, who certainly received his share of negative responses (including some from myself, which I humbly apologize for) from people who know better than the target audience. As he acknowledges in his blog post, ASIHTTPRequest had its own issues, but "given the vitriol I’ve seen over the last couple of days, I don’t think I want to do this anymore. Life’s too short".

So for those of us who have been around the Cocoa block for awhile (myself included), maybe we can tone down the rhetoric when we offhandedly shoot down the hard work of others, especially when it can help those of us less obsessed with Objective-C.
Derek Kuhl's profile photoKosuke Matsuda's profile photoMarcel Borsten's profile photoDavid Leuschner's profile photo
And to Ben Copsey and all developers who put out freely-useable open source code, in any capacity, thank you. You make my life and lives of countless other developers easier.
+1, very surprising to see the argument(s?) from experienced Cocoa developers who somehow think that simply implementing NSURLConnection in an NSOperation replaced even half of what ASIHTTPRequest did. There was an incredible amount of knowledge baked into it, and in a world with GCD and blocks it had grown unwieldily, but arguing it always detracted from an app is a bit ham-handed.
Very well said - for a lot of people it was the best tool for the job at the time, clearly documented and easy to get started with.
asi was great at it's time. but now there are better AND easier frameworks around. Ben did a tremendous job with writing asi, and I even contributed some code. With AFNetworking there's now a new, more lightweight framework that's even simpler to use than asi. - go try it, it's awesome.
The point that we should try to use less over-the-top rhetoric is the more important one. Criticism is fine, as long as it's well-intentioned. Trashing someone's work is rarely deserved or helpful.
I think anyone who puts their code out there for general use, and then makes an effort to support it deserves our applause. Three20 is the most over-engineered library I've ever seen on the Cocoa platform, but it doesn't mean that it wasn't useful, or that it's author deserves to be publicly humiliated. It takes guts to put your skills out there for other people to use and abuse.

The simple fact is that everyone's code stinks after a year or two. Go back and look at whatever you were working on 2 years ago today — I guarantee you that you'll look over your shoulder afterward to make sure nobody else saw it.

Well said, Steve.
yes, well said. I have used ASIHTTPRequest in almost all my projects and it made my life so much easier. So easy, I hadn't even heard of AFNetworking - no reason to. Not to mention, Ben answered a couple of my questions I posted in Google Groups.
The experts in objective-c can complain as long as they want. There are tons of developers getting things done with ASI. I just hope this project keeps getting supported by community.

And to be honest, I will keep using it until apple designs something better than NSURLConnection or AFNetworking gets mature enough.

Just to compare, the second best is being considered AFNetworking, and It has HUGE problems dealing with the main thread.
Guys, please don't ignore the technical conversation that is happening around why ASI is not always the best answer. It's the tone of the conversation, not the content that's in question.

Also, be willing to explore and contribute to other projects — don't get stuck on using one library because that's the one you've always used. Ben's post made it pretty clear that ASI has languished recently, that should be making you assess other options as a matter of standard toolkit maintenance.

+Thiago Peres what problems have you seen with AFNetworking and multi-threading? I've used it without issue in a couple of projects recently, and I know of a couple of reasonably high-profile apps that are built using it. If there are known issues, it'd be great if you could outline them.
Well in the past if you called [AFJSONRequestOperation operationWithRequest:request success:^(id JSON) in a viewDidLoad, in certain scenarios (such as a nested scrollview) your app would simply stop loading.

I don't know if this was fixed but the only thing I saw the developers do about it is update the readme for you to use your own queue.

I'm not saying that you can't use it, I just think it's too soon to start using all over.

Also, with ASIHTTPRequest you have a lot more control over the request.
Thanks +Thiago Peres, good to know — I'll be sure to have a look and see if that's still the case before I use AFNetworking in any future projects. I certainly haven't seen any indication of this behaviour in my work, so perhaps it's fixed.
I get "given the vitriol I’ve seen over the last couple of days, I don’t think I want to do this anymore. Life’s too short", I really do.

The TouchCode open source libraries have had their fair share of detractors. It's frustrating, often depressing, but unfortunately part & parcel of the process. Not all code is fantastic. The public criticism is necessary to help illuminate shortcomings. To let people know that maybe the project has flaws or problems.

It's tough but necessary I think.

I think the way to stop this being so negative and so depressing is to balance criticism with praise. We're not good enough at praising the good software we use. When you use software that just works, gets of your way & helps you accomplish what you need - tell people.

Oh and file bugs. Do that too.
I got into it a little with Marcus, wish I hadn't as it wasn't constructive in my half-awake state. However his specific follow up to his answer that I grabbed a screenshot on my iPhone (cause there is no permalink to it)

"… because the author most likely did not understand NSURLConnection to begin with and feared what he did not understand."

does not jibe with Zarra's defense of The Daily 1.0 which included this bit in the conclusion:

"There is no reason to hate other development efforts. It does not matter if that developer is better or worse than you. It does not matter what that developer wrote. There is plenty of room for all of us."

Especially since Ben agrees about the limitations a problems with ASI, but I'm not alone in when I was new to Objective C and networking code it was a handy Duplo Lego block to help me ship. I should add that going back and really trying to hear Zarra's voice while reading I can see it not being as critical of Ben, but my gut reaction is shared by many others so then the question is could Zarra be more diplomatic and make his nuance/intention clearer, or is it everybody else's fault that takes umbrage with the tone they perceived?
Whatever critics people have to make about ASIHTTPRequest, it remains an incredibly useful library. When you need compatibility with iOS 3.x, there really is no equivalent. I know all you geeks want to target shiny iOS 4 or even 5, but in the real world we have a lot of existing devices to support, and ASI gets the job done there.

Bugs? yes certainly - as in any large body of code. But at least it's there, and it works. AFNetworking only comes with blocks support, which excludes those of us who need pre-iOS 4 compatibility (don't tell me users just have to upgrade devices - in some cases this is not an option or not under our control).

Many thanks to Ben Copsey for working on ASIHTTPRequest all this time.
It is a real shame when someone gives up early because of trolling. It's on github - fork, change and be happy. I'm never sure why other engineers/coders/whoever decide to start giving a guy hassle for giving up his spare time to write something.

People should be encouraged to write whatever they like... if you don't find it useful/don't like it... move on - but don't go trolling someone for it.
I think at least part of the problem is that when something as big as ASIHTTPRequest is used as the answer to every networking problem newer developers have, there's a responsibility (onus?) on more experienced developers in the community to advise that this may not be the best approach. I don't think that advice needs to be a slight on the work, or on the developer — but as +Jonathan Wight stated above, feedback and criticism are a necessary part of any community.

Just be careful that you recognise the difference between trolling, actual experience, and advice — the language from both sides of this argument has been inflammatory and is starting to set up a real "us and them" mentality that's more damaging to the community than the original argument.

As to the issue of using blocks and supporting iOS 3 — I'd be very interested to see some stats from active apps. If +Marco Arment's stats are anything to go by, you're pouring significant effort into supporting a very small number of users (
Our application runs in markets where the devices are embedded in larger installs -- i.e. home automation, we are not targeting the general public. For us, compatibility with iOS 3 for existing jobs is essential, even though integrators are aware that some new features we add are iOS 4+ only. But that's it, our market is such that it requires some backward compatibility for the time being. I'm not saying this won't change, and this is a specific case -- but one of those cases where ASIHTTPRequest is one of the right tools for the job
+Tony Arnold How can someone possibly use ASIHTTPRequest as the answer to every networking problem? And you think it's big? Let's see how big AFNetworking gets a year or two from now.
+Andres Kievsky I agree with you (somewhat). The AFNetworking code, being exclusively GCD-based, will certainly be smaller and faster for the same tasks, though. But in the end ASI does a LOT of work in many areas that maybe most people don't need, but some (like me) do.
Add a comment...