What is Framework?
Even the definitions of frameworks vary. The definition we use most is "a framework is a reusable design of all or part of a system that is represented by a set of abstract classes and the way their instances interact." Another common definition is "a framework is the skeleton of an application that can be customized by an application developer." These are not conflicting definitions; the first describes the structure of a framework while the second describes its purpose. Nevertheless, they point out the difficulty of defining frameworks clearly.
Why We Use A Framework?
#1: Avoiding The Blank Canvas
The scariest thing to a developer is starting a new project completely from scratch. The reason why the blank canvas is such a challenge is down to how we mature in our understanding of any paradigm as we grow in experience.
When we start, we need to start at the Instructional level. A good example of this is a recipe. A recipe is a set of instructions, meant to be followed to the letter, in order to create a specific meal or food item. You're not learning how to cook—at least, not directly—you're learning how to cook something specific. This is where new developers need to start. They need to be told what each step is that they need to do, and they need to be told how to do it, simply because they don't yet know how to do it for themselves.
After following instructions for long enough, the penny drops (for *some* people; sadly, not for everyone), and then it's possible to move from an Instructional approach to a Coaching approach. Here, the developers are figuring things out for themselves, with management/senior staff using questions and directed experiences to help the developers improve bit by bit.
Finally, once developers have learned how to self-improve, we reach working in collaboration, which is where we transcend being cogs in a machine and enjoy true teamwork together. This model holds true for any form of education, be it scientific, creative, or sports.
Let's take a new developer. The developer needs to start at the Instructional stage—they need to be told what to do and how to do it. A good framework (and this is something Ruby on Rails excels in) provides the skeleton to hang these instructions off. A framework is like the rules in a team sport in many ways.
But what happens if there is no framework—there is no skeleton to base the instruction around? When that happens, you have no choice but to move straight to teaching through coaching. This is where most managers jump straight to, and sadly has been made popular by otherwise well-meaning authors over the last decade or so. But the problem is—you've skipped a step, and so have your developers. You have to instil the fundamentals first through instruction, before you can use coaching to help the developer to improve. Without the fundamentals, your developers are always going to have gaps in their understanding and ability.
But if you don't have a framework, what are you going to instruct your developers in? Every job you give your developers is going to be new and completely different—but they're not going to be ready for it.
#2: Code Outlasts People
Unless you work for a bubble start-up, the code will be around longer than the individuals who work on it. You can take as an example something like phpMyAdmin which used to run under PHP 3 and now runs under PHP 5, without having been completely written from scratch along the way.
#3: Embrace Best Practices
Good frameworks embody best practice use of design patterns. Good frameworks bring with them best practices on how you design your code, so that you can develop quickly now, and have less maintenance in the future.
#4: Good Frameworks Save Time
Once you've mastered a framework, they help you get more done in less time. They make individual developers and teams alike more productive.
What is InfoPotato? InfoPotato = Components + Patterns
InfoPotato is a very lightweight, well designed & well documented PHP5 framework that can be used for the development of small web applications. It is loosely built around HTTP and the principles of REST through incorporating many good ideas and the best practices from other well-known web frameworks and toolkits. The primary goal of InfoPotato is to enable web developers to work in a structured and rapid manner without loss of flexibility and expandability.
Quick Facts about InfoPotato
Dedicated to Small Applications
Truly Lightweight & Ultra-fast
Loosely Coupled Components
Built around HTTP & REST
Fully Compatible with UTF-8
Simple i18N/L10N Support
Multiple Data-Access Objects
Rich Libraries/Functions
Very Detailed Documentation
One Framework, Multiple Apps
Built with Security in Mind
