Cocoa and Objective-C: Up and Running (by me) is now available from O'Reilly.

Getting Answers on Cocoa Mailing Lists

There's no shortage of people asking questions on macosx-dev and cocoa-dev, but shockingly few people are writing the type of messages that will result in useful responses. Here are a few guidelines to work from.

Show Your Work

When asking a question on a Cocoa mailing list, the most important thing you need to do is demonstrate that you've made a reasonable effort to find your own answers.

People are more than willing to help out where documentation falls short or the right documentation is just plain hard to find. What you don't want to do is ask others to do your work for you. It's obvious when a poster hasn't made a reasonable attempt on their own, and the result is usually silence or heckling. Here's a fictional example of what not to do:

I need help writing a program that can edit videos and burn DVDs. How do I do this?


This type of post will not go over well. The poster doesn't demonstrate that he/she has made any initial effort to figure out the basics.

The answers to these questions are not difficult for an experienced Mac programmer, but writing out responses takes time, and it's unfair to ask others to sacrifice their time unless you have actually hit a wall of some sort. Being a newbie is not a valid excuse in itself. Cocoa programmers tend to be very supportive of novices, but only if they demonstrate to the veterans that they are making a real attempt. Here's a slightly better version of the same fictional post:

I need help writing a program that can edit videos and burn DVDs. I think I need to use QTKit and the DiscBurner framework. How do I do that?


This is better because the poster has proved that they have an least done some high-level research. It still won't be well-recevied, though, because the question is extremely open-ended. The message essentially asks for high-level/conceptual design work to be done for free, possibly for a commercial product. Let's go a step further:

I'm writing a program that can edit videos and burn DVDs. I think I need to use QTKit and the DiscBurner framework, and I've read these documents:

http://developer.apple.com/documentation/
   QuickTime/Conceptual/QTKitProgrammingGuide/index.html

http://developer.apple.com/documentation/
   QuickTime/Reference/QTCocoaObjCKit/index.html

http://developer.apple.com/documentation/
   QuickTime/Reference/QTKitRefUpdate/index.html

These are helpful, but I'm having trouble understanding how to extract sections of clips into separate movie objects. I've looked for sample code on ADC that covers this but keep coming up empty-handed. Can anyone suggest a good place to look for this sort of thing?


Now this is a good post. The author took time to consider a specific problem area (extracting content), mentioned existing material that he/she found, and asked for a specific solution -- relevant sample code. This post is very likely to be answered because the author has made it as easy to do so.

Make the Subject Line Tell

Make a point of choosing informative subject lines. They should describe, oddly enough, the subject of the post. It shouldn't describe your social status or level of achievement (newbie, starving student, accomplished programmer). Instead, describe the content of your question.

If you're asking a question specific to a specific framework, it might make sense to call that out. An even better approach is to describe the specific class you're interested in. Here are some good examples

Core Data: Manual Faulting
Subclassing NSDictionary
Managing Memory for Core Foundation objects
CFNetworking - issues with non-blocking API


Avoid writing subject lines like this:

Please help! Important!
Cocoa
Xcode
Cocoa and Xcode
Apple
AppKit, Foundation


As a simple rule of thumb, aim to write subjects lines that contain both nouns and verbs. This will help other list members see what you're working with as well as how you're trying to use it.

Clarity, Clarity, Clarity

Other than asking reasonable questions, the best tactic for getting help is communicating your challenge clearly. Do whatever you must to get the context of your post across. A three page post with no paragraph breaks and rambling language will not be answered quickly.

Ideally, put a sample project on a web site that illustrates your issue and include the URL to the download in your post. If possible, work up a simple line diagram in OmniGraffle to explain the relationships in your question. If you can't do either of these, at least put together some crude outline-format ASCII diagrams right in the email.

When it comes to the text, don't ramble -- get to the point immediately. If you're having issues with a certain block of code, post the code. There might be issues with the block that you're not aware of.

Share Your Solutions

Once you've solved an issue, pay it forward by posting a follow-up to the same mailing list. This will enable other people to avoid asking the same question later because they can find answers via Google or the mailing list archives. It will also make those who assisted you feel good because they know that their time went to a good cause.

Bottom Line

If you are asking people to do you a favor and take time out of their day to help you, be respectful and thankful when they do so. You're more likely to get an answer next time you need help if you spread some good vibes.

Updated: added some notes about subject lines and newbies at the suggestion of mmalc. Thanks!
Design Element
Getting Answers on Cocoa Mailing Lists
Posted Nov 21, 2005 — 14 comments below




 

Mathieu Tozer — Nov 21, 05 559

"This will enable other problems to avoid asking the same question later..."
:-) Is that a typo or have I misplaced my sense of humour!?!

Justin Williams — Nov 21, 05 560

Nothing goes through me more than someone getting heckled or being told "rtfm" (exact words, not general idea) when they ask a question. It's as if some people on cocoa-dev (and a majority of mailing lists) for that matter feel some sort of entitlement to be abrasive and rude when they have to deal with newbies. Lest they forget they were once in that state too.

That being said, when relevant screenshots are a good thing to link to when you are having issues as well. A picture is much more useful in explaining an issue with a custom view than you trying to describe the issue by itself.

mmalc — Nov 21, 05 561

As Scott notes in his article, novices are welcome, so long as they adhere to a reasonable set of guidelines.

As far as I am aware, no-one feels an entitlement to be abrasive or rude in repsonse to a question -- what is rude is the apparent sense of entitlement some have to getting an answer to a lazily-asked question. Many seem to forget that there is no duty for anyone to reply, and that asking a question that is easily answered by a minute's search through the documentation makes the list less useful for those who are prepared to invest time and effort. Moreover (particularly on a high-traffic list such as cocoa-dev), it is evident that a poor signal-to-noise ratio tends to drive away the experienced members who are most able to answer a question (or to determine what question should have been asked).

If you actually had to pay, for example $50, for each question you ask, I suspect that the quality of questions would increase dramatically...

For a full discussion of the issues, see How To Ask Questions The Smart Way.

Uli Kusterer — Nov 22, 05 562

Scott, one thing you may want to mention is that it also helps to write English. I often go into Cocoa-Dev to relax and do something different from everyday work, and if I'm exhausted and then I get a message like:

Subject: Newbie needs help!
can u tell me y NSDictionary is broken?

my mood usually ends up in the gutter and I fire off an RTFM answer. I usually pull back the message and it doesn't get sent and I just turn off the computer and do something entirely different, but occasionally one gets out despite my best intentions. So, sometimes the difference between getting a polite and informative answer or an annoyed brush-off is taking the time to think of the people that have to *read* an e-mail, and to actually type those 3 characters even though on IRC one would do.

That's obviously no excuse for me being easily annoyed.

Dan Price — Nov 22, 05 563

I've used the list on and off when I was *really* stuck but I've never found it all that convienient, which is perhaps the intention?

A web-page based forum would be far better than old-fashioned mailing lists like these. I've had to set up a seperate email account to hold the deluge of posts comming in each week, even though I may only be interested in 2% of what's discussed.

George Lawrence Storm — Nov 22, 05 564

Amen to use of clear and accurate subject lines, it helps tremendously when I search the Cocoabuilder site, the same for share your solutions. When I do my research prior to asking a question if the answer to a prior question is available, even when the answer is "don't do that" it helps so I don't make the same mistake.

[OT] rant, if Apple gave us the Cocoa source, most of my questions I would be able to answer myself. Coming from PowerPlant I find that although my coding time has gone down, my troubleshooting time has gone up, due to the lack of source coupled with the poor documentation, give me source and I can work out most of my own problems.

Mike Zornek — Nov 22, 05 565

For me it's not the list itself that is valuable, but its archive! The best Cocoa archive out there is at:

http://www.cocoabuilder.com

Nat — Nov 22, 05 566

My peeve in queries like this is the word "work" -- any permutation of "didn't work", "stopped working", "how can I get it to work", etc., usually elides necessary information about the desired outcome, forcing a followup question. I still do it myself occasionally (hard habit to break; its meaninglessness is proportionate to its handiness), but I yank it out in editing.

A web-page based forum would be far better than old-fashioned mailing lists like these.

Old-fashioned, my ass. Web-based fora are only much good for hit-and-run questions, and they're useless to search once they get bigger than my pinkie. High transaction costs in joining and leaving mailing lists keep them useful communities to far larger groups, for far longer, than forum sites. cocoa-dev may have busted the ceiling, though.

Scott Stevenson — Nov 22, 05 567 Scotty the Leopard

Justin said: feel some sort of entitlement to be abrasive and rude when they have to deal with newbies. Lest they forget they were once in that state too.

I agree, but both sides need to bend a little to meet in the middle.

Uli said: Scott, one thing you may want to mention is that it also helps to write English

This is true, but I didn't talk about it here because I think it's a larger issue. Maybe it's worth a mention, though.

Dan said: I've used the list on and off when I was *really* stuck but I've never found it all that convienient, which is perhaps the intention?

To some degree, I think there are some natural barriers in place. The list wouldn't function if it was a first line of defense. The traffic is already too high.

George said: if Apple gave us the Cocoa source, most of my questions I would be able to answer myself

As someone recently pointed out on cocoa-dev, this isn't nearly as practical as it may sound on the surface. Cocoa doesn't magically hover atop the rest of the system. It almost certainly digs into parts of Mac OS X which aren't intended to be exposed.

Not to mention the fact that Apple is trying to build value in the platform. They've invested a lot of time in effort in Cocoa. These investments only take place if there's an expectation that it will pay off in apps unique to Mac OS X, and if said apps drive adoption of new versions of Mac OS X. Core Data is as much a feature of Cocoa as Dashboard is because developers write apps using new API. The customers, in term, buy Tiger to use a new Core Data-enabled app. Open sourcing Cocoa would rip out a key component of this chain.

All of that said, most (all?) of CoreFoundation is open source, so you can see how things like NSArray, NSDictionary and other Foundation classeswork. I think that's a very reasonable compromise.

Nat said: My peeve in queries like this is the word "work" -- any permutation of "didn't work", "stopped working", "how can I get it to work", etc.

Amen, brother.

Scott Stevenson — Nov 22, 05 568 Scotty the Leopard

Core Data is as much a feature of Cocoa as Dashboard is

Actually, I meant Core Data is as much a feature of Mac OS X as Dashboard is.

Dan Price — Nov 23, 05 569

Coming from PowerPlant I find that although my coding time has gone down, my troubleshooting time has gone up, due to the lack of source coupled with the poor documentation, give me source and I can work out most of my own problems.

I've found the opposite to be true. A lot less code, coupled with up-to-date documentation, which is more than can be said for Metrowerk's efforts, a good framework though it was.

Old-fashioned, my ass. Web-based fora are only much good for hit-and-run questions, and they're useless to search once they get bigger than my pinkie. High transaction costs in joining and leaving mailing lists keep them useful communities to far larger groups, for far longer, than forum sites.

Thanks for clearing that up. I'm pleased you value other people's opinions.

Nat — Nov 28, 05 570

<i>Thanks for clearing that up. I'm pleased you value other people's opinions.</i>

Show me the groundswell of favorable opinion toward web fora over mailing lists among people who spend a disproportionate amount of time answering questions, rather than among folks who (reasonably, but self-destructively) want to lower the transaction cost of asking questions, and I'll happily reconsider. Community, not convenience, is king.

David Meyers — Sep 21, 08 6394

Any URL tutorials or sample code for newbies who want to create a simple cocoa Safari browser for the iPhone - it simply needs to load a single default URL. I have reviewed about four different tutorials and none have worked - or they reference old GUI so the instructions are confusing - the others provide you the proper lines of code but are foggy about where to insert them???

This should be soooooo simple...Why all the confusion?

Please help me :-)

Scott Stevenson — Sep 22, 08 6395 Scotty the Leopard

@David Meyers: Any URL tutorials or sample code for newbies who want to create a simple cocoa Safari browser for the iPhone

Hi, David. Just to be clear, Safari is an application which is based on the "WebKit" rendering engine/framework. I assume what you're looking to do is create an app based on WebKit? The iPhone SDK is under NDA, so, officially, no one is allowed to publish tutorials on the topic at the moment. I'm not sure what to suggest.




 

Comments Temporarily Disabled

I had to temporarily disable comments due to spam. I'll re-enable them soon.




Technorati Profile
Copyright © Scott Stevenson 2004-2008