Skip navigation.
 
mlRe: Why initialize the menubar without Interface Builder
FROM : Chris Hanson
DATE : Sun Nov 04 02:38:56 2007

On Nov 3, 2007, at 2:44 PM, Fritz Anderson wrote:

> On 3 Nov 2007, at 4:06 PM, Uli Kusterer wrote:
>

>> It seems perverse to me that someone would want to use NIBs in a 
>> team of more than three developers, while you're effectively 
>> blindfolded and can't even do a "code review" of the NIB changes 
>> another developer did.

>
> I'm sure you mean more than I intend to address, but isn't this 
> analogous to giving more than three developers simultaneous rights 
> to edit a JPEG? As in, isn't that a _very_ bad idea, and one of the 
> reasons SCM systems offer locks?


No, it's more analogous to giving more than three developers 
simultaneous rights to edit a project file.

The Xcode project file format is specifically designed for this. 
Since programmers typically write code in a line-oriented fashion, 
while programming languages may not be specifically designed for easy 
diff and merge via textual tools, it does work with them too.  And 
many modern languages (Python and Ruby) are in fact line-oriented...

There's no technical reason whatsoever that resources like nib files 
and data models can't be designed to behave in exactly the same way, 
and be easily diff-able and merge-able using standard textual SCM 
tools.    (The technical proof is that you can do anything in source 
code that you can do in a nib or data model file, and the subsequent 
source code is as diff-able and merge-able as any other source code. 
QED.)

In fact, this is exactly what Microsoft has done with XAML for their 
Windows Presentation Foundation framework:  A XAML file is just a 
representation of an object graph, but it's an XML representation 
written entirely in a line-oriented fashion so diff and merge tools 
Just Work with it.  (This is in contrast to a xib file, which has a 
bunch of binary data in it too, and doesn't necessarily guarantee 
stability across edits.  It's also not human-editable or human-
authorable.)

If this is a capability you would like to see in Cocoa and Interface 
Builder in the future, please file a bug at http://
bugreport.apple.com/ and describe your use case.  Thanks!

  -- Chris

Related mailsAuthorDate
mlWhy initialize the menubar without Interface Builder Erik Buck Nov 3, 20:39
mlRe: Why initialize the menubar without Interface Builder Uli Kusterer Nov 3, 22:06
mlRe: Why initialize the menubar without Interface Builder Fritz Anderson Nov 3, 22:44
mlRe: Why initialize the menubar without Interface Builder Uli Kusterer Nov 4, 00:15
mlRe: Why initialize the menubar without Interface Builder Robert Nikander Nov 4, 00:26
mlRe: Why initialize the menubar without Interface Builder Sherm Pendley Nov 4, 00:49
mlRe: Why initialize the menubar without Interface Builder Erik Buck Nov 4, 01:55
mlRe: Why initialize the menubar without Interface Builder Erik Buck Nov 4, 02:10
mlRe: Why initialize the menubar without Interface Builder Jon Hess Nov 4, 02:18
mlRe: Why initialize the menubar without Interface Builder Chris Hanson Nov 4, 02:38
mlRe: Why initialize the menubar without Interface Builder Chris Hanson Nov 4, 02:45
mlRe: Why initialize the menubar without Interface Builder Robert Nikander Nov 4, 03:06
mlRe: Why initialize the menubar without Interface Builder Erik Buck Nov 4, 03:15
mlRe: Why initialize the menubar without Interface Builder Rob Keniger Nov 4, 04:29
mlRe: Why initialize the menubar without Interface Builder Uli Kusterer Nov 4, 12:33
mlRe: Why initialize the menubar without Interface Builder Uli Kusterer Nov 4, 13:06
mlRe: Why initialize the menubar without Interface Builder Jon Hess Nov 5, 19:55
mlRe: Why initialize the menubar without Interface Builder John Labovitz Nov 5, 20:11
mlRe: Why initialize the menubar without Interface Builder Jon Hess Nov 5, 20:15