G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like...

34
GNUSTEP

Transcript of G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like...

Page 1: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

GNUSTEP

Page 2: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

GNUstep: What is it ?

• A powerful object-oriented development environment:

• A set 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 :-)

Page 3: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

Once upon a time...

• NeXT and SUN collaborated in 1994 to create an open 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 Free Software Foundation started a free implementation of the OpenStep specification

Page 4: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

What’s interesting ?

• GNUstep is crossplatform (Linux, *BSDs, Windows, OSX...) and compatible with Cocoa (Apple)

• Objective-C 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 GORM, that really speed-up the development

Page 5: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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 (Perl) could be ported.. any volunteers ?

Page 6: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

One-minute course on Objective-C

Page 7: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

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

Page 8: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

Interface

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

Page 9: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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

Page 10: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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

Page 11: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

GNUstep components

Page 12: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

GNUstep’s Architecture

GNUstep – Overview, Stefan Urbanek, 2004

GNUstep Core

Hosting Operating System

(Linux, BSD, MS Windows, OS X, ...)

Foundation Kit

(Base)

GNUstep Architecture

Application Kit

(GUI)

GNUstep

Applications

Graphics

Backend

(Back)

Other Frameworks

Database Kit

StepTalk

Scripting

Web Deployment

...Native Graphics

System

Operating

System

Foreign

Legend

Bundle

Framework

Application

Slide level: Introduction

Page 13: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

GNUstep Frameworks

• Foundation

• AppKit

• GDL2: EOF 4.5 clone

• SQLClient

• GSWeb : WebObjects clone

• StepTalk : script engine

Page 14: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

Development process

GNUstep – Overview, Stefan Urbanek, 2004

Development Tools

Development Applications

Make Environment

(GNUstep-Make)

Gorm

Project Center

GNUstep Application Development Process

Application

Developer

User Interfaces

Source Code

Makefiles

Other Resources

(Images, Sounds,...)

GCC

Make

GNUstep

Foreign

Legend

Information

Slide level: Introduction

Page 15: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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..

Page 16: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 17: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

GORM

• 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 serialization 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 Object Relationship Modeller

Page 18: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 19: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

Related projects

Page 20: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

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.

Page 21: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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...

Page 22: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 23: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 24: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 25: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

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 :)

Page 26: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

LiveCD: GNUSTEP

• http://livecd.gnustep.org

GNU

S

T

E

P

a

f r

ee

i m

pl e

me

nt a

t i on

o f

t he

O

pe

nS

t ep

s p

ec

i fi

ca

t i on

Unbenannt-2.indd

28.05.2004, 16:33

1

Page 27: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

Gallery

Page 28: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 29: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 30: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 31: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute
Page 32: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

Future

Page 33: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org

Future...

• Amelioration of the graphic backends (Cairo, OpenGL ...)

• A better Windows backend

• more GNUstep applications and desktop-related stuff

• Better integration with KDE/GNOME

Page 34: G N U S T E P - Nicolas Roard€¢ with some work, existing Cocoa bindings for other languages like PyObjC (Python) and CocoaCamel (Perl) could be ported.. any volunteers ? One-minute

gnustep.org