Now that Clay 1.0 is here (get it in the releases section on Github or clone master), I will rebuild Clay Framework and do a 1.0 release of it as well.
In the future, I may turn the framework into a composer package and manage it that way, even within Clay CMS (I normally just call it Clay). I had tossed around the idea to drop the framework as being a separate entity, but it could be useful to someone so I'll keep it.
For those that don't know, the Clay Framework is the core Clay library, with ClayDB and a multi-package installer framework. It's the part everything in Clay CMS is built upon. It has gone through several rewrites and is probably on somewhere around 6.0, I just never ticked up the version numbers. 1.0 sounds just as good to me.
Clay has been updated to 1.0 on Github. I've also upgraded all of my sites, without any issues from 0.9.x. If you notice any issues post a comment or report any issue on Github.
After sleeping on it, I'm doing a last audit of Clay, fixing a bunch of minor consistency issues, and will do an upgrade test. If all goes well, I plan to release Clay 1.0 on Monday.
I'm considering releasing Clay almost as-is as 1.0 and just beginning on the 2.0 branch. The changes I want to make are piling up and most of them are keeping me from doing other things. Version numbers aren't really a big deal nowadays, but I've wanted to make it perfect for 1.0 and I can't if I keep thinking of ways to improve it.
It works as it is now, I may as well call it the first version and move on. I don't have all of the apps I wanted in a first release, but the changes I want to make will allow apps to be developed much faster and easier. So...I'm going to sleep on it. The main thing to me is to always have an upgrade path and if I tick up the version to 1 now, I can build on that.
What I'm looking at would deprecate some older features and consolidate into newer, some even current, features. It feels odd to have deprecated features in a 1.0 release. I'd rather start fresh and at least show how much time has gone into it. So, more than likely, I'm going to do the 1.0 release, do some major changes to prep for 2.0 in 1.x, and keep moving along.
But, like I said, I'm going to sleep on it...
I've been trying to make Clay a little more developer friendly, mainly to make up for a lack of documentation. Adding Composer support was a part of that. I'm hoping, over time, I can continue building in tools that assist in that department, but to also use them as a form of documentation.
Tonight I started on an example/starter app that will demonstration how applications work and all of the options available to use from Clay itself. Apps are their own entity within Clay, so it's impossible to demonstrate everything possible to build in an app, but I can show ways to do certain things.
I've always hated scaffolded apps, but I was still considering building a generator that gives you a simple, functioning app. I still may do that, as a temporary solution, but I have a better idea for the long term. I may tell you about it some day...or I may just wait and show you.
The one tool Clay needs the most is documentation and I plan to slowly document everything. I had a complete set of docs for Clay years ago, but it kept changing so much that was not maintainable by just me. Clay is stable now and if nothing else I'll have a complete document on for 2.0.
I'm currently adding Composer (the PHP package manager) support in Clay, with the hope that access to additional packages will speed up my development flow. I do not plan to make Composer a requirement to use Clay, it will only be for Clay developers.
Until now there has been very little 3rd party code within Clay, I've attempted to write as much of it as I can. Unfortunately, that isn't the timeliest way to do things, especially if there is a specialized package that can do the same things. There are still plenty of things I want to add to Clay that I'll have to write myself, but these packages (which are equivalent to Clay Libraries) will definitely makes development easier and faster.
Again, Composer won't be required to use Clay, it will just be a developer tool, in addition to NPM (Node.js Package Manager) and several other command line tools that are used for Clay development. All of the 3rd party packages will be included in Clay and managed through the release cycle process.
Regard your soldiers as your children, and they will follow you into the deepest valleys; look on them as your own beloved sons, and they will stand by you even unto death.
- Sun Tzu
Most leaders today see their people as numbers or workers. Sun Tzu had a very different view of his people and that has had a profound impact on how I treat everyone I work with, whether I am their boss or not. Sun Tzu taught that leadership is a balance of multiplicity. Wisdom, ingenuity, planning, compassion, awareness, and many other attributes come together to make a great leader.
You have to be everything your followers need, some things they want, and nothing they don't need. Great leaders are loved for those truncated attributes. My motto as a leader has always been similar to the Sun Tzu quote above. My quote would be: "Not matter what rank I wear, it makes no difference to my troops. I wear my rank in your heart, not on my sleeve."
I've been working on the Contact app, still some work left on the admin side, but it's getting there. I hope to finish it this week and get to work on the Pages app.
I've been considering adding routing functionality to Clay to use for short urls. The catch is how to combine it with application::URL() for generating urls to apps. My fear is it would be a performance hit, because of the extra db queries when generating those urls.
The Pages app will be the biggest content app so far. My plan is to make it a mini CMS within Clay. It will change the way content is displayed in Clay and will be the focal point for content in at least Clay 1 & 2.
I've still been working on ClaySS, trying to get a baseline in there so I can begin working it into the 1.6 alpha codebase (coming some day). That means I am actually going to release 1.0 soon. I've still been holding off for the Pages and Contact apps, but I'm about to shift toward getting those finished, then there will be some clean up, a new menu and we'll see where we need to go from there. I'd imagine at least 1 beta release will come out, but I don't see a lot changing after that.
I've kind of made a 1.0 release my own mental hurdle, so I need to get it out so I can move on!
I've been working on ClaySS, have the base in there, just need to add some default styling. I'm not to the point where I've started making a theme yet, but it's getting there. ClaySS wont be used in 1.0-1.5, it's for the next major version, which starts at 1.6. It could take a while to finish...
I've been working on the Pages and Contact apps. The Pages app will just be for making custom pages, for now. Eventually it will replace the System app as the default app.
Hope everyone is having a good weekend and please remember to keep the areas affected by Hurricane Harvey in your prayers.
I've been working on a new themeable CSS framework and today I named it and created a repo: ClaySS. Who saw that coming, right? 😉
ClaySS will replace Bootstrap and jQuery in Clay 2.0, but will be available as a standalone SASS package on npm. ClaySS is based on iotaCSS, so you will be able to use iota's components for React, Angular, and Vue as well.
I've been torn on whether or not I wanted to go this direction, but with my focus shifting away from PHP somewhat and more toward node.js, I think it's time to create something different. Bootstrap is awesome, I've used it for several years and it has in a lot of ways shaped the way web sites look today. On the other hand I think it's dependency on jQuery is holding us back. They've both served us well, but it's time to move on.
Clay 1.0 will continue to use Bootstrap, as it is built into all of the apps and themes. Clay 2.0 will be very different in a lot of ways, I think moving away from Bootstrap at the same time is the best approach. I still plan to write Clay 2.0 in PHP, but there are some twists (not spilling the beans yet).