What an ambitious project you've undertaken - I will do my best to
suggest products for each of these categories that best fit your
requirements based on my own experience (rather than attempt to
compare the endless number of products out there). I will also rate
all your decision crtiteria on a scale of 1 to 10 for each selection.
Let's get started:
1. web gateway for an IMAP server
My choice here would be Perdition - a brief description is as follows:
"Perdition is a fully featured POP3 and IMAP4 proxy server. It is able
to handle both SSL and non-SSL connections and redirect users to a
real-server based on a database lookup. Perdition supports modular
based database access. ODBC, MySQL, PostgreSQL, GDBM, POSIX Regular
Expression and NIS modules ship with the distribution. The API for
modules is open allowing abitary modules to be written to allow access
to any data store.
Perdition has many uses. Including, creating large mail systems where
an end-user's mailbox may be stored on one of several hosts,
integrating different mail systems together, migrating between
different email infrastructures, and bridging plain-text, SSL and TLS
services. It can also be used as part of a firewall."
IMAP Supported: 4rev1
LDAP Support: Yes
1. Stability - 9
2. Ease of use - 8
3. Coolness - not applicable (not visible to users)
2. photo album AND
3. discussion board AND
4. chat system AND
OK I know you may not have expected to get a free web application that
is capable of supporting four of your siz requirements, but this is
really one 'killer app' and I was extremely happy to have come across
it a couple months ago when I was getting started on a project similar
to yours. Here are the details:
ARIADNE - Web Application Server and Content Management System
"Ariadne is a Web Application Server and Content Management System.
written entirely in PHP. It has a rich user interface which includes
wizards, pulldown menus, and a WYSIWYG HTML editor (MSIE 4+ only).
Ariadne is available for free under the Gnu General Public License. "
What is Araidne?
"Ariadne is an Application Platform for the Web, built entirely on
Open Source technology.
What this means is that Ariadne is a Content Management System, using
a WYSIWYG HTML editor, it's also a Group Calendar, a Photo Album, an
Addressbook, a Weblog and anything else you want it to be.
Ariadne was built with PHP, the most popular web programming language,
Apache, the most popular web server, and MySQL, the most popular
database engine for web applications. PostgrSQL is also supported. All
these are Free Software, as is Ariadne.
Because Ariadne is completely free, you can download it, use it, even
change it to your own needs or build new applications on top of it.
Ariadne gives you all the tools you need to easily build a new
website, an intranet or even an e-commerce system. You can build and
manage all this simply with your webbrowser."
What does Ariadne do?
"When you create a website with Ariadne, it stores all your content,
templates, files, etc. in a structured object store built on top of a
database system, e.g. MySQL. This object store looks a lot like a
normal file system, like your operating system uses. You can create
directories and files and navigate through them with the Ariadne
explorer just like a normal filesystem. But this filesystem can do a
Ariadne allows you to seperate the content, layout and logic of your
website or internet application. You can assign different people to
manage these parts. Ariadne will combine all these parts dynamically
when someone visits a webpage.
The Store contains all the information for the website. This
information is combined with the class descriptions to create Objects.
These objects contain not only the information, but also contain
operations (methods) that can work on this information and on the
Store. Ariadne then applies the user defined templates on these
objects to generate a webpage.
Objects stored in the the Ariadne Store are exactly that, Objects. So
you can have all the advantages of Object Oriented Programming when
building your website or application. Including inheritance and
polymorphy on everything you put in the Store. Templates defined for a
specific Class of objects will be inherited in sub-classes or can be
overridden with new templates. Templates also automaticcaly extend
down the 'filesystem' tree.
Templates can be defined by users through the web, via the management
interface of Ariadne. Templates can be any kind of text type: html,
xml, rtf, etc. Information and special operations on the Ariadne store
can be used in a template, via a scripting language 'PINP', which
consists of a subset of PHP functions. Besides that each class also
defines extra functions, which can be used in templates assigned to
objects of that class.
All this allows you to create a web application or website with a
minimum of programming while keeping the content and layout seperate."
Now, I know from this description that this seems like a
"cookie-cutter" development tool. While I agree that users who are not
proficient programmers can design very nice content management systems
with this tool, it is also a very openly designed tool. As a result,
programmer types can go behind the scenes and add features beyond
those that are included.
You can download the Unix version of Ariadne 2.2 here:
There is also an installation Guide for easy configuration:
Note: Ariadne does required that the following be installed prior to
Apache Web Server: http://httpd.apache.org/
Download : http://httpd.apache.org/download.cgi
PHP4 : http://www.php.net/
MySQL : http://www.mysql.com/
1. Stability - 10
2. Ease of use - 10
3. Coolness - 10
Although this requirement is somewhat redundant considering that the
MySQL database is required for Ariadne, I just thought I would
recommend MySQL as a web database regardless of whether or not it was
required by Ariadne. Here is a description of the product:
"The MySQL database server is the world's most popular open source
database. Its architecture makes it extremely fast and easy to
customize. Extensive reuse of code within the software and a
minimalistic approach to producing functionally-rich features has
resulted in a database management system unmatched in speed,
compactness, stability and ease of deployment. The unique separation
of the core server from the storage engine makes it possible to run
with strict transaction control or with ultra-fast transactionless
disk access, whichever is most appropriate for the situation. The
MySQL database server is available without a license fee under the GNU
General Public License (GPL)."
"There are [two free] versions of the database server available:
MySQL Standard includes the standard MySQL storage engines and the
InnoDB storage engine. InnoDB is a transaction-safe, ACID-compliant
storage engine with commit, rollback, crash recovery and row-level
locking capabilities. This version is for users who want the
high-performance MySQL database with full transaction support. MySQL
Standard is licensed under the GPL. MySQL Pro is the
commercially-licensed version of the server with the same feature-set.
MySQL Max is for the user who wants early access to new features. This
version includes the standard MySQL storage engines, the InnoDB
storage engine, and other extras like the Berkeley database (BDB)
storage engine, and support for splitting tables across multiple files
to avoid operating system file size limitations. In future releases,
MySQL Max will include more cutting-edge features."
Here is a list and description of MySQL features:
ANSI SQL syntax support
The MySQL database server supports a broad subset of the ANSI SQL 99
syntax, along with extra extensions such as the REPLACE statement and
the LIMIT clause for SELECT and DELETE. Alternative syntaxes from
other database systems are also supported, to make porting
applications easier. Our coverage of the complete ANSI SQL 99 syntax
is expanding, with version 4.0 introducing support for the UNION
We provide optimised binaries for a wide range of platforms, including
Linux, Microsoft Windows, FreeBSD, Sun Solaris, IBM's AIX, Mac OS X,
HP-UX, AIX, QNX, Novell NetWare, SCO OpenUnix, SGI Irix, and Dec OSF.
You can connect to a MySQL database server from all of the major
platforms, using nearly any programming language, with our standard
threadsafe client library or one of the products in our Connector
family of database drivers.
Independent storage engines
MySQL database server's unique independent storage engines let you
choose the type of database storage that is most appropriate for your
particular needs. If you need row-level locking and transaction
support, you can use the InnoDB storage engine. If your application
doesn't require transactions, you can use the MyISAM storage engine
for maximum performance.
Using the InnoDB or Berkeley DB (BDB) storage engines, the MySQL
database server supports transactions. The InnoDB storage engine also
supports foreign key constraints.
Flexible security system, including SSL support
The MySQL database server has an advanced permissions and security
system, including support for SSL transport-layer encryption. As of
version 4.0, the security system also allows you to limit server
resources on a per-user basis.
Version 4.0 of the server includes a new query cache, which can
significantly increase the performance of commonly-issued queries,
without requiring any special programming. Performance can be
increased by over 200% in typical usage.
Using database replication, you can have many "slave" servers running
off a single "master" server for robustness and speed.
Full-text indexing and searching
Full-text indexes allow you to search fields containing arbitrary text
for specific words and phrases, including relevance rankings. With
version 4.0, we've expanded the fulltext search to include exact
phrase matching and Boolean search operators, which allows for even
more fine-grained control over your search results.
Embedded database library
Using the embedded database library (libmysqld), you can include the
full power of the MySQL database server into applications and
electronics devices, without your end-user having any awareness of the
underlying database. The embedded MySQL database is ideal for use
behind the scenes in Internet appliances, public kiosks, turn-key
hardware/software combination units, high performance Internet
servers, self-contained databases distributed on CD-ROM, and more
possibilities just waiting for you to invent them.
Benchmarks and Feature Comparisons
We're always looking to make our software better, and have been
running benchmark software that we've developed alongside
industry-standard benchmarks such as the ANSI SQL Standard Scalable
And Portable (AS3AP) benchmark. You can view and compare the results
on our website, or download the benchmark software and run your own
We've developed a feature comparison tool called crash-me, which you
can download and run against your own database server, or use our
online feature comparison tool to compare the results we've collected
from various databases. The tool identifies gaps in functionality,
limits to functionality, and has been known to take down some servers
with its aggressive tests (thus the name).
We have a top-notch database server, but we're not sitting still. We
have a large team of developers working to implement new features.
Here's a sample:
(Note that versions listed for when each feature will appear is simply
an estimate. We do not publish estimates as to when new versions will
be released, only that we strive to do so as soon as we can without
sacrificing our own high standards for quality. If there's a feature
you'd like to see finished sooner, or a feature not on the list you'd
like us to work on, you should look into our MySQL enhancements and
extensions consulting program.)
Character set handling, with full Unicode support
While earlier versions of the database server can be set up to support
specific characters sets, version 4.1 adds support for multiple
character sets which can be set at the server, database, table, or
field level, as well as improved support for converting between
character sets. New character sets have been added for storing Unicode
data in the UCS2 and UTF8 encodings.
Expanded support for subqueries
Subqueries allow you to use the result of one query as a component of
a larger query. The MySQL server already supports some forms of this
technique, such as INSERT INTO ... SELECT ..., and this support will
be expanded in version 4.1 to include nested SELECT queries, which is
one of the most-requested features from our users.
Stored procedures and triggers
Stored procedures allow you to create functions and subroutines that
run on the server. This makes it possible to grant access to specific
queries without granting carte blanche access to the underlying data,
or validate data in the database before it is stored. Triggers can be
configured to fire when certain conditions are fulfilled.
The MySQL database server will provide hooks for implementing stored
procedures in multiple languages, as well as including support for the
Persistent Stored Modules syntax defined as part of ANSI SQL-99.
Support for stored procedures and triggers will be introduced in
Views allow you to configure alternative views of existing tables
without changing the underlying table structure. They can be used to
grant limited access to tables, or make it easier to construct certain
types of queries. Views are currently scheduled to be supported in
1. Stability - 9
2. Ease of use - 8
3. Coolness - Not applicable (not visible to users)
Based on the recommendations I have made above, you will need to
download the following (free) products in order to implement your
Apache Web Server: http://httpd.apache.org/download.cgi
MySQL Database: http://www.mysql.com/downloads/
Hopefully my recommendations will prove useful to you, but if you have
any questions about the information above please do post a
clarification and I will respond promptly.
Google Answers Researcher