A Brief History

The first version of inKWell originated in the summer of 2010 when Matthew J. Sahagian quit his position as a junior web developer at iMarc LLC in order to move across country. Originally, inKWell had been developed as a means to enable freelance work in the highly competative California market while working as a sole developer. The first version was designed more as a pseudo-CMS which could provide a customized working administrative panel to clients in a matter of days. This was achieved by relying predominately on convention but enabling widespread configuration to enable quick changes and pluggable functionality.

The first version of inKWell provided the following features.

The Road to 2.0

While career demands changed, inKWell 1.0 continued to provide a ready made and flexible tool for quick application development, but the PHP landscape was changing rapidly.

The 2.0 version began in August of 2012, not as a complete rewrite, but as a restructuring of much of the original ideas and some basic component replacements for libraries that were no longer supported. It also introduced composer support and reworked configuration to be even more modular.

Unfortunately, even though the framework itself had lots of features to make it welcoming to new components, the core components remained largely monolithic and too tightly coupled. Combining this with the fact that a number of the components were newer and less robust than those built into the previous version, the 2.0 release became largely useless for day to day requirements.

Lessons Learned

In March of 2014, the need arose for a better way to bootstrap applicaitons quickly. Given the power and flexibility of previous inKWell configuration models, the decision was made to extract and extend the configuration and boostrapping functionality independent of the framework.

The first alpha releases of inKWell 3.0 were released days later, combining only three major components:

This set of components is now officially known as the "nano core" and represents the heart of the inKWell framework. Out of the box it provides no ORM, suggested controller mechanisms, or even a router / http interface. It is purely concerned with providing a foundation for which all these types of components can be easily integrated with one another.