Skip to content


Subversion checkout URL

You can clone with
Download ZIP
tree: 45ed944224
Fetching contributors…

Cannot retrieve contributors at this time

100 lines (68 sloc) 4.302 kB
Ottoman is intended to be an easy to use CouchDB API for Mono/.NET applications. Please
excuse the mess, this is a new project and we are trying to get everything in order. We
will be setting up a project site, forum, and issue tracker. This will be an active open
source project and backed by a company. We have big plans for this library.
Please feel free to contact one of the contributors if you have any questions as we get
everything situated.
== A little disclaimer
Ottoman at it's current state is pre-alpha software and still under heavy development.
Please be aware that important areas such as the public API may see backwards
incompatible changes between versions. We will do our best to keep this from happening
and the decision to make a breaking change will not be taken lightly.
== Repository Organization
We recommend reading the great branching model that Vincent Driessen wrote up. It
will help in understanding our development process when it comes to Git.
== Roadmap
We want to go ahead and share the goals of the project and provide the features that
Ottoman will include. Some of these features are already done, we just haven't pushed them
up yet. Once I get to the first iteration, the development branch will include the features
for the next iteration as they are completed.
Here are the features of Ottoman being developed:
* Automatic serializing/deserialing of your entities. Conventions will be used over
configuration for saving/loading of entities. Of course, you will be able
to override these conventions by supplying your own. For example, the convention
will be to use the property name Id on your entities. You will be able to override
this convention by specifying another name of the property if it differs from the
default convention.
* Using the unit of work pattern and using the document revisions feature of CouchDB.
Ottoman will be able to detect changed entities and batch the changes up into one
request. This will cut down on the chatter between your application and CouchDB.
* Maps RESTful HTTP error codes returned from CouchDB to meaningful exceptions.
* Specify an Id generator to use for your entities. The default convention will be
a Guid generator. We will also include a Hi/Lo generator.
* Seamless integration, no inheriting and overriding of our objects, allowing better
separation of your domain and it's persistence store.
* LINQ support for querying your views/design documents inside of CouchDB. We will
not be supporting temporary views, since they do not perform well. Temporary views
are mainly used for prototyping a design document.
* Ottoman will be Mono 2.8 and .NET 4.0 compatible.
Here's a gist to give you an idea of what the API will look like:
The first iteration will include everything needed to store, retrieve, and delete documents.
The second iteration will include everything needed to query your views/design documents
inside of CouchDB with LINQ.
The third iteration will include everything to store, retrieve, and delete document
attachments. This will also be the first alpha.
Further iterations will include deleting, replicating, and compacting databases. Basically
server and database administration through Ottoman. At which point we will reach a Beta
period until the final 1.0 release.
== References
SineSignal web site
CouchDB web site
== License
Copyright 2010 SineSignal, LLC.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A copy of the License can be found in the LICENSE file or you may
obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
The Ottoman Dev Team
Jump to Line
Something went wrong with that request. Please try again.