(Note: Real website coming soon. ;-)

Mephle
======

Mephle is a network-transparent, interface-independent, persistant
object platform written in Ruby.  It is designed to allow the focus of
development to be on desired functionality rather than the numerous
details such as communications protocols, file formats, and user
interface coding that usually take a large portion of development
time.  It is based on design principles put forth for the Unity
project (http://unity-project.sf.net).

Most notably, the focus of Mephle is on writing classes that provide
the desired functionality.  These classes are then instantiated and
manipulated directly by clients---whether these clients are scripts or
interactive users.  This is the main princple of the Unity project,
and Mephle is a robust approximation of this system.

Another principle is rich metadata.  Mephle uses the MetaTags module
to gather information about classes and methods.  As a result, user
interfaces can, for the most part, be constructed automatically:
views, forms for creating objects, and calling their methods.

All of this is designed to simplify the developer's work.  Since the
developer can design a class, implement it, and use it immediately,
without having to develop user interface code, determine file formats,
communications protocols, or other mundane tasks the computer can
do automatically, he or she saves a great deal of time.

Mephle and related information can be found at the following site:

    http://www.mephle.org/


Download
========

Requirements
============

The following are required to build and use Mephle:

    *  Ruby 1.8 final, and its prerequisites, plus any included patches.
       (See extras/ruby-patches/ for any applicable patches.)  Mephle
       does not work with previous versions of ruby due to lack
       of critical features.

    *  strongtyping 2.0.6a+ (ruby module)

    *  metatags 1.0+ (ruby module)

    *  MySQL / mysql-ruby.  This is for persistant object storage.

       - and/or -

    *  SQLite / sqlite.  This is for persistant object storage.
       Note: the sqlite module that is included in extras/ is
       required, rather than the one on the RAA.  I haven't had a
       chance to update the driver based on the new RAA ones.

Usage
=====

Mephle currently provides two forms of use.  One is 'mephled', the
server, which reads mephled.conf and waits for connections, providing
a network-oriented environment.  The other is 'mephle', which may be
used to run a script that defines a subclass of Application, which is
run without the network handling.  It is more suited to standalone
applications.

Currently, mephled-based applications can be accessed either through
client scripts, or via the web, using the CGIHandler code.
Fine-grained access control lists offer an extensible security
mechanism.

For further documentation, please refer to 'doc/README.basics'.

License
=======
#
# Mephle - The distributed object system and development framework for Ruby
# Copyright (C) 2002-2003  Ryan Pavlik
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#

Ryan Pavlik <rpav@mephle.com>