Got some more work done

Yesterday I posted an updated list on what is left to do before SnowCMS 2.0 beta can be released, and I just want to say that I just committed r1062 which crosses the system notifications and link tree part off the list.

I also moved a few things around and started on the system update feature as well, but there is still some work there to do.

We’re getting very close! Exciting, right?

,

No Comments

Just a couple things left to do

I just committed r1057 minutes ago which finally completes plugin management — meaning you can install, activate, deactivate, delete and update plugins.

So where does that leave us? Here is the updated list of things to do:

  • System Settings – Done
  • Themes – Done
  • System Update – To do
  • About – Done
  • Errors – Done
  • Add Member – Done
  • Manage Members - Done
  • Member Settings – Done
  • Member Permissions – Done
  • Add Plugin – Done
  • Manage Plugins – Work-In-Progress Done
  • Plugin Settings – To do Done
  • Authentication Tokens – To do Done
  • Verify that registration, activating, resending activation emails, password resetting and profile viewing/editing features work – To do
  • Get the link tree and notifications working in the control panel – To do

Pretty close, right? Tomorrow I am going to try and get to verifying that features such as registration, activation, etc. work properly, along with implementing the control panel link tree and getting the notifications system to work (just need to have the list of notifications displayed when clicked).

In the road map I said that SQLite support would be released once 2.0 beta came out, but I am having second thoughts and it is going to be pushed back until the SnowCMS 2.0 beta 2 release — sorry.

,

1 Comment

I’m Back!

So I got back Sunday from camping — and sunburned, as usual — and I have resumed work on SnowCMS, but I have yet to commit anything.

Right now I am working on a new class called Extractor which will do what one might think: extract files, such as zips, tarballs and gzipped tarballs without having to detect the compression method used manually.

Additionally I have created an Extraction interface which may be implemented to support the extraction of other compression methods.

With this new Extractor class I also worked on updating the current Zip and Tar classes to add a new method called read. This new method allows files to be retrieved from the compressed file without having to decompress the entire package. This individual file may be returned or saved to a specified file.

This may sound insignificant (or that I am going off-track from what I have been working on lately), but it allows the process of installing and updating themes and plugins more efficiently.

Currently a package (theme or plugin) is extracted to make sure the package can actually be extracted and to make sure that the package is valid (e.g. a real theme or plugin), then its status is checked. If the status check finds that the package is not approved the user must choose to continue with the installation, if they do the page is refreshed and everything up to this point is redone, but the status returned is ignored. Now the compatibility of the package is checked and if it isn’t compatible the user is once again asked to continue with installation anyways, if so the process is once again repeated.

This means the package could be extracted up to three different times (the extracted package is removed on each page load in case the user leaves the page). This needs to occur to make sure the compressed package can be decompressed and to make sure the right files exist and to check its compatibility with the system.

Now that files can be extracted individually the package does not need to be extracted over and over again, making the process much more efficient.

Just thought I’d let you know ;-)

, ,

No Comments

Going Camping — No, Really

Just thought I would let everyone know that I am going camping with some friends for a few days… I will be leaving sometime tomorrow and won’t be back until Sunday.

Just in case anyone started to wonder why I stopped making any commits, that’d be why :-P

Oh, and earlier today I gave a list of sections in the control panel which were done or still needed work, I thought I would update that list:

  • System Settings – Done
  • Themes – Done
  • System Update – To do
  • About – Done
  • Errors – Done
  • Add Member – Done
  • Manage Members - Almost done, I want to make a few tweaks Done
  • Member Settings – Done
  • Member Permissions – To do Done
  • Add Plugin – To do Done
  • Manage Plugins – To do Work-In-Progress
  • Plugin Settings – To do
  • Authentication Tokens – To do (see below)

I just might do a bit more tomorrow if I have time, but it is unlikely. Even once I have completed the control panel, we won’t immediately release SnowCMS 2.0 beta because I have a few things on the main part of the system (registration, logging in, profile editing and password resets) I need to do. I know that sounds like a lot of other work, but its not. A couple things still need to be updated to use the new Form class which won’t take much and I also just want to make sure registration, activation, resending activation emails and resetting passwords works properly — so just testing.

But I guess there is one other thing I should add to the list *adds to list above* which is authentication tokens.

If you aren’t sure what I mean, I will explain… Currently when a user logs in to their account a cookie is saved containing their log in information — pretty standard. This cookie contains two things: the users id (member_id) and their hashed password. I have decided (and this was on the road map for awhile now for beta, anyways), along with others, that this is old, outdated and insecure.

With this planned method of keeping a user logged in a token (hence ‘authentication token’) is assigned upon each log in. This token is a randomly generated string of characters (a, b, c, 1, 2, 3, !, @, #, and all that stuff) which is then saved into the database of authentication tokens which will also contain the owner of the token (the member_id), along with other information. This authentication token is in no way related to a users password which means when logged in the users password is not being transmitted in any shape or form after logging in (we will have a secure log in plugin which will help prevent password sniffing at all, whether or not you are browsing with HTTPS).

There is another benefit to these tokens, because as I said there is other information stored along with these authentication tokens. This includes such things as the time at which the token was assigned, when the token is set to expire, the IP from which this token was assigned, and even the browsers user agent.

The expiration time would be set by that drop-down box that is currently shown when logging in. The token will expire and no longer be valid after the time at which it expires. Sure, a cookie does that, but a cookies expiration date could certainly be extended, so this adds a strict time limit.

The owner of the website would be allowed to impose other restrictions on tokens as well, such as requiring that use of the token come from the same IP and browser.

Also, users will be able to go into their profile and view current tokens which are still valid, which they may revoke if they so please. Just in case you forget to log out of a friends computer — or something like that ;-) . Kind of like what Facebook currently does.

While this idea certainly does have its limits (there is nothing to stop key logging software from getting your password), it certainly has its benefits… and a little extra security never hurt anyone, right? Right..?

,

No Comments

SnowCMS now released under the Microsoft Reciprocal License

I have decided to change the license under which SnowCMS is released from the GNU GPL v3 to the Microsoft Reciprocal License, as of r1051.

The reason for this license change was to fit more with what I believe others should be able to do with SnowCMS.

The GNU GPL does not allow such things as plugins to be released under any license that is not compatible with the GPL, such as proprietary/non-free licenses. While some may believe that when the system itself is open source so should any plugins or additions to that system should also be released under a similar license. I personally disagree.

The Microsoft Reciprocal License (MS-RL) allows the product (SnowCMS) to be modified, redistributed, and so forth, under the condition that the original source be released under the same license (the MS-RL). However the MS-RL allows the modifier to have a separate license for the modifications made, any they choose (except for the GPL, as it is incompatible).

Also, unlike the GPL, the MS-RL is very short and to the point, so here is the full text:

Microsoft Reciprocal License (MS-RL)

This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.

1. Definitions
The terms “reproduce,” “reproduction,” “derivative works,” and “distribution” have the same meaning here as under U.S. copyright law.
A “contribution” is the original software, or any additions or changes to the software.
A “contributor” is any person that distributes its contribution under this license.
“Licensed patents” are a contributor’s patent claims that read directly on its contribution.

2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any contributors’ name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(F) The software is licensed “as-is.” You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

, , ,

No Comments

An update before I go to sleep!

Yesterday I said the theme management was done, until I realized I forgot to do theme compatibility checking. I have since then committed r1047 which resolves this issue… So I can honestly say theme management is completed. Unless I realize I forgot something else! :-P

Today I also finished fixing the Member Settings area, and it looks the same as the current System Settings area that I showed off yesterday.

There is still work to do, but I thought I would give a list of all the areas that are completed/need work:

  •  System Settings – Done
  • Themes – Done
  • System Update – To do
  • About – Done
  • Errors – Done
  • Add Member – Done
  • Manage Members - Almost done, I want to make a few tweaks
  • Member Settings – Done
  • Member Permissions – To do
  • Add Plugin – To do
  • Manage Plugins – To do
  • Plugin Settings – To do

Keep in mind that when I say to do I don’t mean that the entire thing doesn’t work, I simply mean I have yet to make sure the section works properly and looks good in the new control panel.

While the list may look awfully long, I will just say that the manage members area just needs a couple links so administrators can view accounts waiting for approval/already approved, so that won’t take much. Member permissions just needs to have the form converted over to the new setup, and the same goes for the plugin settings area. That leaves me with 4 bigger ‘projects.’

So there you have it! I have said it once and I’ll say it again: we’re getting there!

PS: Before I forget again, I have decided not to have an alpha 2 or 3 release. We will be going straight to SnowCMS 2.0 beta. Technically speaking we are passed the alpha 2 stage and half of the alpha 3 stage has also been completed. 

, , ,

1 Comment

SnowCMS 2.0 — We’re Getting There!

It’s me again! I just wanted to point out that as of revision 1043 theme management is complete! (Well, actually, I noticed an issue in the issue tracker for the addition of themes being able to specify which versions of the system they are compatible with, but I will do that next)

A few revisions ago I also finished updating the system settings sections, and I figured I would show it off.

As you can see the settings page is no longer a long list of, well, settings. There are now sections which contain the settings to make it much easier to find what you are looking for.

There isn’t much to show with the theme management section, but just imagine that it looks something like the above, but with themes :-P

After compatibility is put in, I will start working on the next area of the control panel, which will be the error log. I am going down the list of sections as displayed in the control panel — just because. I am planning to do a pretty big overhaul of the System Update section, so I will save that for last.

While it looks like I still have quite a few sections to cover (Errors, Add Member, Manage Members, Member Settings, Member Group Permissions, Add Plugin, Manage Plugins, and Plugin Settings), keep in mind that all but the plugins section are simply being updated to work with the new Form class and to look nice in the new control panel… Which won’t take too long.

But as I said, we’re getting there!

, , , ,

1 Comment

A Quick Update

Hey everyone! Just thought I would make a quick post about the work I have been doing lately.

I have been working on creating and implementing the reworked Form class, which takes advantage of the new Input class. With the new Form class (and the Input component) developers will be able to create and display forms in a flexible manner while still getting the benefits of previously provided. Previously the Form class had to display the form itself, which meant the only way they could be displayed was a linear table-like format, which is certainly fine for such things as settings, but not if a different format is desired.

After all, it was certainly time for a reworking of the Form class, as I looked at the revision history and found that it was practically the same way since January of 2010, so over a year old, and a lot has certainly changed since then.

Just thought I would update everyone so no one thought nothing was happening! ;-)

, ,

No Comments

SnowCMS 2.0 Alpha 2 and Alpha 3 to be Merged

Hey there, everybody!

I just committed revision 1036, which finishes the conversion to the new theme system, kind of.

The road map currently shows that this would indicate that an alpha 2 update would be right around the corner… Well, that has changed.

You see, I feel as though that many core components of the system are still — to put it bluntly — pathetic. These components include such things as: the plugin installer, updater, and manager, the theme viewer, installer, and updater, and the system updating mechanism. Interesting, last I checked, that’s just about everything!

Due to this, I have decided to move the road map around (haven’t done it yet, but will tomorrow) and merge the alpha 2 and 3 release together, and along with that, alpha 2 will be the release to include the new control panel theme I showed off a few days ago. The reason that the new theme will be included in alpha 2 is because I plan to change around the look and feel of these “cruddy” components, and I see no point on doing that if a new theme will be used which may then require some more tweaks.

In case you are wondering what the 2.0 beta milestone will contain, because it seems somewhat pointless in terms of planned updates, it is something I have yet to add to the road map as well. I will talk more about this as the time comes, but 2.0 beta will bring an overhaul to the log in system, which will no longer use a cookie containing a member ID and salted & hashed password, but an authentication token, which will completely removed any traces of your password in any form from cookies (along with being seen in clear text when logging in, if JavaScript is enabled).

Sorry about that! Though its not as if many have downloaded SnowCMS anyways :-P

, , , , ,

4 Comments

A Sneak Peak at SnowCMS 2.0 Beta’s New Control Panel

Hey everybody! Yesterday I decided to take a little break from copying and pasting code (switching over to the new theme system), but I still wanted to work on something that had to do with SnowCMS.

I figured that I would work on the new control panel layout slated to be released with SnowCMS 2.0 beta, and now that I am done with the HTML aspect I decided to give everybody a peak. Check it out:

New Log In

Now you will no longer receive an error asking you to go to another page to log in, just to come back again. With 2.0 beta you will be able to log right into your account from the authentication page, if need be (if you are logged in, your user name will be filled in already, and all you will need to do is enter your password).

Redesigned Home Layout

The new starting page for the control panel takes a lot of queues from the current design as seen in SnowCMS 2.0 alpha, but I thought a little reorganization was needed, especially thinking about the possibility of people having a massive amount of plugins adding functionality and other settings within the control panel… So I decided to show navigation options in two places: the sidebar and in the middle with the icons.

As you can see, I also moved “News from SnowCMS” to a more prominent location, instead of having it crammed into the sidebar as it is now.

Right below the header, and above the middle content of the site, there is now a bar which contains two things: a link tree and notifications. Now navigating back out of “corners” in the control panel will be much easier as the link tree will allow you to jump up, if there is one (there will be a new addition to the API to allow plugins to integrate with this).

More Prominent Notifications

Right now in SnowCMS 2.0 alpha notifications are only displayed on the start page of the control panel, which is fine, but it seems logical to be able to view these notifications regardless of location within the control panel.

With 2.0 beta, all a user needs to do to view these notifications is to click “Notifications” on the right side of the link tree, which will then display a window containing current notifications.

I have yet to decide what exactly plugins will be able to display in this notifications area (presumably text and a link), so all I can show you right now is “No Notifications!”

Hope You Like What You See

Well, I hope you like what you see! I certainly look forward to reaching the 2.0 beta milestone, as we will become feature complete at that point, and we will be very close going “gold,” when I can start building plugins (and others, of course — they can be created now, it’s just that a lot things may change until then) to show off what SnowCMS is capable of doing.

Till next time, be sure to follow us on Twitter @SnowCMS, check out our Google Code Project website, along with registering at the SnowCMS Dev Forum.

, , ,

1 Comment