Welcome to GNUstep Renaissance!

GNUstep Renaissance is free software (GNU LGPL), and part of the
GNUstep project.  It is a development framework which runs on top of
the GNUstep libraries.  It also works on top of the Apple Mac OS X
Cocoa libraries, providing an opaque layer to write portable
applications.

In short, GNUstep Renaissance allows you to describe your user
interfaces (that is, the windows in your application, and the buttons,
boxes, textfields, etc in the windows) in simple and intuitive XML
files, using an open, standard format describing the logic of the
interface.  GNUstep Renaissance can then, at run time, generate the
user interfaces (using the native host OpenStep-like libraries) by
reading the XML files.  The connections between the objects created
from the XML files, and the other objects in the application are done
via outlets (as traditionally in OpenStep); a new quick and intuitive
syntax has been developed to make creating outlets as easy as
possible.

GNUstep Renaissance contains quite a few new ideas over previous
technologies.  Some of the main end-user advantages of GNUstep
Renaissance over previous OpenStep-inspired technologies for the same
task are:
          
 - Portability.  User interfaces built using GNUstep Renaissance are
 truly portable.  They simply run without any change on any
 OpenStep-based platform on which Renaissance has been ported
 (currently, at least on both GNUstep and Apple Mac OS X).

 - Open, simple and standard format.  User interfaces built using
 GNUstep Renaissance are saved into open, simple files which can be
 edited and read on any platform using any text editor.  The XML
 format has been designed to be as easy to edit as possible.  We will
 have a specific graphical builder for GNUstep Renaissance, which will
 make editing directly the XML files a rare operation; still, it's a
 great advantage to be able to actually edit and inspect them directly
 whenever needed.  Your user interfaces will no longer be locked in
 binary files which can only be edited using a specific
 platform-specific application; you will be able to compare different
 versions of the same user interface using diff and cvs diff (you
 can't get any meaningful comparison with binary formats); and your
 user interfaces will be finally stored in a readable format, which
 you can read even from a terminal, making your program easier to
 check.  The format is so nice that I expect many hard hackers will
 keep creating user interfaces directly in XML even when a graphical
 editor is available!

 - Easy localization.  User interfaces built using GNUstep Renaissance
 are much easier to translate than in all previous technologies.  You
 no longer need to create a new separate interface for the new
 language: you can just provide the translation of the strings in a
 .strings file, and GNUstep Renaissance will automatically replace
 every string in the existing interface with the corresponding
 translation.  Previous technologies can't do this because they don't
 support automatic sizing and layout of widgets.

 - Themeability.  Themes are a problem for traditional OpenStep-like
 technologies, because a change in theme changes all the widgets
 appearances and sizes.  User interfaces built using GNUstep
 Renaissance can survive easily a change in theme, since all sizing
 and layout of widgets is done dynamically at runtime.  Previous
 technologies can't, and you would need to create a different user
 interface for each different theme.
        
GNUstep Renaissance compares favourably to other non-OpenStep
technologies for similar tasks as well:

 - Easy, intuitive integration with the rest of the software.  GNUstep
 Renaissance uses outlets and connections (which are made possible by
 Objective-C) to connect at run time user interface objects to other
 objects in the application.  This is the traditional magic used by
 NIB files (of NeXTstep and OpenStep fame) to integrate user
 interfaces with the rest of the program.  When a file is loaded, you
 can have arbitrary instance variables of objects in your application
 automatically set to point to newly created buttons or other widgets;
 and vice versa, you can have instance variables and properties of
 user interface objects set to point to objects in your application.
 You can control very easily these connections from the file itself.

 - More intelligent autolayout mechanism.  GNUstep Renaissance
 implements new autolayout ideas whereby each object in the interface
 contains enough intelligence to provide an intelligent default
 autoresizing behaviour.  For example, buttons automatically know they
 should not be resizable, while editable textfields automatically know
 they should be resizable horizontally but not vertically.  Containers
 automatically gather all this information, and can automatically
 compute reasonable borders and alignments, and use them to layout
 automatically without programmer's intervention.  The result is that
 you can create a window by just creating objects, and putting them in
 boxes -- without having to spend time setting spacing, borders,
 resizing behaviours -- unless you really need to, in order to get a
 special effect.  In the normal case, you will at most need to set a
 few align flags (left vs center vs right).  This cuts down on
 development time a lot, and also creates better user interfaces,
 since GNUstep Renaissance is following a strict, mechanical logic
 when choosing autolayout behaviours: programmers often pay too little
 attention to sizing and layout flags and details, resulting in user
 interfaces which work but which often have quite a lot inconsistent
 (or simply wrong) sizing and layout details.  This can't happen with
 GNUstep Renaissance.
        
Renaissance is composed of the following blocks:

 - AutoLayout: a collection of autolayout objects (h/v boxes, grids,
 spaces, ...), providing automated runtime widget layout, similar to
 what you find in most other toolkits on the market ... similar, but
 better :-) The missing piece of the AppKit.  Depends on gnustep-gui.

 - Markup: an xml parsing/generating engine.  Depends on gnustep-base.

 - TagLibrary: a standard set of tag objects for use by the xml
 parsing/generating engine in order to read/write gui windows, menus,
 panels, etc.  Depends on the previous parts: AutoLayout and Markup.

        
Renaissance was written by Nicola Pero (n.pero@mi.flashnet.it) and is
part of the GNUstep project (http://www.gnustep.org).
        
At the moment, Renaissance is already a reality, but it's still alpha
software -- it's experimental.  The internals and the internal details
will change a lot.  If you like Renaissance, please use it, and
contribute back your improvements!

For more information, read the original ANNOUNCE.

GNUstep Renaissance home page is at http://www.gnustep.it/Renaissance.
