GNUSTEP GNUstep: What is it ?

• A powerful object-oriented development environment: • A of cross-platform libraries for developing applications (text, graphic, script, web, etc.) • Development tools and applications • A free implementation of the OpenStep specifications • A community :-)

.org Once upon a time...

• NeXT and SUN collaborated in 1994 to create an API: OpenStep, extending on the famous NeXTSTEP environment and API • Soon, SUN moved its focus on a new toy, and NeXT was brought by Apple in order to create MacOS X • In the meantime, the Foundation started a free implementation of the OpenStep specification

gnustep.org What’s interesting ?

• GNUstep is crossplatform (, *BSDs, Windows, OSX...) and compatible with Cocoa (Apple) • Objective- is a really nice, simple yet powerful language, and you can transparently reuse C libraries (and soon with gcc 4, C++ libraries as well) • You’ve got Distributed Objects for free ! • GNUstep provides really powerful development tools like , that really speed-up the development

gnustep.org Languages

• Objective-C is the main language • but bindings exists for other languages: • Java, Ruby, Scheme, Smalltalk • with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel () could be ported.. any volunteers ?

gnustep.org One-minute course on Objective-C Objective-C ??

• A strict superset of the ANSI C -- a dozen new keywords and only one syntactic addition • Simply provides what’s needed to have real object-oriented features, not just class-oriented features: messages, late bindings, dynamic loading, introspection, categories, etc. • Very inspired by Smalltalk ! • “When I invented the term Object-Oriented, I didn’t have C++ in mind” -- Alan Kay

gnustep.org Interface

@interface MyObject : NSObject { NSString* name; } - (NSString*) name; - (void) setName: (NSString*) str; + (void) print: (id) anObject with: (NSString*) aMessage; @end

gnustep.org Implementation

@implementation MyObject

- (NSString*) name { return name; }

- (void) setName: (NSString*) str { ASSIGN (name, str); }

+ (void) print: (id) anObject with: (NSString*) aMessage { NSLog (@”%@: %@”, aMessage, anObject); }

@end

gnustep.org Usage

MyObject* anObject = [[MyObject alloc] init];

[anObject setName: @”Toto”];

[MyObject print: anObject withMessage: @”My object’s name is”];

My object’s name is: Toto

gnustep.org GNUstep components GNUstep’s ArGNcUhitecturestep Architecture

GNUstep Applications

GNUstep Core Other Frameworks

Application Kit (GUI) (Base) Database Kit

Graphics Web Deployment Backend (Back) StepTalk Scripting

Native Graphics Operating ... System System Legend Hosting Framework (Linux, BSD, MS Windows, OS X, ...)

Bundle gnustep.org Application

Foreign Slide level: Introduction GNUstep – Overview, Stefan Urbanek, 2004 GNUstep Frameworks

• Foundation • AppKit • GDL2: EOF 4.5 clone • SQLClient • GSWeb : WebObjects clone • StepTalk : script engine

gnustep.org DevelopmentGNUstep Aprocesspplication Development Process

Developer

Development Applications

Gorm User Interfaces

Development Tools

Project Center Make Environment Makefiles (GNUstep-Make)

GCC

Source Code

Make

Other Resources (Images, Sounds,...) Legend

Application Information

GNUstep

Foreign Slide level: Introduction GNUstep – Overview, Stefan Urbanek, 2004

gnustep.org ProjectCenter

• The GNUstep IDE • Manage your project’s files (source code, images, etc.) • Create the makefiles • Give you a nice GUI to set up options..

gnustep.org

GORM GNUstep Object Relationship Modeller

• At first glance, it’s just another GUI builder... • ...with nice additions like guidelines, etc. • But it’s much more than that : it’s really an object relation modeller • a “gorm” file is the of the object’s graph • Check a video demo on http://www.gnustep.org/experience/ DevelopmentDemonstration.html or come to the GNUstep booth/ devroom for a demo

gnustep.org

Related projects Frameworks

• Pantomime: mail management (pop3,imap,smtp..) • NetClasses: asynchronous network library • Addresses: address book management • BookmarkKit: bookmark management • Tryst: RendezVous implementation • CameraKit: libgphoto wrapper • SlideShowKit: includes slideshows in your application • etc.

gnustep.org Applications

• Not many apps for the moment (around sixty), but growing fast • Even with so few applications, you can experience the interest of having applications really cooperating (check the live CD or go the booth for a demo) • examples...

gnustep.org

Desktops !

• Different projects to create a desktop based on GNUstep libraries: • Backbone : the goal is to implement a NeXTSTEP-like desktop • Étoilé, Garma : wants to push the enveloppe :)

gnustep.org LiveCD: GNUSTEP

• http://livecd.gnustep.org NU G o f

n o i fi t i c a e t s p n e p m t e l e S p n n e i m o p

f O i e S t e a a c e t h

28.05.2004, 16:33

1 gnustep.org

Unbenannt-2.indd

T

E P Gallery

Future Future...

• Amelioration of the graphic backends (, OpenGL ...) • A better Windows backend • more GNUstep applications and desktop-related stuff • Better integration with KDE/GNOME

gnustep.org gnustep.org