Why use Rootin Tootin?
- It is written in D, so it is fast and uses little memory.
- It uses the MVC design paradigm made popular by Rails.
- It uses RESTful URLs like Rails and Django.
- It statically links everything. So it will 'Just Work' even on generic virtual hosts.
- It precompiles templates, so it does not have to parse them at runtime.
- It has an ORM that enforces referential integrity by default. So no more dangling foreign key errors.
- It will soon be nonblocking like node.js.
- It uses JSON configuration files.
How do I create a project?
rootintootin name:journal port:3000 db_user:root db_password:letmein
cd journal
./gen recreate development database
./gen create noun singular:note plural:notes
./gen create scaffold note title:unique_string content:text \
validates presence_of:title,content
./gen migrate development
./run

Linux

FreeBSD

Windows

Trunk
Download and install on Linux:
wget http://launchpad.net/rester/trunk/0.8/+download/rootintootin-0.8.0.tar.gz
tar -zxvf rootintootin-0.8.0.tar.gz
cd rootintootin-0.8.0
sudo ./make install
wget http://launchpad.net/rester/trunk/0.7/+download/rootintootin-0.7.0.tar.gz
tar -zxvf rootintootin-0.7.0.tar.gz
cd rootintootin-0.7.0
sudo make install_python2.6
Apparently you can install LDC on FreeBSD from
here.
But I have yet to get it to work. Please email
mattjones@rootin.toot.in
if you can help get this to work.
I have yet to get LDC and tango installed on Windows.
The only information I have found on it is
here.
Please email
mattjones@rootin.toot.in
if you can help get this to work.
Download and install from source:
bzr branch lp:rester rootintootin
cd rootintootin
sudo ./make dev
Release 0.8 - June 10, 2011
This release is about making it easier to install on different Linux
distros. It should now actually work on x86 64bit systems.
Release 0.7 - January 1, 2011
This release is about making the framework complete enough to be usable. Major
features include an API reference, unit tests, and bug fixes.
Release 0.6 - September 6, 2010
This release is about making deployment simpler, and
separating production and development configurations.
Release 0.5 - June 28, 2010
This release was aimed at making app rebuilds automatic, and
the framework easier to install. We are having new problems
with the Ubuntu PPA. So just install using the package for
now.
Update - May 20, 2010
We are having issues with the PPA on Ubuntu Lucid 10.04. Please install from Trunk for now.
Release 0.4 - March 02, 2010
Release 0.3 - January 19, 2010
Release 0.2 - December 31, 2009
- Moved from GPLv2 to GPLv3
- Added a blacklist of words to be disallowed by the gen script.
- Moved to a Python Tornado and D based server for speed and concurrency.
- Updated the server so it automatically rebuilds when files change.
- Replaced the ./build and ./run scripts with just ./run.
- Model.find_by_id returns null on nothing found, while Model.find throws.
- Added proper copyright/license headers to each file.
- Changed the framework to use string as an alias for char[].
- Changed most imports to be private.
- Fixed broken sessions.
- Added flash notice support.
- Made the download of arbitrary files work.
- Added a basic mime type map, for downloaded files.
- Moved scaffolding js and css to their own files.
- Added proper page titles.
- Added a default page that lists controllers.
- Added an unknown action page.
- Fixed bug #501459: 'Dangling slashes in urls break routes'.
- Fixed bug #500882: 'mysql connection error on new project'.
Update - December 18, 2009
The Ubuntu PPA
issues have been resolved. Rootin Tootin should now work on i386, amd64, and lpia
CPUs. Packages for Fedora and OpenSUSE are still being investigated.
Update - December 16, 2009
The first release (0.1) is out. If you are on ubuntu,
you may have issues with the LDC PPA. Since it is a daily
PPA, it tends to break every once in a while. I am working
on fixing it by moving one of the working packages into our
PPA.
Development happens over at launchpad:
If you have any problems, you can contact Matt Jones at:
mattjones@rootin.toot.in
Let's create a simple journal application. Make sure you have
installed the framework,
and are running a Linux based OS.
-
Create a new Rootin Tootin project. It will be named "journal",
run on port 3000, and use the mysql user "root" with the password
"letmein".
rootintootin name:journal port:3000 db_user:root db_password:letmein
-
The rootintootin command created a directory named "journal" that
contains the complete app. Move into this folder.
-
To create the mysql database, we will use the gen script.
As with any scripts in Rootin Tootin, we will run them like
"./gen". The "./" simply means to run the script in the local
directory.
./gen recreate development database
-
We will want to create a model and controller named
"note". In order for the framework to know about the
noun "note", we will tell it how to pluralize and
singularize this noun. Singularize means one instance
and pluralize means many instances.
./gen create noun singular:note plural:notes
-
Now we will create a skeleton website or "scaffolding"
for our journal. We will need a database model named
notes with string fields title and content. This will
also create our models, views, controllers, and migrations.
./gen create scaffold note title:string content:string
-
Now we will run the migration that will create the
tables that the models are mapped to.
./gen migrate development
-
Now we will run the project. The run command will start the
server on port 3000. The server will look at the project files
and compile them automatically when they change.
-
Now visit the website in a web browser.
http://localhost:3000/notes
The next release will be 0.9.
See the roadmap
for the release date and details.
Below are details on the current 0.8 release.
Status:
Rootin Tootin is alpha software, and not ready for production use.
It is missing many key features, and has yet to be significantly
tested for security, performance, and reliability. The API is
extremely unstable. It is highly recommended that Rootin Tootin
is not used on anything, until the 1.0 release. No known
websites actually use Rootin Tootin.
Caveats:
-
The only database that is supported is Mysql. In later releases,
we should support Postgres and others.
-
The documentation is non existent.
-
There is no email support yet.
-
There is no internationalization support yet.
-
File uploading works, but the server puts the entire file in
memory. This is used to parse the http multipart encoding that
browsers uses when uploading.
License:
Rootin Tootin is licensed under
the GNU General Public License version 3 (aka GPLV3).
Because it is using the LDC compiler,
libraries can only be statically linked. This means that software
compiled with Rootin Tootin, will be considered a derivative work
of Rootin Tootin, and therefore licensed under the GPLV3.
You can avoid having to use GPLV3 by three means:
By distributing your software in a source code form, without
being statically linked to Rootin Tootin; By only
distributing the unlinked object files; Or by not distributing
the binary, and having it run as a server.
Patches and Copyright Assignment:
The Rootin Tootin project does not require copyright assignment.
This means that you own any contributions you make.
All patches are required to be submitted as
Bazaar branches.
This way, your contributions are documented in the
Bazaar repository.
System Requirements
- Mysql Server
- Mysql Client
- Mysql Client Library
- Python 2.6 or 2.7
- Python Mysql
- Python Pexpect
- Python Mako
- GCC
- Make
- LDC (LLVM D Compiler)
- Tango Library for D
- PCRE (perl compatible regular expressions)
- Lib FastCGI
- Inotify Tools
Operating System Support:
Rootin Tootin uses the LDC compiler (LLVM D Compiler), and Tango
library. The only Operating Systems with packages for LDC and
Tango are Debian, Ubuntu, and Fedora. In the future I hope to see LDC and
Tango on major Linux, BSD, and even Windows Operating Systems.