Hi Everyone! My name is Sardar and I am one of the Oxwall Software core developers. In this blog I want to share with you lot’s of interesting things you may encounter learning our software. I'm glad to bring to eveyone’s notice all information I have. I may consider that this info will be valuable for plugin developers and potential soft contributors, i.e. most part of info covers soft technical aspects.Sardar M.
So what is Oxwall? Oxwall is the absolutely free open source high performance plugin based social community software. And without a doubt, Oxwall is one of the most effective and advanced solutions in the social software niche. You should just try to get into the soft and I'm sure you'll fall in love with Oxwall.
For the last several years we can observe a great boom of social sites, and still the trend continues to grow. I barely know anyone who doesn't know giants such as Facebook and Google+; almost everybody who has an internet access nowadays is involved in social networking process.
Social giants offer great features for most part of people; however there is a large amount of them with special requirements such as an intensified privacy for their social group, some specific functionality, custom design, etc. And in order to match their needs and requirements they have to turn to social community softwares like Oxwall. Along with Oxwall, we can see a number of the similar softwares in the market (including CMS and blog softs with special plugins); all of them have various advantages and drawbacks. We did our best to create the soft which would include all the best from the market players and meet requirements of social community builders in the best way.
Oxwall is absolutely custom software developed from the scratch. The first thing that comes to your mind will be - "Why? Why guys have you done such a stupid thing? You spent so much time for reinventing the wheel." Yes, in some way we reinvented the wheel, but it was done only to make the Oxwall better. Of course, today we live in the age of a significant "PHP web frameworks boom"; they deliver the ready platform for turning your ideas into the working project in a short time. Indeed there is a little reason to code the project from the scratch. But you shouldn't miss the disadvantages of ready frameworks - they have too heavy and complicated code, in order to fit specific requirements they need a lot of configuration and customization in most cases, some of them have serious issues with performance, etc.
We had great debates in our team trying to decide if we should have used some framework or should have developed the project from the scratch. It was a hard decision - we decided to develop it from the scratch using the best ideas from the popular frameworks. We took the decision basing on our previous experience in several web frameworks. We used several full featured ones developing on Java (Wicket) and PHP (Kohana) in our previous projects. They make development process really fast and easy: less time for projecting, coding and debugging. You have all the standard web application blocks out of the box, and it's really cool unless you need to break their rules. Sometimes you need to do very specific things in your application and it may invoke a real pain in high leveled frameworks. You have to change your requirements or use some dirty hacks and kludges to complete the task. It was very sad when we spent in vain several days on reading the documentation and support forum topics for sake of implementation of some small things.
If you have used any well-known web framework before, you should feel yourself right at home with Oxwall. Like in any of them we stick the same concepts: keeping the code simple, clean and organized; avoiding the mix of database calls, business logic and templates. In other words we implemented MVC (Model, View, Controller) pattern using the best practices of popular web frameworks and softs. For your guidance there are so many approaches for implementing the MVC framework that sometimes it's not so easy to get into the code from the first sight. Don't worry; in Oxwall we tried to implement it in a simplest way. We sticked to the same approach in all other software aspects. To make it more understandable let me introduce to you the application lifecycle in general:
This is the simplified model, but it reflects the main idea of application lifecycle. Let us see the whole list:
As you can see the whole process is simple enough. In any case, if you did not manage to understand something from above-described, don't worry - this scheme shows the whole process only in general. We'll look into every step from inside and in details later.
So what special about Oxwall? As I told before Oxwall incorporates many cool ideas from many great softs and frameworks. We have been developing it trying to stick to three main concepts:
Concerning MVC in Oxwall - traditionally it includes models, views and controllers. Let's start with controller, which is the main player in the bunch - it processes routed request and responsible for taking user input, communicating with model and providing the data for view rendering. Model is responsible for interacting with database and implementing all the business logic. The model category in Oxwall includes two instances - service which is responsible for business logic and DAO (Data Access Object) which handles all the manipulations with database. The third player is a view, and it is represented by native HTML template with Smarty logic. In Oxwall the views receive only processed and ready for markup data, and they can contain only presentation logic.
Managers in Oxwall are represented by global objects to provide main functionality for plugin developers. There is a special static class for getting access to all managers - OW. Let's see several examples of managers usage.
// adding css code to the page
// generating URL
OW::getRouter()->urlFor('BLOGS_CTRL_Base', 'index', array('listType' => 'latest'));
// getting translated language value
// getting root directory for blogs plugin
As you can see managers usage is very simple and convenient. After having learned the basics of plugin structure, managers usage and MVC model you will be able to create your own plugins for Oxwall.
Oxwall is a result of hardworking and thorough development process of our team, lasting for more than 2 years. All the years of experience and customer feedback we got from the previous projects, we employed here and we managed to create a really efficient PHP 5 based software for building social projects.
Nowdays some of technics we used are criticized in many projects. For example we have a lot of global objects (singletons) in the application; all managers, DAO, service objects are built as singletons. Another hot issue for all PHP softs and frameworks is template engine. Today more and more projects prefer using native template systems (based on PHP). They claiming that native template are the fastest way to generate markup and in that that way you will have more opportunities in presentation logic using PHP. But not everybody plays benchmarks all day long and doesn't care at all if it's convenient for designers and template integrators. I've heard many times that they should at least know the basics of PHP, but it's not a right way - they want to have in templates more HTML and less of any other logic. As for me Smarty is much better than native PHP templates: we used Smarty for all our projects and it always performed template compiling in the best way.
For sure I can mention more disputable issues in Oxwall, but I want to assure you that we came to all the decisions during very hot debates and discussions. As I was telling you before we applied all our skills and experience to deliver the maximum value in our soft.
As you can see Oxwall is very young at the moment! It has unclosed bugs, still there is a lack of features and themes, poor support and you may have noticed the absolute lack of tech documentation; but I can assure you that with every new release it's getting better and better! This year we are going to figure out most part of these issues and I'm sure Oxwall will bring outstanding results for thousands of people all over the world!
Next post will be very soon, I'm going to tell you about Oxwall file structure and autoloading. Stay tuned!