The History of the Masonite Framework

Masonite is a batteries-included Python framework. As of the time of this article, it is on the 4th version in 4 years. As the creator of the framework, I thought it would be a good idea to walk through the history of the framework.

I started learning Python in August 2017. At the time of starting Python, I was a PHP developer for over 6 years so I was very well versed in programming concepts.

History

Masonite actually started in December 2017 as a sandbox environment way to take my Python knowledge apply them to help learn. After a few beta releases which had the basic file structure, routing, controllers, used an ORM called Peewee ORM, and had migration structures similar to how they work today. The foundation of the framework was also completely inside new projects which made making bug fixes nearly impossible as the code didn't live inside the package.

At this point I posted Masonite on the r/python reddit thread and you could imagine how that went. People roasted Masonite saying how crap it was an how we already have Django and Flask, why do we need another framework. People did code reviews of Masonite and said how crap the code was. The issue is they were right.

I went back to the drawing board, took the criticism and worked on version 1.

v1.0 of Masonite was released shortly after in January of 2018. This version of Masonite had the same feature concepts as the beta releases, but changed the Peewee ORM out for the Orator ORM, and added the service providers concept which made the framework extremely extendable. At this point, Masonite also adopted the ROMVER versioning schema.

v1.1-1.6 was released over in the first half of 2018 and made significant improvements to the internals of the framework, fleshed out the service container and the foundation of the framework and added sessions. At this point, people also started seeing the benefits that Masonite could be and started building a following. I also met a man named Aron who changed my life.

v2.0 was released in June 2018. The release mainly consisted of improvements to developer experience and really polished he framework. Masonite also moved the core code to a new repository. v2.0 added features like scheduling, seeding, CSRF protection, the tinker command, and other foundational improvements. This was the flagship Masonite version that helped make Masonite into what it is today.

I posted it again on the /r/python reddit thread and it received incredible feedback. People loved it. it was on the top of the /r/python thread for a week. I got invitations to be on several Python podcasts. Masonite gained hundreds of GitHub stars just from that thread alone. Masonite gained a big following on twitter and in the Slack community.

v2.1 was release in December of 2018 and made some more structural changes. Added type-hinting parameter resolving, changed registering middleware to be class based only, and added several new commands.

v2.2 was released in June 2019 and added new HTTP verbs, a new validation package, new testing structures, new drivers and more overall features.

v2.3 was release in January 2020 as was the last release in Masonite's flagship release line. This brought more features such as authentication improvements, testing improvements, better developer experience changes as well as frontend asset building such as the preset command, Laravel Mix, and webpack files. Masonite also moved all the core code back into the masonite repository and added a cookie-cutter repo for new projects. Samuel Girardin, one of the main maintainers of the Masonite also came on. An excellent coder I am not sure Masonite would be where it is today if Sam didn't find the project.

v3.0 was released in January 2021. This release brought very few changes to the Masonite codebase but switched out the Orator ORM for a completely new scratch built ORM called Masonite ORM. The Orator ORM at this point became clear that it was abandoned so we needed to either switch to another ORM or create our own.

v4.0 was released in December 2021. This was rewritten from the ground up to rebuild the Masonite codebase foundation and all features on top of it. Masonite 1-3 was written on the same foundation which made improvements difficult as some features were not written in the same way. This release also moved Masonite to an 8 month release cycle and changed the versioning schema from ROMVER to SEMVER.

Masonite 4

Masonite 4 (M4) brings more than just some code changes. M4 is a whole new paradigm shift. I am thinking of M4 as a grand reopening. A new foundation, new packages, new release schedule, new discord server, new ways of learning Masonite, new content. I am taking everything I've learned from running a framework and community over the last 4 years and putting it all into this release. 2022 will be focused on rebuilding the framework, producing content and engaging the community.

There have been many people who came in during the end of the M3 lifecycle and are giving M4 a lot of attention. We have Sam who is helping me create packages for Masonite, we have Alex who is creating a video tutorial series already for Masonite.

I can't build a wildly successful framework on my own. I know I need people in the community to help build this with me.

If you want to learn more about Masonite, visit the GitHub page here: https://github.com/MasoniteFramework/masonite

25