|
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 or on top of the Apple Mac OS X Cocoa
frameworks, providing an opaque layer to write portable
applications.
GNUstep Renaissance is mostly useful to:
- write GUIs for GNUstep and Apple Cocoa in an open,
portable format. The GUIs are described by an open, simple,
human-editable XML file which works on GNUstep (GNU/Linux, *BSD),
GNUstep (Windows) and Apple Cocoa.
- generate GUIs for GNUstep and Apple
Cocoa programmatically. Have your code or scripts generate
simple XML data describing your windows and GUIs; Renaissance will
magically create the GUIs from the XML.
- write GUIs for GNUstep and Apple Cocoa without using
Gorm or Interface Builder. You can create a new GUI by writing
an XML description of your windows using a simple text editor (vi
or emacs will do). The XML is extremely simple and is designed to
be a pleasure to edit by hand.
- write GUIs for GNUstep and Apple Cocoa that can be
translated easily in a large number of languages. Renaissace
decouples the GUI localization from the GUI design, allowing you to
easily translate your software in a number of languages, and making
easy the maintenance of translations. An end-to-end localization
toolchain based on gettext is planned for Renaissance 1.0 - which
will finally allow you to have GNUstep or Apple Cocoa applications
that are as easy to translate as any other gettext-based
system.
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 OSX).
- 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 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
(nicola.peroatmeta-innovation.com) and is part of the GNUstep
project (http://www.gnustep.org).
|