So everything that's been outlined over the last 6 weeks is all well and good, but the obvious question now is when?
I've never publicly announced hard deadlines, and I'm not going to start now. There are a lot of things going on at the moment. The Anodyne Help Center is being built, the new forums are being planned and will need to be built, and the work on NextGen will be part of that carousel of development. That being said though, as major features are finished, my plan is on getting a new preview release out for people to check out. Since Nova NextGen is such a big shift away from how Nova currently works, it's critical to get eyes on the actual product through this process so that users can see its progress, test new features, and offer constructive feedback on the product. This is especially important for theme and extension developers. Laravel is a completely different beast from CodeIgniter, and it's going to take some time to get used to that and acclimate to the new way of doing things. With preview releases, developers should have the time to get comfortable with everything before the product is released.
No matter what your preference is, the goal is to have something to look at and play around with that's showing some progress. And to kick things off on the right foot, I'm making the first preview release available for download tonight. There's a new page on the main Anodyne site about Nova NextGen that includes installation instructions, an overview, links to all the different pieces of my vision for NextGen, and the download link. Check it out tonight!
There isn't a whole lot here, but the foundational elements are falling into place. The only thing you can do with this release is install it. The pieces are there to play around, but there are no features outside of the Setup Center. Here's some of the things you'll find in PR1:
This is actually one of the easier pieces in the process and really just involves making the decisions about the specific components that Nova NextGen will use. Like I've already talked about, Laravel 5 is the foundation. On top of that are some of the smaller components that get pulled in for various features and uses are lined up as well. Most of that is already set, but a little bit is still left to do. (Truthfully though, the way NextGen is being built, swapping out those components down the road is a lot easier than with how Nova 2 is put together!)
The simple fact is that Laravel wants to live outside of the public path on the server. Doing that is more secure and the recommended way of deploying an application like Nova (all of the new Anodyne sites do that in fact). The problem with that is how much work it requires admins to do to get it up and running properly. The last thing I want is for someone to have to upload NextGen and then do all sorts of work in cPanel to get things working. Like previous versions of Nova, I want someone to be able to upload, install, and go. Because of this, setting up the architectural foundation is a little trickier and involves more moving parts.
Using an entirely new file structure involves making changes to how Laravel boots up. Some of those are pretty simple changes, but others have far-reaching consequences. (I've white-screened myself more than a few times during this process.) As that file structure is put together, implemented, and stabilized, things become a lot easier.
Under the hood, there's then the question of how Nova's source code will actually be organized. Over the course of building AnodyneXtras, I picked up a few things that I actually have really liked (architecturally speaking) and have incorporated some of those things into NextGen. Like I talked about early on in the series, this is very much about how things are put together. The use of things like a DI container have been pretty phenomenal, but making sure everything is in a place that A) makes the most sense, and B) works for all the applications that Nova may need it is important.
Working on the architectural foundation is an ongoing process, but the biggest pieces are what is being worked on currently. Even after a few preview releases, there are bound to be tweaks and changes to how things are organized, but the bulk of this work is being taken care of these days.
Like I talked about recently, themeing is a big point of emphasis for Nova NextGen. While I don't have everything in place for themeing (I'm still sorting through how menus are going to be handled), the basics are there, including the Locator service that will find the right file from the right location and use that. Any theme developers that want to take a stab at playing around will find some of the most basic pieces there with more being filled out in future preview releases.
With the technology stack in place and the architecture standing up, the next big thing to worry about was how to get it installed. In Nova 2, the pieces for installing, upgrading, and updating were spread throughout the system. That made managing the setup of Nova a bit of a chore. In NextGen, everything lives inside a setup "module". The Setup Center is the one-stop-shop for everything involving Nova's setup, whether it's a fresh install, updating to a newer version, or migrating from Nova 2. There's also some work that's been done about detecting the environment and making sure everything Nova NextGen will need to run is actually there.
Since the Setup Center is the first interaction admins will have with Nova NextGen, I felt it was critical to make a good impression. It needs to be easy to understand, simple, straightforward, and quick. If it takes 15 minutes to get through the installer, frustration is going to mount and it'll ruin an admin's first experience with the product. The installation needs to be a breeze, and I think I've accomplished that so far. I also wanted to make sure the design of the Setup Center was clean and fleshed out. There's nothing worse than watching something go through a hundred different iterations. What you see of the Setup Center today is likely to be exactly what it looks like when the product launches.
Building on top of PR1, the next preview release will actually start to have real features that people can play around with. Here's the current plan for PR2:
You created a user during the setup process, so now take that user and log in to the system. Forgot your password? Nova will email you a reset code and step you through the process of changing your password.
Once you're logged in, you'll be able to start playing around with the Page Manager. Create new pages, edit existing ones, update content, and everything that you need to do with pages.
Shortly after writing the piece about navigation being part of the Page Manager, it dawned on me that doing it that way would actually be harder. Menu management is still going to need to be separate, but it'll be more robust than how it's handled in Nova 2, including sub-menus and dropdown menu styles.
This is a big milestone for Nova. The software is showing its age and it's time to breathe some new life into it. Yes, Nova NextGen will be a significant departure from Nova 2, but I think once everything comes together and you see the sum of its parts instead of just looking at the individual pieces, you'll see that this is about moving Nova forward into a product that's better suited for playing these incredible games in the 21st century!