LinBot is a clone
of LinkBot, the commercial webpage error checker. It checks for
broken links and other common webpage errors. (I know, I know, HTML
isn't exactly programming, but this is the best place for it)
W3mir is a web mirroring
program for setting up mirror web sites.
Web Preproccessor
Much like the C preproccessor, the Web Preprocessor allows
you to make #include directives, declare #defined constants, make macros,
and more to
make your webpages smaller and easier to read.
PHP is an HTML-embedded scripting language. Much of its syntax is
borrowed from
C, Java and Perl with a couple of unique PHP-specific features thrown in.
The goal of the
language is to allow web developers to write dynamically generated pages
quickly.
Project Coordination Utilities
BugZilla is
Mozilla's bugtracking system. The souce is of course freely available.
Jitterbug "is a web based bug
tracking system. It operates by receiving bug reports via email or a web
form. Authenticated users can then reply to the message, move it between
different categories or add notes to it. JitterBug is used by important
software development projects like The Gimp, Gnome or the Linux Kernel."
-- Jitterbug Homepage
DOC++ is a documentation
system simmaliar to JavaDoc, but for both C++ and Java. It generates documentation
straight from your class files.
PRCS
is supposedly an easier to use version management system than CVS.
CCF is is a collection of
programs which enable remote collaborators to work
together as if in
the same room. It includes a shared virtual desktop which provides for
simultaneous
display of arbitrary X applications, a clearboard tool for annotating
these shared
application's windows, a shared dataspace for file/data sharing, and an
audio conferencing
tool.
This is the CVS Tutorial
CVS is a useful version control system that is included in most Linux distributions.
CVSWeb
is a Web based interface into a CVS tree. You can view log entires, changes
from each revision, and you can hide old files from view.
Aegis is an advanced
version control program that provides the ability to install checks on changes
made to the master source (ie, must compile, or even pass certain runtime tests)
The Source Code to the
Linux Cross Refrence has been
made publicly available, and is now being used in projects like
Mozilla and
Glibc2. It allows you to
put the entire contents of a project on the web, with each include file,
function, and prototype completly cross refrenced and hyperlinked. It's
uber-cool. Download it for use in your group project now! :)
Bonsai is a utility
brought to us by the wonderful Mozilla
Project. It is basically an advanced CVS query/checkout tool for use with
Tinderbox
TinderBox was also
created by Mozilla & co, and allows you to oversee the developments of a CVS
tree. (Look at who, when, where the changes were made, how development
progesses for each platform, etc). Very useful for large projects.
Doxygen is a documentation system for C++ (and C). It generates a HTML
class browser from a set of documented C++ source
files. The documentation is extracted directly from the sources. Doxygen is
compatible
with the system used in the Qt source-code.
General Linux Programming Information
Teach Yourself C++ in 21 days
is the C++ version of the book I learned C on at the ripe old age of 14 :)
(My brother learned C using that book when he was 12)
That says a good deal about the quality of this book. A note tho,
if you're new to programming, the indentation in this online version is HORRIBLE.
Don't follow it :)
For those of you looking to learn a real language, we have several
C pages for you. The best, I think, is
this C tutorial.
However, dozens of other C and C++ tutorials are all indexed
here.
A breif rundown on
Programming POSIX Threads can be found here. The Linuxthreads
interface found in glibc2 is POSIX compliant, so reading this document
is your best bet on learning thread programming
Also available is the Linux Programmers
Guide. Extensive introduction, laid out the way you'll need to use
it, in html now.
Socket programming
is very hard to pick up from man pages and source code alone.
The BSD
socket interface is the Interet standard, so reading these docs is a
good place to start
Beej's
Guide to Network Programming gives you the leg up you need for
socket-based UNIX network programming. There is
no other site as good. This page is fantastic. Totally clear, gets right
to the point, doesn't wiffle waffle with tiddly details you don't need
to be bothered with.
The Perl Info Page. Contains
a tutorial on using perl in the shell and for CGI web stuff.
Need to learn how to do sound programming in Linux? Well the OSS provides
this sound programming
guide to help you along.
Java Programming
JavaBlue is a revolutionary
new program from Monash University that aims to facilitate Java learning
through it's IDE.
TYA is a JIT that can
be inserted into the standard issue JDK (which lacks a JIT compiler for Linux)
merely by setting an environment variable.
Kaffe is a complete
GPL'ed, Sun-code free reimplementation of the JDK. It also includes a JIT
for added performance.
TurboJ is a
Java ByteCode compiler, which means it converts standard Java ByteCode
into native machine code for maximum performance.
The Java to C converter
claims to help avoid the bytecode slowdown of java. Anyhow, it's a
nice educational device to help you learn C and/or Java.
JDK Java is provided by several
different groups who port Sun's JDK to Linux. This is the most prevalant one.
The
Java Tutorial -- straight from Sun themselves. This is the place to
learn it, if you want your programs to be truly platform independant.
Optimizing Java might seem
like somewhat of an oxymoron, but it can be done. This page runs through some
good Java programming practices, and some Java tools, that will make your Java
programs run faster.
Java Foundation Classes are
high level Java classes that extend the Abstract Window Toolkit.
The BISS-AWT is an
alternative Java AWT (Abstract Window Toolkit) providing a uniform Java
Look and feel (as opposed to the standard "OS-based" Java AWT)
X11/Graphics Libraries
fltk is an extremely
lightweight, easy to use, and lightening quick X11 toolkit. It's only flaw is
that it's not much to look at.
Qt is a great X11 library that was used
in the creation of the KDE. Qt is now
completely free in the Open Source sense, so now you can write all the
Qt apps you want, guilt free :)
Gtk-- is
a C++ wrapper for GTK+. It's not quite finished yet, but it's possible
(and easy) to port Qt applications to gtk--. My brother perfers gtk-- to
gtk+, because he claims it's a heck of a lot easier to think object
oriented in C++ than in C. Go figgure :)
GTK+ is a very powerful object oriented
LGPL'ed X
development library. It's meant to compete with Qt, and was first created
for use in the
GIMP. It has since been utilized by
the gnome project (another integrated
X environment, like KDE), and may other X
programs.
Glade is
an GUI based GUI builder that uses the GTK+.
PTC
is an LGPL'ed set of
C++ classes that abstracts the platform specific details of mode setting,
surface handling,
pixel format conversion (assembly language) and display updates. This
means that with
PTC you can write graphics code once and recompile without change on all
supported platforms.
Imlib is the image displaying
library used in Enlightenment. It is chock full of cool features too numerous
to list here.
Tcl/Tk is a scripting language that is
extremely useful in binding programs
together, and for creating graphical interfaces for programs.
We are evenly split on the importance of the
GGI Project
to Linux. It promises to give video programmers a kernel level driver
interface to the video hardware, eliminating the need for risky SUID X-servers and
SVGAlib programs. Some say that it is the future of graphics in the UNIX world. Others
(like myself) realize that the complexity of video drivers leaves them
prone to error, and errors in the kernel are not good for uptime.
JX is a free "C++ application
framework and GUI class library for X Windows."
Mesa is a free
alternative to the OpenGL (SGI's 3D rendering library). It uses the same
API as OpenGL, and performs in the same fashion. What the hell, it's a
clone of the OpenGL. :)
Visual
Tcl is a Tcl/Tk X interface for building X interfaces. Strange world,
ain't it?
The V C++ GUI
development kit provides a framework for building GUI's in X.
Not happy with any of the toolkits listed here?
The GUI
toolkit homepage lists most of these, and much more
The GTK+ Tutorial
provides a step by step, comprehensive guide to programming in GTK+ 1.0
The GTK Refrence is a
HUGE listing of ALL widgets and functions in the GTK.
In order to learn programming in GTK--, your best bet currently is to learn
GTK+, then have a look at this
GTK-- Class refrence
and see how the GTK-- classes and methods compare to the GTK+ widgets and
function calls.
Allegro is a
cross platform game development library (Windows and X11) written in C and assembler.
Crystal Space is
a free LGPL'ed 3D game engine. It supports true
6DOF, colored lights, mipmapping, portals, mirrors, alpha transparency, reflecting surfaces,
3D sprites, scripting, 8-bit and 16-bit display support, and much more.
It currently runs on a score of platforms, from Amiga, to Linux, to Windows.
The Linux Game Development
HOWTO
is a good place to start when writing new games for Linux or for porting existing
games from lower quality operating systems.
DUMB
is a 3d game engine for GNU/Linux (and other OSes) distributed under
the GPL. DUMB uses a gamefile format that is a superset of that of
ID software's Doom engine, and in fact can play
Doom and related games. (careful, the fact that it's GPL'ed means you may
not use it in proprietary binary-only games, nor can you limit the
redistribution of such games)
The Linux Joystick Driver
provides a /dev/js interface into the PC joystick that can be read and used in
games
GAMES is now beginning to take shape as a serious tool for writing games
and other multimedia
applications under graphical environments such as Unix/X and Java.
For game programmers migrating to Linux: the PenguinPlay Project (Formerly GSDK) promises
DirectX-like interface libraries for creating games easily in Linux. And they're
almost there.
The SDL
is designed to make it easy to write games that run on Linux,
Win32 and BeOS using the various native high-performance media interfaces,
(for video, audio, etc) and presenting
a single source-code level API to your application. This is
a fairly low level API, but using this, completely portable applications
can be written with a great deal of flexibility.
Other Linux Libraries
OrbIt is a
Corba 2.2
compliant C library. Corba provides a centralized place (an ORB) for applications
to communicate with and find out data about the network.
InstallFest is a
graphical front end to ./configure that you can include in your programs
to make compiles less intimidating to your users
WIDD is a GUI interface
to creating and managing SQL databases
AVFS is a
userspace C library add-on, which enables all programs to look inside
compressed files (gzip, tar, etc.).
Audio File Library
is an implementation of SGI's Audio File Library, which
provides an elegant API for accessing a variety of audio file formats,
such as AIFF/AIFF-C, WAVE, and NeXT/Sun .snd/.au. This version implements
all of the commonly used calls of SGI's version. Many of the more
esoteric API calls have not yet been implemented.
Intel has released
some high performance FFT, extended precision, and performance monitoring
libraries for Linux.
Zlib is a free
compression library that implements the same algorithm used in gzip and
PKZIP 2.0.
LinuxThreads
is an implementation of the POSIX 1003.1c thread spec for Linux. LinuxThreads
is included in glibc2 by default, but
LibAIO: the
POSIX.1b compliant asynchronous I/O library for Linux, which uses
LinuxThreads, is not.
MySQL is the channel's favorite free SQL
database.
PostgreSQL is a ORDBMS system
based on Berkeley Postgres Database management system. It replaces the
PostQuel query language with SQL.
Willows Software prides itself on
libraries and tools to port Windows applications to UNIX. They also provide
a free Windows 3.1 emulator. (I like Wine better though).
Linux Cross Refrence
is the BEST way to browse kernel source. Everything is completely hyperlinked,
all datatypes, instantation, functions. Real nice to read along side one of
the kernel books (especially since 2.2 is out, and there are as of yet no
books that cover the changes)
For those of you really wishing to get your hands dirty, here's
the Linux Kernel
Hacker's guide. Parts of it are old, but still relevant to at least
v2.0.
The Linux Kernel
is a recent and extremely comprehensive Kernel information source.
It provides more emphasis on explaining concepts than code itself. More
targeted at the advanced user or potential kernel programmer than Joe Newbie.
Xref-Speller is a plugin/extension
for Xemacs that does cross referencing of your code on the fly.
The JDE is an Emacs Lisp extension
thet provides full integrated Java language support from compilers to
debuggers to syntax highlighting and more. Works with standard GNU Emacs,
and the almighty Xemacs
The ultimate free IDE, and probably the ultimate IDE ever is
Xemacs.
Xemacs is an extension on emacs, but unlike standard emacs, it is incredibly
easy to use. Yet, like emacs, it still has everything and the kitchen sink
:)
If Xemacs is too bloated for you, look into
xwpe/wpe - the Borland Turbo
C++ clone. Most distributions install it by default.
The makers of JX have created the Code
crusader - a free C/C++ IDE (Psst, it's a clone of Metrowerks CodeWarrior)
Non-GNU Compilers and Assemblers
NASM is an
assembler that produces straight code for numerous archetectures. It differs from
other assemblers in that it assembles code EXACTLY as you write it, without
optimizations and reordering, providing you with maximum control.
Tired of GCC? Try LCC, a free
ANSI C compiler that can interface with NASM.
EGCS 1.0 was released December 3rd,
and is now stable. EGCS is an ongoing development project that merges various
patches and processor specific optimizations to the Intel GCC compiler.
The Pentium Compiler Group provides
highly optimizing Pentium compilers. s0nic regretably had to switch back
to standard GCC around pgcc-ss-970622, because pgcc was beginning to produce
unpredictible code. s0nic at one time ran fully Pentium optimized kernels,
libs, xv, and even XFree 3.3 and AfterStep with no problems
Debugging and Code checking utils
Ltrace
is simmalair to strace, except it traces library calls, so you can debug
programs you don't have the source for (or for some odd reason don't want
to attach a gdb to)
Ahh, memory leaks, the bane of every experianced programmer.
Plumber will help
you track down those pesky leaks by telling you how much memory was allocated,
how much was freed, which blocks, if any, were not freed, and where.
C and C++ Garbage
Collection is just a click away. I'm not sure what to think of this little
utility... But I tend to be against anything that allows programmers to be lazy
and sloppy. I recommend just learning to free your memory, and tracking
down mem leaks with something like
Plumber.
The Data Display Debugger
Page is the homepage of an excellent commercial quality debugger for
numerous languages. Another little hidden treasure of the site is its "See
Also" section, which lists a whole slough of related debugging material
Parasoft provides
Insure++, a GREAT runtime debugger. Users say it blows Purify away. It's
commercial, but trial versions are available.
Also in the runtime debugger line are
Checker and
Electric Fence, and Libmem
test, which detect memory leaks, writing out of bounds, etc. These
are all free.