Sunday, December 17, 2006

What GNUstep is and is not....

Recent replies to my previous post on the gnustep-dev mailing list have made it necessary for me to further define what I believe GNUstep should become in the future.

GNUstep is a development environment and API, first and foremost. While GNUstep contains a few apps which comprise a minimal desktop... mainly GWorkspace... I feel as though it should not be considered as a desktop project. Yes, I know this contradicts what I said in part of my previous posting, but here's why I've had this change of heart. It is necessary for GNUstep to focus on being one thing and doing that extremely well. GNUstep's main purpose, like OPENSTEP's, is to provide a multiplatform development environment and API.

The way I see it right now, the project is divided into two camps:
  1. The group of people who feel that GNUstep should be an API/development environment
  2. The group of people who feel that GNUstep needs to be a desktop and possibly a standalone OS which is a clone of OPENSTEP/NeXTSTEP.
What I am saying is that if we do #1, #2 can follow. There is no reason why GNUstep cannot be a strong, multiplatform API AND provide the basis for a desktop/OS.

My point, quite simply is, that we must be the first one. The second one can be done in other projects. Examples of these projects are Etoile, Backbone and GAP. These projects all contain applications which make up a desktop environment on top of GNUstep. Once completed they will complement GNUstep's offering. The LiveCD provides the other part of this, which is a self-contained GNUstep environment that people can sample.

Friday, December 15, 2006

Plans for Change

As Chief maintainer, it is up to me to determine the direction of the project.

Over the past several years interest in GNUstep has steadily increased, but not nearly by enough. In order to reach a wider audience, GNUstep needs to do a number of things (not necessarily in priority order):

1) Adopt a more modern look. This includes the look of the windows, the color scheme and how the menus are rendered. It's okay to let that old gui go, it's not going to kill you to do so. ;) Users like things to look "good". This is entirely subjective. Personally, I think GNOME and KDE are quite ugly under the best of circumstances. To this end, we need to make integrated theming available in GNUstep and make it easy.

2) Make regular releases. Start courting different distributions to include GNUstep in their package set. Start getting the word out. Start making sure that people KNOW that GNUstep is alive and well. This, I believe, is the main reason why people have the perception that GNUstep is dead. We don't push ourselves hard enough and into enough distributions to be visible enough for people to care.

3) Eliminate the need for GNUstep.sh, either by making GNUstep place it's binaries and libraries in more "standard" places, or by providing an installation procedure

4) Start appealing more to the Mac OS X/Cocoa crowd. While some people disagree with me, I believe that this group IS the group we need to be playing towards. In the past some have advocated that GNUstep be an "OPENSTEP-like" or a "Cocoa-like" environment. While I don't believe that GNUstep should necessarily follow all of the design decisions Apple has made, I believe that it should implement all of the classes which are useful and which are being commonly used in spite of whether or not people personally agree with having that class in GNUstep or not. A good, and recent, example of this is NSToolbar. It's not about us, remember, it's about them... the users and developers USING GNUstep. We are here to make life easier for our users not to make GNUstep into the epitome of "perfect design" by excluding classes we personally don't like. This is not productive and, not to mention, highly subjective.

5) Focus and concentrate on one and only one set of display technologies per platform. We expend way too much time and energy on maintaining mulitple backends (xlib, art and etc) when we really don't have to. For Linux/BSD we have two functional backends and another on the away for cairo. What's the point of this? In my opinion we should complete the cairo backend and deprecate BOTH the xlib and art backends. xlib is hopelessly outdated and libart isn't really supported by anyone anymore.

6) Decide what we are. Yes, that's right. Some people view GNUstep as a desktop, others view GNUstep as a development environment. GNUstep needs to define itself as one or the other. The website says it's a development environment, but it has many aspects which fit the definition of a desktop environment. In truth, I believe it should be both.

7) Make GNUstep friendly with other environments like GNOME, KDE, Windows and etc. Make sure that GNUstep functions sanely in these environments. This might mean that we need to have behaviors for each different environment. How to implement this is unclear, but it's something that I believe would make the user experience better overall.

All of this is just for starters. Anyone who is familiar with my work on Gorm knows that I tend to focus intently on things until they succeed. I intend to do the same with this project as a whole.

If you have anything to add to or detract from the above, please feel free to comment. I would love to hear all opinions.

Monday, December 11, 2006

Chief Maintainer for GNUstep

I have been involved with GNUstep for seven years now, since 1999. It is my great pleasure to take leadership of the project so that I can help it grow. From my first commit to NSScreen to the latest Gorm nib modifications, this project has been a labor of love for me, and it will continue to be so for many years to come.

I sincerely hope that Adam will remain a part of the project. A "thank you" hardly expresses what the project owes him. You have our deepest gratitude, Adam, for everything.