As many of you have been pointing out, it’s been a long time since the last Oxite release. To be exact, it’s been 4 months today. :| For a piece of software, that isn’t much time at all. For a web application, that can be pretty big. We’re usually fast movers, but we made a decision a while back that we want to “go Beta” for the next release. This means that the next release should be at least halfway comparable to the feature set of other blog engines out there and that non-developers should be able to run Oxite without much work. Here are the 3 high level goals for the next release of Oxite:
- Improve the admin (add missing features and improve the user experience)
- Build a great plug-in model (works well for non-devs and devs alike to build small new features on top of Oxite)
- Make installation easier (include Oxite in the Web App Gallery)
With those goals in mind, here’s what we’re working on and how far along we are with each so you can get an idea how much more we have to go…
Required to ship
The following are items we will not ship without and how far along we are in their development.
Plug-in Model – 90%
There’s really too much to talk about with plug-ins here, but the gist of it is that anyone can use their favorite text editor to write a few lines of code, FTP up the file to their web server and run. You can also use Oxite to edit the code file if your hoster will let you edit files through ASP.NET. We will be including a few plug-ins out of the box so you can see how to build them and we’ll also have documentation when we ship (you can see the work in progress docs here). We have already demo’d plug-ins internally to a few teams and so far the response has been great. We’re just in the process of finishing up a couple things and fixing last minute bugs.
Spam Filtering – 95%
We built a plug-in that will be included in the next release that calls out to a spam filtering service (like Akismet or TypePad AntiSpam) when new comments are added and verifies whether or not they are spam and removes any comments that are spam.
Site Setup Wizard – 15%
This feature has been designed and we’ve gone over the design with one of our new contributors who is going to handle the implementation. We want to make setting up a new Oxite instance as simple as possible so walking through the wizard, you will be asked as little as possible to get Oxite running. Afterwards, you can tweak Oxite’s settings to make it work the way you want it to.
User/Blog Management – 50%
We already have pages for adding, editing and removing users and blogs, however, we’re been doing a major overhaul to the admin area and we don’t expect these to be working at the moment. As we overhaul the admin UX we are going to make some changes to the flow of these pages anyway.
Authorization Management – 50%
We have a permission API in place already for the new release, but we don’t have any UI in the admin for it yet. Permissions are done by associating 3 things together: User, Role and Entity. To make a person an owner of a blog to do whatever they want with it, you would associate the user with the admin role to a particular blog.
MetaWeblog API Improvements – 85%
In the new release, we’ve moved the MetaWeblog implementation from WCF to using MVC controller actions. This makes future work simpler to implement and errors easier to bubble up. This work is complete, but not fully test. We will also be adding file support so you don’t have to use FTP for blog post images anymore.
Rich Text Editor – Complete (sort of)
So far, we’ve been unable to find a rich text editor that is compatible with the license of Oxite (Ms-PL) and built on jQuery. In the meantime, we’ve implemented markItUp! This will allow you to do simple formatting that most people will need. In the near future, we will also be demonstrating how you can write your own plug-in to use your favorite rich text editor instead.
Contact Page – 0%
This is sort of a no brainer that we’ve somehow overlooked in past versions of Oxite. All blogs have a contact page. Oxite will join those ranks in the new version. You know, the standard “enter your name and email and a message and I’ll send it to the site/blog owner” type of page.
Scale – 75%
Dumb caching has been implemented at the service level of Oxite. What this means is that the results of calls to the repositories are now cached after the first time they’re called. We invalidate cache by entity or entity type or sliding expiration. The current cache service is implemented using ASP.NET Web Cache. In the future, we will more than likely implement a Velocity cache service too for those who choose to use Velocity. We will also probably make the caching a bit more smart and cache entities and query results instead of just straight query results.
Random Bugs and Admin UX Enhancements – 40%
We have a gazillion bugs we’ve fixed since the last release and are continuing to fix bugs (be sure to start a discussion on CodePlex and report them when you find them). In this bucket, I am also including all of the admin work we’re doing. We’ve added some cool things like dialogs (that work both service side and client side so they’ll work on phones and modern browsers alike), lots of new management pages, new UX around adding and editing posts and pages, etc. The list goes on and on, but you’ll have to wait and see exactly what features get in the next release.
More Cleanup – 95%
We’ve done some more cleanup in this version of Oxite:
- Database – Some tables have been cleaned up and reorganized to make the schema better match the data we store.
- Model – All of our model classes immutable so objects can never be in an incorrect state.
- Services – All add/edit/remove services have been modified to return generic result instances that include validation/model results to help keep validation in a single place.
- Controllers – All controller action parameters have been converted to ENTITYInput or ENTITYAddress classes with ModelBinders to map the values appropriately, all validation has been pushed into the services and we now return ViewModels directly and have filters that convert them into the appropriate ViewResults.
- Views – Many views have been cleaned up and separated better. The admin is now completely separate from the rest of the site and now renders HTML 5 instead of XHTML. Skinning the site is now simpler since the admin is not included in skinning anymore.
Optional to ship
The following are items we would like to make time for, but if they take too long, we will ship the next release without them and put them in the next release. These are ordered by priority.
Modules – 10%
We have a lot of the infrastructure in place, but have yet to fully design how modules will work in Oxite. Basically, we want to break Oxite up into pieces (like IIS 7) so it’s easy to replace and build your own major chunks of Oxite. Modules will be similar to plug-ins, but much more powerful and for those who are very familiar with .NET. If you want to build forums on top of Oxite, a module would help you accomplish that. Modules will be how you can get into the Oxite/MVC pipeline. We’re really set on getting this int
o this release of Oxite, but if it ends up taking too long, we will cut it for this release.
Blog Management – 60%
While Oxite does support having more than one blog running in it, we haven’t yet optimized it when you go from one to two blogs. To do this, there’s quite a bit of work involved like getting the dashboard to be aware of all blogs a user has access to, the menu needs to change in the admin, plug-ins need to have a way for site admins to specify which plug-ins are allowed to run and then blog owners need to be able to set their own settings on each plug-in that’s installed, etc. This work is high priority on the optional list, but if it doesn’t make it in, it will in the next version.
Skin Engine Enhancements – 0%
While skinning is pretty great in Oxite, we have some ideas on how to improve it further to make scenarios like building an iPhone skin or optimizing Oxite for MSNBot or Google to index your site or making your site work in IE 6 even easier and better organized than it is today. We will more than likely not get to this one for this version.
Threaded Commenting – 75%
Before we went off and implemented plug-ins we started down the path of adding threaded commenting so it’s easier to understand who is replying to who. We got the server side implementation done, but not the client side implementation and it still needs to be properly tested. Hopefully this one will make it in this release, but not making any promises.
AJAX Enhancements – 25%
We’ve done some work in the admin to make things work well client side, but still have some more we’d like to do as well as getting paging and commenting to work client side. Nice to have, but not needed to ship.
Authorization Provider Model – 0%
Our authorization in Oxite is mostly separated out into its own thing, but there is still work to be done to enable anyone to build a module for their own authentication scheme (like OpenID, Live ID, Facebook Connect, etc). This is another nice to have, but if it doesn’t make it in this version, it will be very high priority for the next version.
Exception Logging – 0%
This will make it much easier to debug problems when they come up for people, but is a nice to have and will not hold up shipping the next version if we don’t have time.
Unit Tests – 25%
For the most part, the Oxite team isn’t a TDD bunch, but we do see the importance of unit testing and will try to get more tests in there.
Post ship
After we ship the next release to CodePlex, we will be nearly immediately submitting Oxite to the Web App Gallery. This will make it so those who want to just use Oxite and not go through the code can get Oxite up and running can get Oxite in a few clicks with the Web Platform Installer. This is exciting stuff and will get Oxite out there much more than it is today.
Future
Even though we haven’t even started any development for these, I believe it’s important to understand where we’re going so we build the right things in the right priority. These are items we’re beginning to plan, but would definitely love to hear feedback and eventually get help coding.
Oxite.net
This currently redirects to http://visitmix.com/lab/oxite (our home base). http://oxite.codeplex.com is the other place most people go to. As we grow and need more features it will more than likely make sense to move the project to our own domain (oxite.net) and consolidate it all to one place (other than the source code). Luckily, this will just be a DNS change since we already point to that domain for all our stuff. This is not set in stone yet, but is our current intent. We want oxite.net to be the page everybody goes to for information about features, documentation on how Oxite works, galleries for skins and plug-ins, etc.
Forums
This one comes up often and we think it’s a good idea. Once Oxite modules are done, this becomes easier, but forums usually have a lot of features that blogs don’t (even though it’s still the same idea…post and then comment on the post).
Social
We don’t have user profile pages at all yet, nor anything like being able to add friends, etc. That’s ok for now because there isn’t much of a reason for anybody to register on an Oxite site yet. Anonymous users can comment and do just about anything an authenticated user could. In the future we’d like there to be profiles and friends and some modules I can’t talk about yet. 🙂
None of this really even hints at a date for the next release. That’s because we really never know when we’re going to work on Oxite. Seems to be random as we have time. We’re building momentum with Oxite. In the last few weeks we’ve added more contributors to Oxite (5 to be exact and we have 2 more joining soon). Some work for Microsoft, some don’t. We need your help to continue building a great platform. Go build something cool with Oxite and show it off. We’re listening closely for individuals who know what they’re doing, build the right things and are very interested in our “little” project. Show us your code! 🙂
So how do you think the next Oxite release is shaping up? Useful? Awesome? Horrible? Am I forgetting any other major features? What will you build on top of Oxite? Does it seem like something you’ll want to use?