Node
From Dionyziz
Node was an Open Source IRC Client for Windows. It was licensed under GPL and developed mainly using VB6, XML, HTML, CSS, and Javascript.
[edit] Some History
Node was started by me and _daemon_ back in 2003. The original idea and name is due to _daemon_, and the project was started as a simple and robust IRC client with few features. It was not meant to be user-friendly but rather, fast and secure. After a month or two, we decided to make the project Open Source and host it on SourceForge.net. As _daemon_ was mostly opposed to that idea, although he consented for code publication, he parted the project a few days after the migration. The project was lead by myself for the next two years. Two other people, ch-world and jnfoot, majorly contributed to the project as developers and administrators, developing many features, making bugfixes, helping it become more popular, and recruiting more people. Several other people, including many developers, translators, beta testers, and skin designers helped out our idea during that time, by developing minor features, translating the program to 9 different languages, and testing the software. We decided to turn it into a very customizable, user-friendly, localized and skinnable client, sacrificing, as expected, speed and memory. The basic idea was that a user not fond of IRC should be able to use it without a huge attempt. Web principles were used, such as point-and-click links for joining channels, opening private windows, and so forth. Many IRC commands, including non-standard, services-based commands were integrated into menus, making it extremely easy for a novice user to go on IRC. Still, security always remained one of our major concerns.
A new version of Node, "Node Lite", was planned in the form of an Instant Messenger for IRC, but it never got far, and no source code from that idea was ever published outside the original team. It was part of an attempt to separate the front-end and the back-end of Node, distinguishing the network-handling and protocol-handling classes from presentation. However, we decided that it wouldn't be a good idea to make it IM-style, because IRC is all about channels, and that an Instant Messaging form is not convenient for its purpose. The project ended up dead, after I parted and, eventually, ch-world as well, in early 2005. Hawkie, another Visual Basic developer, proposed to take over the project, port it to .NET and extend it to become a suite of Internet utilities, including an Internet Explorer-based browser, in 2005. He obtained the NodeIRC.com domain name, but the idea was discontinued after only an unstable and incomplete release.
[edit] Innovations
Although the latest version developed by the original team, 0.35, is very buggy, I personally still use it as my Windows IRC Client. It contains some nice coding ideas and was one of the largest open source projects in Visual Basic 6 ever developed. As expected, Visual Basic 6 open source projects are not very popular. The latest version contains about 31,720 lines of code in Visual Basic 6, XML, HTML, CSS, and Javascript, including the release-shipped skins code. Node achieved memorable activity, including large amounts of work by its developers (we once all worked about 4 hours per day each), notable bug tracking and feature requests activity, and a dedicated userbase. On 18th January 2004, we were the 55th most active project among all SourceForge.net projects, reaching more than 26 downloads per day for release 0.32 during the first 20 days.
One of the basic ideas that were unique about Node was that, although the basic application was written in Visual Basic, a lot of actual code was written in XML and HTML/CSS/Javascript. XML was used for defining windows structures, and HTML, CSS, and Javascript, were used for rendering everything, including IRC messages. Internet Explorer was used as our rendering engine. This yielded to a wide range of possibilities for what was available for rendering, and made features such as sharing thumbnails on IRC channels available to Node IRC users. It also allowed easy HTML and XML-based skin development and deployment. On the other hand, it severely increased the amounts of memory used by the program and made it less robust.
We used NSIS as our installer system.
[edit] Things we learned
One of the things we learned through Node development was that interfaces definitions (i.e. GUI specification; a list of controls of a window along with their attributes) should be done using a Content- or Data-describing language such as HTML or XML, and not through procedural programming. We also learned to localize an application, approaching it using MediaWiki-like ideas, although not as advanced at the time. We discovered that Visual Basic 6 has a lot of bugs, and had to hack the language itself in order to achieve certain abilities without crashing (for example to achieve a "WithEvents" ability on an array of WinSock instances that were not form ActiveXs). We had to define our own TCP/IP protocol for exchanging messages between two Node IRC Clients (for abilities such as "Your friend is typing a message" and avatars), and to study the IRC protocol and its services extensions in order to achieve a user-friendly interface that does not require the user to type IRC commands. We also learned to use source version control through CVS, transfer binary data over the Internet securely and other nifty things.
In general, it was lots of fun.
Version 0.35 is still available for downloading, although it's probably useless due to the large amount of bugs:
- Download (release 0.35)


