A couple of years ago, the DreamFactory engineering team took our ideas and prototypes for a RESTful services backend integration platform. We started looking for a good base framework to build on, and to determine how much we would need to write on our own. To some degree, we did a little of both, settling with a hybrid based on the Yii 1.1 framework. That served us well for getting the DreamFactory Services Platform off the ground and to its current state.
With DreamFactory 2.0, we wanted to work on some of the architectural issues that would improve performance, flexibility, and other internal areas so DreamFactory could better address our users' requirements. Our goals included:
- Make areas such as authentication more flexible and enterprise ready
- Make it easier to install, configure, and scale
- Make it easier for anyone to add more services and features
That led us to looking at frameworks again. We decided to go with Laravel, and here's why.
As far as frameworks go, the recent rise in popularity of Laravel can only be viewed as explosive. Over the summer of 2014, Laravel, according to Google trends and several online assessments, overtook all other frameworks - all in only about a two year timespan, less than half the time some of the others have even been around. While trends in software are not always where you want to place all your chips, seeing that a lot of Laravel is based on good foundations like Symfony and other popular code repositories that have been widely adopted and well maintained, many believe Laravel is here to stay in the PHP framework scene.
It has been said that open source software lives and dies by the community it garners. One of the things that we think made Laravel so popular so quickly, and will hopefully underpin its longevity, is the amount of effort the early adopters put into establishing a community. With Laravel's own documentation, forums and the ever popular Laracasts, along with quick responses on popular sites like Stack Overflow, help is just a click away. As with any foundation, seeing the myriad of things people have already built to work with it, things that we could re-use in our projects immediately, was very helpful. If you are looking for a new "wheel", check the community, it's probably already out there. For us, the Laravel community has helped immensely in getting our application up and running in short order.
While there is quite a bit of commonality among most modern MVC-based frameworks, with plenty of features that get you 90% of where you want to be, where the rubber really meets the road when building an application of significant size is how easily the framework can be extended or modified when the framework doesn't have exactly what you need or when you want to add something special. This was huge for us. While not always a piece of cake, modifying or adding to Laravel has been much easier than some of the wresting we have experienced in the past with other frameworks. With its foundational usage of Composer and concepts like service providers and containers, adding other repositories to extend or modify the functionality of the framework is accomplished by a few configuration changes.
To accomplish our goals for DreamFactory 2.0, we are breaking out many parts of our application into smaller modules to make it more plug-and-play and easier to install with composer. We have also made adding additional service types and resources much easier. The idea is to only install what you want, add or remove when necessary. These changes will allow us to be added to existing Laravel applications or built from scratch. Adding additional features, like your method of authentication and services you desire, as well as scaling, will be much easier, too
Stayed tuned as we close in on finishing up the DreamFactory 2.0 effort.