GNOME/Gtk+ Book Proposal
By user12607856 on Aug 19, 2004
One of my work related ambitions that I still have to fulfill, is to write a text book. Even though I'm a co-author of the Java Message Service API Tutorial and Reference, it's not really the same thing, as Kim Haase did most of the work to pull that together. The book-signing at JavaOne was fun that year though.
I suggested writing a text book (for their Pocket Reference series) entitled "GNOME 2 Development Pocket Reference".
There are a few GNOME/Gtk+ books out there but almost all of them are for GNOME/Gtk+ 1.x. No doubt there are more GNOME 2.x ones on the way. They all tend to focus (in varying degrees of detail) on a sub-section of the full GNOME development platform. What I haven't seen is a simple consolidation of what is entailed in helping to improve the GNOME 2 environment (from a developers perspective) or how to develop an application (or a new library) for the GNOME 2 environment from scratch, and how you can draw on the existing GNOME development infrastructure to do this.
I know when I started doing GNOME developement, finding out about all this was not straight forward. A lot of it's therw on the various GNOME related developer web sites, but having all this information at hand in a single reference book would have been invaluable.
Below, I've included a first cut at a table of contents for this proposed book. Each section would give an extended overview of that particular topic and include references to further online resources (already written by other people) that would go into much more detail. For example, for the various GNOME libraries, it would describe what this library can do for you (why you would use it) and how it fits in with other parts of the GNOME development environment. It would give a detailed description of the main functionality of the library. It would not try to give a complete API reference section (that would be too detailed), but would simply point you to where that could be found.
I expected this book to be about 100-120 pages long (in the small format Pocket Reference size).
I think I must have caught them at a very busy time, as O'Reilly took a lot longer to respond then there web site said they would. They turned down the proposal because they didn't think there was much of a market for a book like this. Maybe, I don't know. I bow to their experience. I'm a big fan of O'Reilly books (I have over 30 of them), so this was a bit of a disappointmenti, but I fully understand. There are hotter computer related topics out there.
So I throw it out there. Maybe this should be created as an online document that can grow over time, with everybody contributing, and this can end up being the place where we point brand new GNOME/Gtk+ developers, so they can get started.
Here's the TOC. Note that I realize there will be other sections to add. I'm sure I've forgotten a few, and certainly going towards GNOME 2.8, there will be additions for that.
GNOME 2 Development Pocket Reference Copyright (c) Rich Burridge July 2003. Table of contents. Preface. Introduction Conventions 1.0 What is GNOME. 1.0.1 The GNOME Desktop. 1.0.2 The GNOME Development Platform. 1.0.3 GNOME Office. 1.1 Getting the latest GNOME distribution. 1.2 Using GNOME. 1.2.1 Introduction to GNOME. 1.2.2 GNOME User's Guide. 1.2.3 GNOME Accessibility Guide. 1.2.4 GNOME 2 Desktop System Administrators Guide. 1.3 Bug Reporting. 1.4 Getting more GNOME Software. 1.5 The Fifth Toe and Garome Projects. 1.6 Further Resources. 2.0 Getting Involved with the GNOME Project. 2.1 Choosing the Right Job For You. 2.1.1 Accessibility. 2.1.2 Application Development. 2.1.3 Developer Tool Development 2.1.4 Documentation. 2.1.5 GNOME Platform Development. 2.1.6 Graphics. 2.1.7 Packaging. 2.1.8 Quality Assurance. 2.1.9 Sounds. 2.1.10 Translation (Localization). 2.1.11 Usability. 2.1.12 User Interface/Human Interface. 2.1.13 Web Design and Development 2.2 GNOME Todo Lists. 2.2.1 The GNOME Todo Database. 2.2.2 GNOME Documentation Project Task List. 2.2.3 GNOME Translation Project Task List. 2.3 The GNOME Love Project 2.4 Further Resources. 3.0 Getting Started 3.1 Standard GNOME Communication 3.1.1 Mailing Lists. 3.1.2 IRC: Internet Relay Chat. 3.1.3 Integrating into GNOME. 3.2 Finding the Right Contact Person. 3.3 Further Resources. 4.0 Developing a new GNOME Project. 4.1 Development Tools. 4.1.1 Gnu Compilers. 4.1.2 Source Control - CVS 4.1.3 Automatic Configuration - autoconf 4.1.4 Automatic Makefile Generation - automake 4.1.5 Other Build tools. 4.2 Project Support Files. 4.3 Common Application Requirements. 4.3.1 Command Line Parsing. 4.3.2 Saving State. 18.104.22.168 Application Configuration. 22.214.171.124 Session Management. 4.3.3 Usability (HIG compliance). 4.3.4 Internationalization. 4.3.5 Localization. 4.3.6 Accessibility. 4.4 Choosing an Open Source License. 4.5 An example GNOME Application - gnome-hello 4.6 Further Resources. 5.0 The GNOME Development Framework. 5.1 GNOME 2.x API Reference. 5.1.1 GLib 5.1.2 GObject 5.1.3 Atk 5.1.4 Pango 5.1.5 GdkPixbuf 5.1.6 GDK 5.1.7 GTK 5.1.8 libXML 5.1.9 libglade 5.1.10 libgnome 5.1.11 libgnomeui 5.1.12 gnome-vfs 5.1.13 gconf 5.1.14 libgnomecanvas 5.1.15 libart 5.1.16 ORBit2 5.1.17 bonobo-activation 5.1.18 libbonobo 5.1.19 libbonoboui 5.1.20 libpanel-applet 5.2 GNOME Desktop Libraries 5.2.1 gstreamer 5.2.2 librsvg 5.2.3 libvte 5.3 Accessibility Libraries. 5.3.2 at-spi 5.3.3 libgail 5.4 Other Related Libraries 5.4.1 libGSF 5.4.2 gnome-db 5.4.3 libIDL 5.5 Language Bindings. 5.5.1 C++ - gtkmm. 5.5.2 Java - Java-GNOME 5.5.3 Python - gnome-python 5.6 Glade - The GNOME Application Builder 5.7 Further Resources. Index ===========================================================================
Since writing this, I've made a few notes on things that should be covered somewhere in the book. These include:
- Make sure pkg-config is covered
- How to create your own widget
- How to create an applet
- How to write a theme
- Advanced graphics and sound programming
- Links for Gnu autoconf, automake and libtool
I'm interested in feedback from other GNOME developers, especially ones that are just getting started. What topics are you finding it hard to get information on?