/[gnustep]/gnustep/core/make/Documentation/faq.texi
ViewVC logotype

Diff of /gnustep/core/make/Documentation/faq.texi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by fedor, Tue Jul 22 03:03:27 2003 UTC revision 1.17 by fedor, Mon Sep 29 16:46:50 2003 UTC
# Line 25  at the user FAQ for more user oriented q Line 25  at the user FAQ for more user oriented q
25  @menu  @menu
26  * Is it easy to port OPENSTEP programs to GNUstep?::    * Is it easy to port OPENSTEP programs to GNUstep?::  
27  * How about porting between Cocoa and GNUstep?::    * How about porting between Cocoa and GNUstep?::  
28    * Tools for porting::          
29  * Can I transfer archived data from GNUstep to Cocoa?::    * Can I transfer archived data from GNUstep to Cocoa?::  
30  * Does distributed objects work between GNUstep and Cocoa?::    * Does distributed objects work between GNUstep and Cocoa?::  
31  * Is there an Interface Builder for GNUstep?::    * Is there an Interface Builder for GNUstep?::  
# Line 45  the Makefiles yourself.  You will also h Line 46  the Makefiles yourself.  You will also h
46  (if there are any) to GNUstep model files using the nib2gmodel program  (if there are any) to GNUstep model files using the nib2gmodel program
47  (from @url{ftp://ftp.gnustep.org/pub/gnustep/dev-apps}).  (from @url{ftp://ftp.gnustep.org/pub/gnustep/dev-apps}).
48    
49  @node How about porting between Cocoa and GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Is it easy to port OPENSTEP programs to GNUstep?, Compatibility  @node How about porting between Cocoa and GNUstep?, Tools for porting, Is it easy to port OPENSTEP programs to GNUstep?, Compatibility
50  @subsection How about porting between Cocoa and GNUstep?  @subsection How about porting between Cocoa and GNUstep?
51    
52  It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is  It's easier from GNUstep to Cocoa than Cocoa to GNUstep. Cocoa is
# Line 55  GNUstep yet. Plus there are some other i Line 56  GNUstep yet. Plus there are some other i
56  Cocoa:  Cocoa:
57    
58  @itemize @bullet  @itemize @bullet
59  @item Be careful with Cocoa.h includes  @item Be careful with Cocoa.h includes (Use #ifndef GNUSTEP, for instance)
60  @item Do not use CoreFoundation  @item Do not use CoreFoundation
61  @item Do not use C++  @item Do not use Objective-C++
62  @item Do not use Quicktime or other propriatory extention  @item Do not use Quicktime or other proprietary extension
63  @item You need to convert .nib (IB if you use it) to .gmodel or .gorm  @item You need to convert .nib files (see next question  @pxref(Tools for porting))
64  and Gorm is good enough for most of the work  @item Some unfinished classes include NSToolBar and Drawers.
 @item Do not use NSToolBar (not finished in GNUstep)  
 @item Do not use Drawer (not implmented in GNUstep)  
65  @end itemize  @end itemize
66    
67  @node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, How about porting between Cocoa and GNUstep?, Compatibility  @node Tools for porting, Can I transfer archived data from GNUstep to Cocoa?, How about porting between Cocoa and GNUstep?, Compatibility
68    @subsection Tools for porting
69    
70    While the programming interface should be almost transparent between
71    systems (expect for the unimplemented parts, of course), there are a
72    variety of other files and tools that are necessary for porting
73    programs.
74    
75    @table @samp
76    @item ni2gmodel
77    This program coverts nib files from any system, such as Cocoa or OPENSTEP to
78    a gmodel format file. Gmodel can be read directly by GNUstep or you can
79    convert this to a more GNUstep-native gorm format (using the Gorm interface
80    modeller).
81    
82    @item Renaissance
83    GNUstep Renaissance allows you to describe your user
84    interfaces (that is, the windows in your application, and the buttons,
85    boxes, textfields, etc in the windows) in simple and intuitive XML
86    files, using an open, standard format describing the logic of the
87    interface.  It has a number of advantages over the proprietary nib format:
88    portability, open standard, easy localization, themeability, and
89    intelligent autolayout.
90    
91    @item OpenStep2GNUConverter and nfmake
92    Two programs that allow you to convert PB files to GNUstep makefiles or
93    compile a program on GNUstep directly from PB files. They probably work
94    only for OPENSTEP systems and are a little out-of-date.
95    
96    @item StepTalk
97    A portable scripting environment that lets your do scripting in almost
98    any language you like.
99    
100    @end table
101    
102    @node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, Tools for porting, Compatibility
103  @subsection Can I transfer archived data from GNUstep to Cocoa?  @subsection Can I transfer archived data from GNUstep to Cocoa?
104    
105  Apple's archiving format is proprietary and not documented, so this  Apple's archiving format is proprietary and not documented, so this
# Line 79  different machines because of endiness i Line 113  different machines because of endiness i
113  have this problem.  have this problem.
114    
115  Your best bet is to implement your own archiving format that would work  Your best bet is to implement your own archiving format that would work
116  both with GNUstep and Cocoa. Fortuneatly, you don't have to start from  both with GNUstep and Cocoa. Fortunately, you don't have to start from
117  scratch, since this has been essentially done for you in the nib2gmodel  scratch, since this has been essentially done for you in the nib2gmodel
118  tool, which has an archiver that works both on GNUstep and Cocoa. It  tool, which has an archiver that works both on GNUstep and Cocoa. It
119  might be nice to split this off into a separate project to make it  might be nice to split this off into a separate project to make it
# Line 107  both the 'gmodel' format (which stores i Line 141  both the 'gmodel' format (which stores i
141  (property-lists) and can therefore be edited 'by hand') and binary  (property-lists) and can therefore be edited 'by hand') and binary
142  archive format (which can be edited by Gorm).  There IS a conversion  archive format (which can be edited by Gorm).  There IS a conversion
143  tool called nib2gmodel that can be compiled under OPENSTEP to convert  tool called nib2gmodel that can be compiled under OPENSTEP to convert
144  OPENSTEP nib files to GNUstep gmodel files.  nib files to GNUstep gmodel files.
145    
146  @node Can one use the hybrid "Objective-C++", Is there a plan to support Java/YellowBox Bindings?, Can I use my original NIB files?, Compatibility  @node Can one use the hybrid "Objective-C++", Is there a plan to support Java/YellowBox Bindings?, Can I use my original NIB files?, Compatibility
147  @subsection  Can one use the hybrid "Objective-C++"  @subsection  Can one use the hybrid "Objective-C++"
148    
149  No. at present the GNU compiler (gcc) does not support  No. at present the GNU compiler (gcc) does not support
150  "Objective-C++". Apple has submitted patches for this, but it is up to  "Objective-C++". Apple is interested in adding back their implementation
151  the GCC steering commitee to decide if they want to add them. If you  to gcc and is slowly adding parts of it to the mainline gcc implementation.
 would like to see this, please politely and respectfully lobby them at  
 @email{gcc@@gnu.org}.  
152    
153  @node Is there a plan to support Java/YellowBox Bindings?, What if I compile GNUstep under OPENSTEP/MacOS X?, Can one use the hybrid "Objective-C++", Compatibility  @node Is there a plan to support Java/YellowBox Bindings?, What if I compile GNUstep under OPENSTEP/MacOS X?, Can one use the hybrid "Objective-C++", Compatibility
154  @subsection  Is there a plan to support the Java/YellowBox Bindings?  @subsection  Is there a plan to support the Java/YellowBox Bindings?
# Line 140  OPENSTEP/MacOS-X windows server.  While Line 172  OPENSTEP/MacOS-X windows server.  While
172  backend library to provide the interface, nobody has bothered to  backend library to provide the interface, nobody has bothered to
173  date.  date.
174    
175  Also, the GNUstep base library is still being ported to Darwin.  You should, however, be able to use a GNUstep program with an X11 server
176    running on MacOSX.
177    
178  @node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What if I compile GNUstep under OPENSTEP/MacOS X?, Compatibility  @node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What if I compile GNUstep under OPENSTEP/MacOS X?, Compatibility
179  @subsection  Is the Objective C API for GTK related?  @subsection  Is the Objective C API for GTK related?
# Line 169  of the work involved in implementing the Line 202  of the work involved in implementing the
202  is a relatively thin layer and the advantages of GTK over direct  is a relatively thin layer and the advantages of GTK over direct
203  xlib or win32 calls is likely to be minimal.  If/when GTK is ported  xlib or win32 calls is likely to be minimal.  If/when GTK is ported
204  to more systems, a backend written using it could be a valuable  to more systems, a backend written using it could be a valuable
205  asset - volunteers are, as always, wecome.  asset - volunteers are, as always, welcome.
206    
207    
208  @c ****************************************************************  @c ****************************************************************
# Line 194  asset - volunteers are, as always, wecom Line 227  asset - volunteers are, as always, wecom
227    
228    Good question.  Read the tutorials at the GNUstep web site. Also look at    Good question.  Read the tutorials at the GNUstep web site. Also look at
229  Apple's documentation (pointers in the Resources section on the GNUstep web  Apple's documentation (pointers in the Resources section on the GNUstep web
230  site.  site.)
231    
232  @node How can I help with GNUstep?, Helping develop GNUstep, How can I get started programming?, Compiling and Developing  @node How can I help with GNUstep?, Helping develop GNUstep, How can I get started programming?, Compiling and Developing
233  @subsection  How can I help with GNUstep?  @subsection  How can I help with GNUstep?
# Line 216  Free Software Foundation before they can Line 249  Free Software Foundation before they can
249  project.  Get in touch with the maintainer of the library you are  project.  Get in touch with the maintainer of the library you are
250  working on about this.  working on about this.
251    
252  Don't start with large-scale reorganisation of anything - instead,  Don't start with large-scale reorganization of anything - instead,
253  get a general idea in mind of what you want to do, and proceed as  get a general idea in mind of what you want to do, and proceed as
254  much as possible with incremental changes that don't break anything  much as possible with incremental changes that don't break anything
255  - that way you can make those incremental changes available to the  - that way you can make those incremental changes available to the
# Line 328  volunteer to help, or you can start your Line 361  volunteer to help, or you can start your
361  @node How can I help with the GNUstep website?, Why doesn't GDB support Objective-C?, How do I start writing applications?, Compiling and Developing  @node How can I help with the GNUstep website?, Why doesn't GDB support Objective-C?, How do I start writing applications?, Compiling and Developing
362  @subsection  How can I help with the GNUstep website?  @subsection  How can I help with the GNUstep website?
363    
364   Talk to Adam Fedor @email{fedor@@gnu.org}, the maintainer.  Talk to Adam Fedor @email{fedor@@gnu.org}, the maintainer.
365    
366  The GNUstep website is kept as a CVS module, but the largest portions  The GNUstep website is kept as a CVS module, but the largest portions
367  of it (the FAQ and the Documentation) are actually  of it (the FAQ and the Documentation) are actually
# Line 350  out-of-date (or wrong) and update/mark-a Line 383  out-of-date (or wrong) and update/mark-a
383  @node Why doesn't GDB support Objective-C?,  , How can I help with the GNUstep website?, Compiling and Developing  @node Why doesn't GDB support Objective-C?,  , How can I help with the GNUstep website?, Compiling and Developing
384  @subsection Why doesn't GDB support Objective-C?  @subsection Why doesn't GDB support Objective-C?
385    
386  Apple has submitted their patches to make GDB work with Objective-C  Update: GDB 6.0, which should come out sometime in September 2003
387  programs, and the GDB maintainer has said that he is interested in  supports debugging of Objective-C code.
 integrating them. Now it appears that that there is just a lack of  
 time and priority to get this done. You can ask about or lobby for this -  
 see @url{http://sources.redhat.com/gdb/}.  
388    
389  There are patches available on the gnustep web site if you want  There are patches available on the gnustep web site for earlier versions
390  to compile your own gdb (see @url{ftp://ftp.gnustep.org/pub/gnustep/patches}).  of gdb (see @url{ftp://ftp.gnustep.org/pub/gnustep/patches}).
391    
392    
393  @c -------------------------------------------------------------------  @c -------------------------------------------------------------------
# Line 382  does, including Categories, Protocols, @ Line 412  does, including Categories, Protocols, @
412  class initialization on demand, delayed loading of classes, and  class initialization on demand, delayed loading of classes, and
413  initialization of static instances (such as @@""-style string objects).  initialization of static instances (such as @@""-style string objects).
414    
415  It also has several improvements over NeXT's implementation:  It also has several differences over NeXT's implementation:
416    
417  @itemize @bullet  @itemize @bullet
418    
 @item NeXT's runtime requires an extra function call (objc_msgSend) for  
 each message that is sent; (the function looks up the receiving  
 instance's implementation of the method).  GNU's implementation is  
 faster because it does not use an extra function call.  Instead, it  
 inlines a short piece of code that makes two pointer hops into a method  
 dispatch table; because the code is inlined, it does not incur the  
 overhead of a function call.  
   
 @item When running in thread-safe mode, NeXT's runtime must aquire a  
 global mutual exclusion lock every time a message is sent; this is  
 extremely slow.  GNU's runtime, amazingly, sends messages just as fast  
 in thread-safe mode as it does in single-thread mode---the code path  
 does not contain even a single extra instruction!  The GNU runtime only  
 needs locks when certainly structures are written, not read; the  
 structures are written relatively infrequently: only at class  
 initialization and when @samp{+poseAs:} is called.  
   
419  @item GNU's runtime provides ``selector-types'' along with each  @item GNU's runtime provides ``selector-types'' along with each
420  selector; NeXT's does not.  A selector-type is a string that describes  selector; NeXT's does not.  A selector-type is a string that describes
421  the C variable types for the method's return and argument values.  Among  the C variable types for the method's return and argument values.  Among
422  other uses, selector-types is extrememly helpful for fast distributed  other uses, selector-types is extremely helpful for fast distributed
423  objects implementations, (see GNUstep Base Library Section, below).  objects implementations, (see GNUstep Base Library Section, below).
424    
425  @item Many of the GNU functions have different names than their  @item Many of the GNU functions have different names than their
426  corresponding NeXT functions; the GNU names conform to the GNU coding  corresponding NeXT functions; the GNU names conform to the GNU coding
427  standards.  standards. The GNUstep base library contains a compatibility header that
428    works with both runtimes. You should use functions there or use OpenStep
429    Foundation methods/functions instead of the basic
430    runtime functions so that you code can run with either system.
431    
432  @end itemize  @end itemize
433    
# Line 454  portion of the OpenStep standard (the Fo Line 470  portion of the OpenStep standard (the Fo
470  @node What is base's current state of development?, What are the features of GNU Distributed Objects?, What is the GNUstep Base Library?, GNUstep Base Library  @node What is base's current state of development?, What are the features of GNU Distributed Objects?, What is the GNUstep Base Library?, GNUstep Base Library
471  @subsection What is its current state of development?  @subsection What is its current state of development?
472    
473  GNUstep base is currently stable and implements probably 99% of the  GNUstep base is currently stable and, to the best of our knowledge,
474  functionality of the OpenStep classes and most all of the new Cocoa  implements all of the OpenStep functionality (except for a few classes
475  classes.  that we feel are not useful). It also implements most all of the new
476  Normal work can already be done using the library since the  Cocoa classes. However we do some things, like scripting, differently,
477  missing 1 percent are the least-often-used features or are simply not  so we don't implement all the Cocoa classes.
 up to date with the latest Carbon spec.  
478    
479  @node What are the features of GNU Distributed Objects?,  , What is base's current state of development?, GNUstep Base Library  @node What are the features of GNU Distributed Objects?,  , What is base's current state of development?, GNUstep Base Library
480  @subsection What are the features of GNU Distributed Objects?  @subsection What are the features of GNU Distributed Objects?
# Line 471  are not available. Line 486  are not available.
486    
487  [NOTE: The GNU distributed object facilities have the same ease-of-use  [NOTE: The GNU distributed object facilities have the same ease-of-use
488  as NeXT's; be warned, however, that they are not compatible with each  as NeXT's; be warned, however, that they are not compatible with each
489  other.  They have different class heirarchies, different instance  other.  They have different class hierarchies, different instance
490  variables, different method names, different implementation strategies  variables, different method names, different implementation strategies
491  and different network message formats.  You cannot communicate with a  and different network message formats.  You cannot communicate with a
492  NeXT NSConnection using a GNU NSConnection.    NeXT NSConnection using a GNU NSConnection.  
# Line 497  you like. ]. Line 512  you like. ].
512  * What is the GUI Library?::      * What is the GUI Library?::    
513  * Explain the organization of the front- and back-ends::    * Explain the organization of the front- and back-ends::  
514  * What is the current state of development of the front-end?::    * What is the current state of development of the front-end?::  
515  * What is the current state of development of the X/DPS back-end?::    * What is the current state of development of the back-ends?::  
516  @end menu  @end menu
517    
518  @node What is the GUI Library?, Explain the organization of the front- and back-ends, GNUstep GUI Library, GNUstep GUI Library  @node What is the GUI Library?, Explain the organization of the front- and back-ends, GNUstep GUI Library, GNUstep GUI Library
# Line 531  graphics/event platforms.  Much work wil Line 546  graphics/event platforms.  Much work wil
546  separation between front- and back-end, because it allows different  separation between front- and back-end, because it allows different
547  platforms to share the large amount of front-end code.  platforms to share the large amount of front-end code.
548    
549  @node What is the current state of development of the front-end?, What is the current state of development of the X/DPS back-end?, Explain the organization of the front- and back-ends, GNUstep GUI Library  @node What is the current state of development of the front-end?, What is the current state of development of the back-ends?, Explain the organization of the front- and back-ends, GNUstep GUI Library
550  @subsection What is the current state of development of the front-end?  @subsection What is the current state of development of the front-end?
551    
552  Many of the classes are well implemented, if not thouroughly tested.  Many of the classes are well implemented, if not thoroughly tested.
553  See the GNUstep web sites and read status information contained in the  See the GNUstep web sites and read status information contained in the
554  distribution for the most up-to-date information.  distribution for the most up-to-date information.
555    
556  @node What is the current state of development of the X/DPS back-end?,  , What is the current state of development of the front-end?, GNUstep GUI Library  @node What is the current state of development of the back-ends?,  , What is the current state of development of the front-end?, GNUstep GUI Library
557  @subsection What is the current state of development of the X/DPS back-end?  @subsection What is the current state of development of the back-ends?
558    
559    There are several backends currently available:
560    
561  It works, but is slow and buggy. A lot of work could be done.  @table @samp
562    @item xlib
563    This is the standard backend that runs on X11 and uses standard xlib
564    calls for implementing drawing. It works well, but is limited in many
565    areas due to the limitations of xlib drawing.
566    @item art
567    This is a very good backend that draws using the libart package and
568    freetype with near PostScript quality and functionality. At some point
569    it will become the standard.
570    @item w32
571    This backend works on Windows and is currently very alpha quality.
572    @end table
573    
574  @c ------------------------- GNUstep GUI Library -----------------------  @c ------------------------- GNUstep GUI Library -----------------------
575    
# Line 560  It works, but is slow and buggy. A lot o Line 588  It works, but is slow and buggy. A lot o
588  It is a free implementation of a Display PostScript server based on the  It is a free implementation of a Display PostScript server based on the
589  GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC.  GNU Ghostscript program developed by Aladdin Enterprises and now owned by artofcode LLC.
590    
591    At one point, GNUstep was using this for display purposes. However the
592    development of DGS has stopped as it is too difficult to maintain and
593    no one wanted to work on it. Now we are using other means of drawing.
594    
595  @node What is DGSs current state of development?, What is the relationship between the Display Ghostscript Server and X Windows?, What is the Display Ghostscript Server?, GNUstep DisplayGhostScript Server  @node What is DGSs current state of development?, What is the relationship between the Display Ghostscript Server and X Windows?, What is the Display Ghostscript Server?, GNUstep DisplayGhostScript Server
596  @subsection What is its current state of development?  @subsection What is its current state of development?
597    

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26