The project has been funded in a short 24 hours. Thank you to the 80 or so backers who made this possible in such a short amount of time!
So what happens now? Since there is plenty of time for me to continue fundraising, I'm going to sweeten the deal with the following stretch goals:
- ✔ $2000 raised: Base funding. I'm doing this!
- ✔ $7500 raised: Private messages and push notifications. More details...
- ✔ $10000 raised: New Docker chapter. More details...
- ✔ $15000 raised!!!: Backers vote for a new topic. More details...
The History of the Flask Mega-Tutorial
If you are learning Python web development with the Flask framework, chances are you have seen or at least heard people mention the Flask Mega-Tutorial, an eighteen chapter tutorial that teaches beginners how to create a web application.
Back in 2012, I decided to start a software development blog. Because I am a do-it-yourselfer at heart, instead of installing Wordpress and start blogging right away, I sat down and wrote my own blog engine, using a then little known web framework called Flask. I knew I wanted to code it in Python, and I first tried Django, which was (and still is) the most popular Python web framework. But unfortunately Django seemed too big and too structured. I've found that Flask gave me as much power, while being small, unopinionated and unobtrusive.
Writing my own blog engine was an awesome experience that left me with a lot of ideas for topics I wanted to blog about. Instead of writing standalone articles about these topics, I decided to write a long, overarching tutorial that Python beginners can use to learn web development. And just like that, the Flask Mega-Tutorial was born!
The tutorial teaches you how to build a microblogging application. It covers a long list of topics, including:
- New user registration
- User authentication and login
- Writing blog posts
- User timelines
- Text search
- Profile pages
- Automated language detection and translation
- and more!
Believe it or not, it took me about a year to write the eighteen chapters of the Mega-Tutorial. Back then, people still considered Python 2.7 the best release to use, and most Python packages had not been ported to Python 3 yet. Flask was at its 0.8 release at the time, and its port to Python 3 was not complete.
Fast forward a couple of years to 2014, and that is when Python 3.3 made an appearance, helping the Python 3 scene finally get some traction. By the end of 2014 Flask ran on Python 3.3, and I had revised all eighteen parts of the Flask Mega-Tutorial to make them mostly compatible. Due to some Flask extensions still not being ported this was difficult, so there are some gotchas and exceptions that you needed to be aware of. The sad reality is that the tutorial remains centered around Python 2.7, even though there is some support for Python 3.
We are now in 2017 and it finally looks like the scale tipped to the Python 3 side, so with your help, I would like to embark on a major rewrite of the Flask Mega-Tutorial to make it fully (not "mostly") compatible with Python 3.6. If there are any compatibility issues, I want to change focus and favor Python 3 over Python 2.
Unfortunately Python 2 vs 3 is not the only thing that changed. There are also several technologies that made sense in 2012 but are now obsolete. These include:
- The OpenID authentication mechanism, which has lost support among providers.
- The sqlalchemy-migrate package for database migrations, which seems to have lost traction and community support. These days Alembic is a much better choice for SQLAlchemy migrations.
- The Flask command-line interface, which did not exist at the time.
- Flask blueprints were fairly new at the time I started the tutorial, so I decided to not use that feature. In 2017, blueprints are a must for a Flask application.
- Bootstrap 2 for web page styling and formatting, which is now two major versions old. New versions of Bootstrap are backwards incompatible with version 2.
- Heroku service changes, which make the deployment instructions in the tutorial outdated.
As you can imagine, the many things that have changed in these five years basically mean that I will need to revise all the chapters, most of them in a pretty major way. Also, depending on the interest this campaign generates, I am open to consider writing new chapters to add to the collection (I have a few stretch goals for this campaign ready just in case!).
I'm excited about this project because I have grown professionally in these five years, and I think I can bring much more value to this tutorial with this new experience. Since this tutorial came out, I have given over a dozen conference talks and tutorials, I have written the highly successful Flask Web Development book for a major publisher, I have created several popular open source projects, and have transitioned from doing web development only as an after hours hobby to it being my full-time occupation. On top of all that, I have five more years of experience as a technical blogger, as I have continued producing content for my blog through all these years. All this experience is going to be reflected in the updates I bring to the tutorial.
Your Part In This
The work ahead of me is significant. If I just dedicate my regular "blogging" time to this project, it will take me a very long time to complete it. I would like to have a measure of the interest out there in me making this effort, so for that reason I have decided to create this Kickstarter project. My main goal is to get the monetary support I need to prioritize this project over other work, and have it all done before the end of the year.
My plan is to release the new Flask Mega-Tutorial articles on my blog, available to everyone, like the original version. The source code for the new version of the microblog application will be hosted on GitHub, also for the entire Python community to use and enjoy. But I have thought of some perks to show my appreciation to those of you who decide to support my work:
- An ebook edition of the entire tutorial, that you can read on your Kindle or other ebook reader.
- A video edition of the tutorial. I will record myself and my laptop screen going through the entire tutorial, so you'll know exactly what you need to do at every step.
Note that I do not plan to release the ebook and the videos on the blog, these will be made available only to backers at the corresponding pledge levels, and may go on sale at a later date if there is enough interest.
Risks and challenges
I don't foresee any major risks. I'm not at all concerned about not being able to complete the tutorial, because after all, I've done it once already!
The worst that can happen is that unforeseen circumstances force me to change the schedule, which would cause a delay in the delivery of the blog articles, ebooks and videos. If such an event occurs, I will let everyone know as soon as possible what the updated schedule looks like.Learn about accountability on Kickstarter
- (30 days)