Every framework should have these 5 features

Programming language frameworks usually come about as a way to provide structure, guidance, make development faster and simpler. Ask DHH. These were part of the reasons he came out with Ruby on Rails after trying both Java, and PHP.

I, myself have used a couple of frameworks. Yii , CakePHP, CodeIgniter, Laravel, Django, Play, Ruby on Rails, EmberJS and AngularJS are some of what I have tried my hands on.

Some have been great, and a pleasure to use. Others I dropped like a bad habit few days into using them. Good frameworks share similarities. Thus, its no wonder that frameworks like Laravel, Django, and Ruby on Rails are the leading frameworks in PHP, Python, and Ruby respectively.

With each new programming language that comes up, you can be sure new frameworks will rise up along with it. Existing frameworks will also get better with each newer version. Hopefully the good things in current frameworks will influence the ones yet to be born.

So here is what I want to see in newer releases of existing frameworks as well as the ones being cooked up on some one’s computer somewhere in this opinionated world of ours. I could comment forever on the features I would want to see but I would limit it to just 10. I would do my best to rank them.

I won’t want to keep you waiting at this point, so I will go right into it.

Big communities: This is the top of my list. Eventually you might get stuck trying to do something in that framework that no one has ever done before. At this point, you know need help. The first move is to not just to Stack Over flow, but also that framework’s online forum. Big communities means that there is a higher probability someone has already done what you are trying to do. What use is a framework that is used by only 10 people in the whole world ? I want that framework that is being used by at least 10 million more people.

Migrations: This is the seconds in my list. Running migrations is a breeze and delightful. It makes keeping track of your database tables simple, and convenient. You can always go forward or backwards. Every change you ever made to your database is there for you to see and alter in a few files.

Routing: I like the way routes are done in Ruby on Rails best. It has the routes file located in the main app directory, and goes on to specify the resources of a controller. Consequently you know exactly where to go to change any piece of code once you see how it shows up in the browser. Everything is approached in a very REST-like manner. Afterall, who does not like REST ? For example you have the index, update and destroy methods. That means that if another developer comes to take up your work, he knows almost immediately how your code is setup to work.

Console: It should definitely have a few shell commands. I want to be able to run commands and perform things like tests, and database migrations without always having to go to another tool. Being able to run ORM like commands in the terminal is something that should neither be taken lightly nor for granted.

MVC like folder structures: The MVC pattern, is now widely popular among programming communities. If its not MVC , then its MVW (Model-View-Whatever) or MTV(Model-View-Template) or another derivative. Don’t take it for granted that all frameworks are built in strictly this approach. Some frameworks might adopt a backwards approach in telling you where to place your views, controllers and models. Its nice to want to be able to do your own unique thing, but let the folder structure be at least recognizable.

I just wanted to point a few out. I would appreciate more features like default timestamps in a database table, as well as controller creation commands. Anything that makes development better and more productive is what I would advocate.

How does your framework match up ? Does your framework have all or some of these features ? If so, then good for you. Share with me other features you might be interested in seeing in programming language frameworks.

Do tweet, like, comment, post or follow me. See y’all later.

Cheers!

Leave a comment