A GPL-licensed POSIX-multithreaded Linux IRC server project
HOSTED BY...
INFORMATION
Jeannot Langlois (jeannot12@linuxmail.org)
Bachelor in Computer Science (1998-2002).
Former student from the mathematics/computer
science department at the Universite
de Sherbrooke, Quebec, Canada.
CONTRIBUTORS
Benoit Leblanc [winter 2001]
Thanh Le Ly
[winter 2001]
Dave Lizotte
[fall 2001]
Also Computer Science students from the Universite
de Sherbrooke.
BACKGROUND INFO
The JBTserver project was started on February 10th of 2001 as a small Networking Class (IFT585) academic project by Jeannot Langlois, Benoit Leblanc and Thanh Le Ly. The project's goals at that time were:
- Deepen theoretical notions
such as networking, protocols and messages by applying them concretely
- Learn and perform BSD
socket programming
- Get started with the
client/server network architecture
- Apply structured programming
notions taught in class
The JBT team split up after the winter 2001 semester, but being strongly interested in network programming, I decided to continue the project on my own to satisfy my personal (career) interests in telecoms and Linux.
During the fall 2001 semester, me and my new partner (at that time for that specific semester) believed that the transformation of the very basic single-threaded server code we had at that time to a more powerful multithreaded architecture would be an excellent project for our Operating Systems II Class (IFT628). Our new goals at that time were:
- Concretely apply notions
of parallelism and synchronization (as seen in class) to obtain a better
understanding of them
- Acquire more practical
experience with the client/server architecture
- Practice our ability
to reason in parallel
- Learn POSIX threads
programming
For my last semester in Computer Science during the summer 2002 semester, I decided to sign for a Computer Science Project (IFT592). After designing and implementing a basic mulithreaded server architecture but still not satisfied with the outcome (still far from a REAL WORLD irc server), I wanted to achieve the following:
- Continue to apply theoretical
notions acquired during my studies in Computer Science
- Get new experience with
more advanced POSIX threads features and telelecoms under Linux
- Acquire experience in
high performance server design
- Learn how to manage
a programming project effectively
PROJECT INFO
The JBTserver project (versions 1.0/1.1) was first started (winter 2001) on:
- Slackware Linux 7.1
- Kernel 2.2.16
- EGCS 1.1.2 compiler
(gcc 2.91.66)
- KDevelop 1.3 development
environment
The project (version 1.2) has also been developped (fall 2001) on:
- Slackware Linux 8.0
- Kernel 2.2.19
- GCC 2.95.3 compiler
- KDevelop 1.4 development
environment
But the development/build machine for version 1.3 is now (summer 2002 up to this day):
- Slackware Linux 8.0
- Kernel 2.4.18
- GCC 2.95.3 compiler
- KDevelop 1.4 development
environment
JBTserver is implemented using the ANSI C language. The choice was obvious, as it is a fast language, one that I have been using in school for a long time, one that has many development tools, one that is portable (widely spread in the Linux community) and allows me to build everything (or so) from scratch so I can learn more.
Althought I am not planning it in the near future, I would also like to put a GNOME/GTK graphic user interface on top of JBTserver once it is functional. I have played with glade a little just for fun and put some screenshots as well, but reality will probably be a lot different to these -- when implementation time will come, of course. JBTserver actually contains little pieces of GNOME/GTK code (which has been generated when the project was created), but it is disabled for now.
Please note that since this project was first
started in courses I've been taking to my university, most of the source
code and comments are in french. This is also true for the current
documentation.
PROJECT MAIN GOALS
I wish someday this project turns as close
as possible to a real irc server.
JBTSERVER is actually 13000 lines long --
and keeps on growing.
Page last updated 2003/01/31