Successfully reported this slideshow.

Mia Cms Presentation


Published on

MiaCMS Presentation in OSSFestival 2008 Thailand.

follow me :

Published in: Technology
  • Be the first to comment

Mia Cms Presentation

  1. 1. MiaCMS Praised Past, Productive Present, Promising Future Prepared By: Chad Auld & Ozgur Cem Sen
  2. 2. Past: The MiaCMS Story <ul><li>MiaCMS is a fork of the Mambo CMS. Why a fork? We felt that the policies, processes, and priorities of the official Mambo Foundation were having a negative impact on the code and the community. Innovation, creativity, and team spirit have all but been eliminated. Thus the fork. Much of the same crew that built you Mambo 4.5.3+ through 4.6.3 are here now continuing development on the same award winning software base that everyone has come to know and love. Let us make clear we never gave up on the product or the community, but rather just the Foundation which controlled it. </li></ul><ul><li>The MiaCMS project was initiated by four individuals with profound knowledge of the Mambo CMS system. The founding team includes Al Warren, Chad Auld, Ozgur Cem Sen, and Richard Ong. Together we have held the following roles within Mambo over the years; project leader, board member, steering committee member, core team leader, quality team leader, documentation team leader, and server administration. </li></ul><ul><li>Those who know the project well will recognize those listed as what was the majority of the current core Mambo development team. Who is left to carry on Mambo development? The answer is not many. We plan to continue down the revolutionary path we laid out for Mambo before ultimately cut our ties to the Mambo Foundation. Just that we will be doing it as MiaCMS from this point forward. So again... this is a fork, we do give credit to Mambo for past work done, and we do aim to make MiaCMS even better (we think it already is) ! </li></ul>
  3. 3. Productive Present <ul><li>RESTful API </li></ul><ul><li>The Yahoo! User Interface (YUI) Library </li></ul><ul><li>New Frontend & Backend Templates </li></ul><ul><li>New Sitemap Component </li></ul><ul><li>MOStlyCE & Byte WYSIWYG Editors </li></ul><ul><li>Cache Fixes & Enhancements </li></ul><ul><li>Enhanced Statistics & Poll Result Charting </li></ul><ul><li>Enhanced Commenting & Akismet (Spam Blocker) </li></ul>
  4. 4. MOStlyREST: Our RESTful API <ul><li>What Are RESTful Web Services? </li></ul><ul><li>Representational State Transfer (REST) is a software application architecture modeled after the way data is represented, accessed, and modified on the web. In the REST architecture, data and functionality are considered resources, and these resources are accessed using Uniform Resource Identifiers (URIs), typically links on the web. The resources are acted upon by using a set of simple, well-defined operations. </li></ul><ul><li>The REST architecture is fundamentally a client-server architecture, and is designed to use a stateless communication protocol, typically HTTP. In the REST architecture, clients and servers exchange representations of resources using a standardized interface and protocol. These principles encourages REST applications to be simple, lightweight, and have high performance. </li></ul>Reference:
  5. 5. REST: Why We Use It? <ul><li>With the addition of the MOStlyREST, MiaCMS will allow for advanced external interaction. Meaning that interaction with the site and its content no longer has to occur directly through normal browsing methods. For the first time you can start to consume the CMS's internals as external services via the data type of your choosing (i.e.) JSON, XML, or Serialized PHP. </li></ul><ul><li>Mambo, the CMS Mia was original forked from, has been a popular platform for building 3rd party extensions for quite some time now. The extension/plugin system has served well for building applications that fit natively into the CMS and we have seen many powerful extensions developed over the years. We feel one major gap Mambo has always had is the lack of a viable method of interacting with the system externally/programmatically. </li></ul><ul><li>The MOStlyREST API is modeled after many other successful REST implementations. REST is certainly not a waste of time as many popular sites are now offering REST based services (ex) Flickr, Yahoo! Search, Yahoo! Maps, Google Maps, Amazon, Digg, Upcoming, etc. </li></ul><ul><li>It is worth mentioning that the MiaCMS REST API also works with Mambo and Joomla!. </li></ul>
  6. 6. MOStlyREST: What We’ve Built <ul><li>com_rest Component : This component implements a base REST component for other native core components and/or 3rd party custom components to build on top of. This component handles common tasks such as user API registration, API key regeneration, API key request validation, enabling/disabling of the REST interface, data encoding, setting of proper HTML header status codes and content types, error handling, logging of API requests, plus more. (Note: At this point this REST implementation only allows for read access, but one could extend for write access as well if they were to implement security measures like OAuth for example). </li></ul><ul><li>com_rest_content Component : This is focused on producing content which can be accessed programmatically. It implements the actual data retrieval services it intends to offer like the most popular content items, specific content items, searching of content, listing of sections and related categories, etc. Outside of being a great standalone REST component com_rest_content serves as a great example component to learn from while trying to build your own RESTified components. </li></ul><ul><li>com_rest_stats Component : This implements a set of standard REST parameters for interacting with Mia's statistical data. This provides valuable information to REST clients like the popular site search strings, number of hits per content item, hits by browser type, by operating system, by host, etc. It also provides a replica of mod_whosonline which can be used to see how may guests and registers users are current browsing your site. </li></ul><ul><li>Brilaps, LLC has also built a few sample external applications, SMRC and Bridget , that make use of com_rest and com_rest_content to show what's possible. They also have one production ready application, called iMia , which utilizes MOStlyREST and focuses on bringing MiaCMS to the iPhone. </li></ul>
  7. 7. Yahoo! User Interface (YUI) <ul><li>MiaCMS has selected YUI as our primary JavaScript framework of choice. </li></ul><ul><li>We have replaced many of the outdated external libraries with YUI components (ex) Tabs, Tooltips, Menus, WYSIWYG editor, etc. </li></ul><ul><li>Why? YUI brings us a time tested, scalable, cross-browser, secure, and extremely flexible JavaScript framework to build the CMS around. </li></ul><ul><li>Are we forcing YUI on developers? The simple answer is no. The core makes use of it and we expose it to developers. We recommend it, but it is not required. All core code is properly namespaced and thus you can mix in other libraries as needed. </li></ul><ul><li>The YUI files can be served locally or from Yahoo's free YUI hosting service. Yahoo! hosting is optimized for fast response times, good cache hit rates, and the use of gzip compression during HTTP transport. </li></ul>
  8. 8. New Frontend Template <ul><li>We have a new frontend template named “Borders2”. This template takes advantage of the YUI CSS Grid System and should serve as a great example for 3 rd party developers. </li></ul>YUI CSS Grids -
  9. 9. New Backend Template <ul><li>We have a new administrator template that is much cleaner, faster, and more standards compliant. It favors YUI components over older external libraries. </li></ul>
  10. 10. Sitemap Component <ul><li>This new component outputs a basic list of all the published sections, categories, content items, and static content items. Each is displayed with a link to the correct location within the site. </li></ul>Frontend View
  11. 11. Sitemap Component <ul><li>Administrator View </li></ul><ul><li>The sitemap extensions also allows for the generation of a sitemap XML file using the standard Sitemap Protocol . To quote Google &quot;The Sitemap Protocol allows you to inform search engines about URLs on your websites that are available for crawling”. </li></ul><ul><li>In addition to creating a static sitemap file for you the extension can be configured to serve up the sitemap dynamically via XML. You can use this dynamic link to verify search engines always have the latest information about the site. Set once and never touch it again! </li></ul>
  12. 12. MOStlyCE <ul><li>MOStlyCE is the default “What You See Is What You Get” editor. It is based on the TinyMCE project and we do our best to keep it updated with their latest releases. </li></ul><ul><li>It is simple to use, contains lots of helpful plugins including a file/image manager, and does pretty clean markup generation. Not perfect, but it is WYSIWYG folks. </li></ul><ul><li>Mambo users will remember this as the default editor of Mambo. MOStlyCE has dropped support for Mambo and we are focusing its development strictly on MiaCMS. Several MiaCMS specific releases have already been done. </li></ul>
  13. 13. Byte <ul><li>MiaCMS also ships with a secondary WYSIWYG editor named “Byte”. This is an implementation of the YUI Rich Text Editor aimed specifically at MiaCMS. </li></ul><ul><li>It is lighter that MOStlyCE, easier for us to maintain, and may ultimately become the default editor. It currently lacks an image/file manager, but we do have that on the roadmap. </li></ul>
  14. 14. Cache Fixes & Enhancements <ul><li>We have upgraded the outdated Cache Lite library and fixed numerous issues related to caching. The goal was to make sure that your sites could safely cache as much data as possible in order to reduce the load on your servers and to ensure the fastest possible page load time for your visitors. </li></ul><ul><li>With the 4.6.5 release, we also introduced caching of Newsfeed Lists, the Sitemap, and Weblinks further reducing calls to the database. </li></ul><ul><li>We are confident larger sites will notice a significant increase in performance and speed. We will do new benchmarks, but probably not until after we get to version 5.0+. </li></ul>
  15. 15. Enhanced Statistics Charting <ul><li>We have introducing new charting functionality. At this time the new charts can be utilized in the statistics and polls components. </li></ul><ul><li>To chart the data MiaCMS has selected Open Flash Chart which is licensed under the LGPL license. Open Flash Chart is powerful, flexible, and the charts look great! The online support and documentation is quite good too. </li></ul><ul><li>The PHP class is included in MiaCMS now so utilizing it within your own 3rd party components should be fairly simple. The charts do require Flash and therefore are optional because of this factor. </li></ul>
  16. 16. Enhanced Poll Charting <ul><li>In addition to the statistics charts MiaCMS can now utilize Open Flash Charts to display poll results as well. </li></ul><ul><li>In the past HTML tables have been used to construct the poll results chart. This adds a good bit of bloat an unnecessary HTML to the site. The old format is still supported for those who want it, but we'd suggest utilizing the new format. </li></ul><ul><li>Another bonus is that the revised polls administrator interface now allows for a great deal of customization. Each poll chart can now be customized with a unique look and feel. </li></ul><ul><li>Users can pick from 5 different bar types, set custom sizes & fonts, and pick custom bar chart colors. In the past all poll results had the same basic HTML table display. The bar color selection is done via the YUI Colorpicker. A sample chart is available to help users preview their changes in real-time. </li></ul>Lean more here -
  17. 17. Commenting & Akismet <ul><li>The core comment component is not meant to cover every case. It is meant to be a basic component and one that can be expanded upon by 3 rd party developers. </li></ul><ul><li>The basic comment component has been in place for some time now and has served the CMS well. However, it did fail to capture some very basic pieces of information from would be commenters. So we’ve made some minor, but very useful changes which allow visitors to leave their name, a comment, and a link back to their site. </li></ul><ul><li>We’ve also added support for Akismet. Akismet is a powerful spam filter used by many sites around the world. The main goal with our implementation is simply to improve Mia's ability to help collect useful comments without all that lovely spam. This an optional setting within the CMS. Users are not required to utilize Akismet. </li></ul><ul><li>Go forth and enjoy a less spammy experience! </li></ul>
  18. 18. Promising Future <ul><li>Version 4.8 (beta due out within the next few days) </li></ul><ul><li>OpenID </li></ul><ul><li>Content Versioning </li></ul><ul><li>New JavaScript Architecture </li></ul>More OpenID info @
  19. 19. OpenID <ul><li>With version 4.8 we have added OpenID support. If enabled MiaCMS will allow users to login with an existing OpenID account. </li></ul><ul><li>Versions 1 & 2 of OpenID will be supported. </li></ul><ul><li>Learn more about OpenID at . </li></ul>
  20. 20. Content Versioning <ul><li>As of version 4.8 users can enable content versioning. Users can control how many revisions are kept. A new revision is created when the apply or save buttons are clicked. </li></ul><ul><li>Users can review any saved revision. It is simple to review the raw html, the rendered html, and/or the actual difference between the current content and the selected revision. </li></ul><ul><li>Saved revisions are easily restored with the single click. </li></ul>
  21. 21. New JavaScript Architecture <ul><li>The team has spent the last year researching the full spectrum of object oriented capabilities JavaScript has to offer. We have reviewed numerous JavaScript frameworks, patterns, books, etc. This process has lead to the rest of what we will be discussing… </li></ul><ul><li>We’ve drastically reduced dependency on external JavaScript libraries. The core no longer needs JSCookMenu, WebFX Tabs, overLIB, or wz_tooltip. </li></ul><ul><li>We have rewritten the code for each with YUI. The libraries are still shipped with the core for backwards compatibility, but will be removed in v5.0+. </li></ul>
  22. 22. New JavaScript Architecture – Page 2 <ul><li>Most of our JavaScript changes account for backwards compatibility and therefore should work without any or at least with minimal 3 rd party changes. </li></ul><ul><li>Every frontend & backend component has had its JavaScript either completely rewritten and/or at least seriously reworked. </li></ul><ul><li>All core JavaScript is now properly namespaced to avoid collisions with 3rd party extensions. You’ll find most of the base functions under the new YAHOO.miacms.base namespace. Custom component JavaScript can be found under the YAHOO.component.componentname namespace. </li></ul>Reference:
  23. 23. New JavaScript Architecture – Page 3 <ul><li>The core JavaScript makes use of event delegation to drastically reduce the number of event handlers required for various tasks throughout the system. </li></ul><ul><li>Vastly reduced inline scripting (i.e.) onclick, onmouseover, etc. Plus minimal usage and/or complete elimination of outdated techniques such as “javascript: something()”, void(0), href=“#”, etc. </li></ul><ul><li>Modernized event handling, element selection, object detection, etc. Plus code reduction via greater reuse of base code. </li></ul><ul><li>Minimized usage of eval(). As noted by Douglas Crockford, father of JSON, eval is evil – “the eval function provides access to the JavaScript compiler. This is sometimes necessary, but in most cases it indicates the presence of extremely bad coding”. </li></ul>Event delegation:
  24. 24. JavaScript Architecture Summary <ul><li>If none of that made sense then just understand this… the Mambo CMS codebase from which MiaCMS was born is 7+ years old. </li></ul><ul><li>It’s JavaScript layer has aged greatly and it has not kept up. </li></ul><ul><li>Cross browser support is becoming an issue. </li></ul><ul><li>Security, performance, and overall system usage are being impacted. </li></ul>
  25. 25. Promising Future <ul><li>Improved Password Security </li></ul><ul><li>Human Friendly URLs Implementation </li></ul><ul><li>Role Based Access Control (RBAC) </li></ul><ul><li>Menu System Improvements </li></ul><ul><li>Removal of Itemid </li></ul><ul><li>Dublin Core Metadata </li></ul><ul><li>Additional Editor Options (i.e.) XStandard and WYSIWYW </li></ul><ul><li>N-Level Content Organization (remove the two tier section/category limitation) </li></ul><ul><li>Writeable REST Interface </li></ul><ul><li>Multi-Site Management </li></ul><ul><li>Improved File & Image Management </li></ul><ul><li>OAuth </li></ul><ul><li>LDAP </li></ul>Planned for version 5.0 and beyond…
  26. 26. The End <ul><li>Thank you to everyone that has supported the fork thus far. We have worked hard on the next release and can’t wait to share to with you. </li></ul><ul><li>MiaCMS is a finalist in the “Most Promising Open Source CMS” category in the annual Packt Publishing Open Source CMS competition. </li></ul><ul><li> </li></ul>