Today (October 24, 2005) marks three years since the initial public release of XRG. While I haven’t been able to spend as much time on XRG recently as I would like to, it’s still a project that is very close to me, and I doubt there would be a Gaucho Software today if XRG never came to be. I thought I would take this opportunity to take a tour of XRG’s development as an application, starting from before the public release even. Just a warning in advance, these screenshots were taken on Tiger, and it looks like some of the compatability has been broken in the older versions. Just imagine they work completely. 🙂
The Early Days
I started developing XRG one day in August of 2002. I had played a little bit with Cocoa development before that, but nothing really serious or even close to something I would release. Previously I had coded mostly in C/C++ and Perl on Linux, and I had some experience with Windows (MFC) programming as well. I kept thinking, “I’m a Mac user, yet the only major platform I’ve never coded for is the Mac.” That day I decided to learn Cocoa and Objective-C, and to really give it a shot.
There was one type of app that I really wanted on Mac OS X, and that was a system monitor. I’ve been a long-time user of gkrellm on Linux, and I hated having to start up X11 just to run it on my Powerbook. There were a couple of other smaller system monitors, but none of them were as nice. I could have just ported gkrellm to the Mac, but really there were some things that bugged me about it. At the time it was difficult to find good themes, and you couldn’t resize the window. I was an open source nut, so why don’t I just start coding a new system monitor, borrowing some pieces from gkrellm and other open source projects? Concept XRG was born.

I picked up a Learning Cocoa book and started to hack out a project. At the time Metal windows were all the rage, so I picked that as an initial interface. Then I dragged a couple of views out onto the window, banged my head against the wall for awhile trying to figure out why I couldn’t get the views to update (until I discovered NSTimers), and after a few weeks (off and on) I had version 0.0.1. I decided on the name X Resource Graph. At the time, apps were all named X such-and-such, or something X, because you know, the letter X was cool. What does my app do? It graphs system resources. X Resource Graph…hmm…still too long. XRG, that works.
Note that in the above screenshot, I had marked it as 0.1 because that’s what I was working towards. Also, at the time I didn’t have any spacing between XResourceGraph…that changed before the original 0.1.1 release. There were several internal versions before the public release, 8 in all. CPU and Network Graphs were features #1 and #2 in 0.0.1. Then came a transparent window in 0.0.2, originally from code in AquaMon. Now that code has been so heavily modified, I think there may be about 5 lines that are the same as AquaMon these days. 🙂 In version 0.0.3 I started working on changing the window size (Oooo… you could change the window width by setting a variable), added a Disk graph in 0.0.4, Preferences (including color and transparency) in 0.0.5. The weather data was added in 0.0.6, the weather graph added 0.0.7. Finally 0.1.0 added the finishing touches to get it all working well, and 0.1.1 was a cleaned up version of the code that was ready to release.

October 24, 2002
XRG was released that morning and was added to Version Tracker. At the time, I was completely stoked to get between 100 and 200 downloads that first day. That many people are using it!? Cool! From then on out I was hooked. 0.1.2 came out just 2 weeks later with some big speed improvements and some real window resizing, by dragging on any border. I still wish other Mac OS X windows would work this way. Three weeks after that (over Thanksgiving weekend) I released version 0.1.3, the first release that used multi-threading to download weather data…that sure was nice. 🙂
XRG 0.1.4 was the first release that I actually started trying to really get the word out. I finally felt comfortable with the featureset, and I sent it over to MacNN and they actually posted it. That was pretty cool.
Version Numbers
Now version numbers have been a bit of a mess when it comes to XRG. Believe it or not, there was actually a 0.1.5 release before I finally thought it might be a good idea to release 0.2.0. I think the 0.1.x series was versioned fairly well. The app was still new, there were bugs in it that I still needed to fix and some key features that still weren’t implemented. I just wanted to get the app out there to find out what people thought of it. Really though, 0.2.0 should have been the 1.0 release. It was one and a half years later before I went to version 1.0, and the changelog between 0.5 and 1.0 was big enough to be considered an upgrade to 2.0.
Thinking back, at the time I really was just not as confident with the releases, not because they were unstable, but because I was a new Cocoa developer. 0.x is a release that doesn’t guarantee anything. If something didn’t work, I could just point to the fact that it wasn’t even at 1.0 yet. Lesson learned though, and I would like to encourage other developers, if your app has a decent initial featureset and is stable, just release it as 1.0.
Key Development
There have been a lot of releases these past few years…and I don’t want to go through all of them, but I do want to mention some versions and their primary feature(s):
- XRG 0.2.0: Stock Graph and a module manager that made adding graphs much easier.
- XRG 0.2.1: Themes!
- XRG 0.3.0: CPU Temperature, though it was still kind of hit or miss.
- XRG 0.4.0: The Battery Graph was born.
- XRG 0.5.0: Added contextual menus for all the graphs. Ability to change the graph font (this was slightly after the Apple 22-23″ LCD displays came out. 🙂 Added a minimize graph feature (double clicking on the header).
- XRG 1.0: Support for more than 2 CPUs which I couldn’t imagine at the time…still waiting on a future Quad G5 user to try this out. 🙂 The Temperature Graph.
Future Development
XRG has been a lot of fun to develop, and I don’t plan to stop anytime soon. Development has slowed down since starting other Gaucho Software projects. However, I do plan to continue development and hope to add some new features to both Dash Monitors and XRG soon. Furthermore, I’m always looking for contributers to Gaucho Software open source projects. If you’re interested, let me know.
Acknowledgements
There are several people who have helped make XRG what it is today. Most recently, Laurent Baumann did some nice XRG application and theme icon updates. Philippe Martin is another key contributer to XRG… I received the first email from him back in December of 2002, and he has provided tons of feedback since then for XRG and other Gaucho Software projects. I’d also like to give another shout out to the beta testers (Daniel Austin, Dave from Lab 6, Bob Piatek, Paul Vail, James Watkins, Mats Weber, Thomas Wurdemann, and Luiz Felipe O. Martins) for providing so much feedback. My wife Katrina has always been nothing but encouraging for all the projects I have worked on, but especially XRG since most of the development time was spent in evenings and on weekends.
Finally, I want to thank all the users who have gotten in touch with me over the years. It’s been great hearing feature requests and feedback from everyone, seeing screenshots on ResExcellence, and getting themes sent over.
Leave a Reply