Talk:Cocoa Programming

Initial Comments
As Cocoa is not only the name for a set of frameworks/APIs (primarily Foundation and AppKit but including many more) but also the name for an application environment within Mac OS X this topic will need a clear introduction and careful use of terminology.

I will wait for interested parties to discuss the direction of this book before making wholesale changes but I propose that this book head in the following direction:

Overview

 * The Cocoa Application environment
 * Cocoa Applications
 * Cocoa Frameworks
 * Foundation Framework
 * Application Kit Framework
 * Possible Languages
 * Objective-C
 * Java
 * AppleScript
 * Others (Python, Ruby, Shell Scripting, Tcl, etc)

Beginning Cocoa Programming
Creating an example (AppleScript?) program from installation through to compilation to show readers the basic tasks involved in writing an application.
 * Developer Tools
 * Installing Developer Tools
 * The Development Environment
 * Starting the Project
 * Building the Interface
 * Writing the Code
 * Running the Application

Cocoa Principles
Start building an example Objective-C program (refer readers to Programming:Objective-C if necessary?) to teach Cocoa programming principles and basic features.
 * Objects
 * Root class (NSObject)
 * Basic Cocoa objects
 * MVC
 * Model
 * View
 * Controller
 * Object Modelling
 * Entities
 * Properties
 * Creating a Graphical User Interface
 * Windows
 * Views
 * Controls
 * Menus
 * Text Views
 * Connections

Common Cocoa Features
Add some additional features to the program that introduce intermediate features.

Completing a Cocoa Application
Complete the program and incorporate advanced Cocoa features.

Other Comments
As this is a Programming Cocoa book (not a programming OpenStep or GNUstep book) I think that in general it should focus on Cocoa. A chapter or part devoted to how the book relates to GNUstep would be helpful for those who are interested but I think trying to make the entire book relevant to both Cocoa and GNUstep programmers is going to add unneccessary complexity and end up confusing both.

Additional topics obviously need to be added to Parts 3 & 4. Splitting features into "basic", "intermediate" and "advanced" can be somewhat arbitrary but should help divide the book into more manageable chunks.