简单来说, GNUstep 是实作 OpenStep 介面的开放软体 (Open Source) 计划, 目标为提供跨平台的物件导向程式开发环境.
早在 1985 年, Steve Jobs 离开苹果电脑 (Apple) 后成立了 NeXT 公司, 并于 1988 年推出了 NeXT 电脑, 使用 NeXTStep 为作业系统. 在当时, NeXTStep 是相当先进的系统. 以 Unix (BSD) 为基础, 使用 PostScript 提供高品质的使用者图形介面, 并以 Objective-C 语言提供完整的物件导向环境. 尽管 NeXT 在软体上的优异, 其硬体销售成绩不佳, 不久之后, NeXT 便转型为软体公司. 1994 年, NeXT 与太阳 (Sun Microsystem) 合作推出 OpenStep 界面, 目标为跨平台的物件导向程式开发环境. NeXT 接着推出实作 OpenStep 介面的 OPENSTEP 系统, 可在 Mach, Microsoft Windows NT, Sun Solaris 及 HP/UX 上执行. 1996 年, 苹果电脑买下 NeXT, 做为苹果电脑下一代作业系统的基础, OPENSTEP 系统便演进成为 MacOS X 的 Cocoa 环境. 在 1995 年, 自由软体基金会 (Free Software Fundation) 开始了 GNUstep 计划, 目的在实作 OpenStep 介面, 以提供 Linux/BSD 系统一个完整的程式发展环境. 但由于 OpenStep 介面过于庞大, 开发人力不足, 及许多技术在当时尚未成熟 (如 Display PostScript), 所以直到目前为止, GNUstep 才算是一个完整的程式开发环境. 尽管 OpenStep 早在 1994 年便提出, 其介面及架构在现今仍相当先进及实用, 使得开发 GNUstep 程式相当容易. GNUstep 使用 Objective-C 语言, 是 C 语言加上 SmallTalk 的物件导向的功能. 结合两者的优点, 又不至于像 C++ 如此复杂. GNUstep 提供两个主要的程式库, Foundation 及 AppKit. Foundation 处理非图形介面的部份, 如字串, 档桉, 网路, 基本资料结构, 多行绪等, 又称之为 GNUstep Base. AppKit 则处理图形介面的部份, 包含视窗, 使用者介面等, 又称之为 GNUstep GUI. 由于 GNUstep 具有跨平台的特性, 有关绘图及字型的部份, 则交由 GNUstep Back 来处理. 使用者可依所使用的作业系统, 选择适当的后端处理 (Backend). GNUstep GUI 会自行处理与 Back 相关的功能, 程式开发者只要使用 GUI 程式库, 便可适用于各种后端上, 完全不用考虑平台问题. 目前 GNU GCC 3.x 支援 Objective-C 语言, GNUstep 则提供 GNUstep Make 来简化编译 Objective-C 程式. GNUstep Make 提供类似 Makefile 的功能, 称为 GNUmakefile. 与 Makefile 相比较之下 GNUmakefile 简单许多. 综合上述, GNUstep 实作 OpenStep 介面, 该介面已在商业市场上使用多年, 目前并演进成 MacOS X 的 Cocoa 环境. GNUstep 包含四个主要部份, 统称为核心 (Core): 1. GNUstep Make: 提供类似 Makefile 的功能, 称为 GNUmakefile, 较 Makefile 好用许多. 2. GNUstep Base: 提供 OpenStep 的 Foundation 程式库, 处理非图形介面的功能. 3. GNUstep GUI: 提供 OpenStep 的 AppKit 程式库, 处理图形介面的功能. 4. GNUstep Back: 提供与作业系统相关的后端处理, 提供 GNUstep GUI 有关绘图及字型的功能. 简单的说 GNUstep 其实也是要打造类似 KDE 或 GNOME 的整合式环境,只是说它用 的程式语言是 Object C , 而本身也有一套 GUI Toolkits 来开发,当然先进的物件导向设计是最让人印象深刻的.