Why MongoPress

Introducing MongoPress

Or are we really introducing NoSQL...?

NoSQL is an umbrella term for a loosely defined class of non-relational data stores that break with a long history of relational databases and ACID guarantees. Data stores that fall under this term may not require fixed table schemas, and usually avoid join operations.

ACID Compliance at CORE is Cumbersome!

Don't empty my mind! I've spent my whole life filling it!

MongoDB is the new MySQL

What does this mean...?

It means that things are about to drastically change...

Developers can control the entire process...

( with incredible ease and in native ways )

...the rest is history! :-)

The History of MongoPress:

  • Started as a WordPress Plugin
    -- Initially hoped to filter all SQL requests and direct that to MongoDB
  • Almost Became WordPress Fork
    -- Then we considered forking things to keep the current WP UI
  • Now Stands Alone and Tall
    -- We finally realized we had the opportunity to start something unique

Objects to WP Vs Objects to SQL to MP
Vs Objects to MP

( and so the adventure began )

Why we REALLY like MongoDB (Part 1 of 3):

  • OpenSource & Adaptive
    -- OSX, Linux, Windows, PHP, NodeJS, Ruby
  • Production Proven
    -- used by Foursquare, Craigslist and SourceForge, etc
  • Incredibly Fast
    -- if working-set less than RAM or 16,000 per second per GB

Why we REALLY like MongoDB (Part 2 of 3):

  • Replica-Sets and Sharding
    -- horizontal scaling made easy
  • JSON Data & Schema-less
    -- friendly for developers with less conversion
  • Advanced Queries Handled by JavaScript
    -- not only cool but also incredibly powerful

Why we REALLY like MongoDB (Part 3 of 3):

  • Good Geo-Location Support
    -- polygons and lng / lat
  • GridFS Media
    -- for storing and serving media as bytes
  • SQL Friendly
    -- familiar simplified query and index methods

But what's wrong with WordPress...?

What's wrong with WordPress...?

  • It's built on MySQL
    -- Which does not scale well (out-of-the-box)
  • It's built with MySQL in mind
    -- At core, its based on an antiquated table architecture
  • It's built with PUBLISHING in mind
    -- At core, it's a publishing platform

So what's MongoPress all about...?

MongoPress Features (Part 1 of 3):

  • It's OpenSource
    -- Featuring a generous GPLv3 license and public access to SVN
  • It's Extremely Fast & Instantly Scalable
    -- Out-of-the-box support for Replica-Sets, Sharding and even nginx
  • It's Incredibly Secure & Search-Engine Friendly
    -- SHA(256) salted encryption and segregated user-data
    -- with filterable attribute tags for <a> and <img>

MongoPress Features (Part 2 of 3):

  • Incredibly Flexible & Customisable
    Admin pages, core structure and content can be added to themes
  • Fully Translatable
    WP Language API for methods like __('return') & _e('echo')
  • Scalable Media Storage & Serving
    Uses MongoDB functionality to store & serve media in binary form

MongoPress Features (Part 3 of 3):

  • It's Developer Friendly
    WP Plugin API for methods like add_filter() & add_action()
  • It has Perma-Trails rather than Perma-Links
    Create virtual structures with intelligent querying
  • Geo-Location at Core
    Store lng / lat in custom fields to perform location-based queries

What does MongoPress look like...?

Current Default Theme for MongoPress

Current Default Admin for MongoPress

But how can we build themes and plugins...?

The world's simplest MP theme (index.php):

mp_get_header(); // Must include this!
$object_format = array(
     'type' => 'content',
     'style' => 'article',
)
mp_content($object_format);
mp_get_footer(); // Must include this!

The world's simplest MP theme (single.php):

mp_get_header(); // Must include this!
$object_format = array(
     'type' => false,
     'style' => 'single',
)
mp_content($object_format);
mp_get_footer(); // Must include this!

The world's simplest MP theme (css/style.css):

article{}
article header{}
h3.article-title{}
article section.content{}

Some useful functions for theme-developers:

  • get_template_part()
  • __('return') and _e('echo')
  • add_action() and add_filter()
  • mingo_meantime()
  • mp_content_block()
  • mp_get_media()

what about plugins...?

we've got a growing list of hooks and filters

current version of core also
contains the following mu-plugins:

Currently bundled mu-plugins:

  • contact_form - HTML5 / AJAX Powered
  • rss - Includes geoRSS Support
  • ddos_protection - Experimental Firewall
  • default_header - Uses GridFS Media
  • analytics_footer - Google Only
  • download_counter - Uses GridFS Media

( thanks for letting us empty your mind )

More on MongoPress: