I forgot to list this last night, but I have some experimental code for it already. The Activities app is a stream app that will use Hooks to build a list of users' activities on the site. It will probably start out as an all-in-one list for the site, that can be broken down into individual users. It's the same kind of functionality Facebook started with, except they fed their's too many steroids. Eventually it will use a contacts system to allow users to network. Pretty typical for social networking functionality.
It's when the REST server comes into play that this app gets more exciting :) More to come on that line of thinking later.
Here are some apps and features I hope to be adding to ClayCMS over the next few of months (or at least working on):
- Hooks - Most likely part of the Apps application, Hooks will use the Services API to allow apps to share, display, or pull in features of other apps. The Filter app's use of Services will likely be a basis for this application.
- Forms app - currently there is an API named ClayDO (Clay Data Objects) that I have built a code-level form generator with. It uses the various form elements as objects and allows me to build entire forms from within an application's code. That Form API is a ClayDO object-type, but in the future I plan to extend it into an app that can be used to build forms from the user interface and Hook them into other apps.
- Objects app - potentially a replacement to ClayDO in the future, it's purpose is to have ClayDO's object relational mapping at the application level for more intuitive use of the UI and APIs.
- REST - REST is a way to move or manipulate data between systems using simple requests. I plan to build a REST Server and Client into Clay that will allow you to tranfer information between sites and services. The Client will be able to use REST services offerred from other sites, while the Server allows you to open up data to be used in new ways. [This is part of the reason I want to start a Data Context initiative between open source projects - to allow sites built on different software to easily talk to eachother.]
- Blocks app - I've worked on this quite a bit already, but I have some work to do to keep it in line with my performance goals for ClayCMS. Blocks will be similar to Xaraya's Blocks, but not nearly as complex. They will be more along the lines of mini-apps, more than likely.
- Pages app - This should be higher up the list, as it will likely come sooner than some of the others. The Pages app will allow you to use a WYSIWYG editor to put whatever content on a full page that you want. It will also have a few prepared pages, such as a contact form, that will fill in some missing functionality until more apps come along. I have considered using the Pages app as a type of navigation tool, allowing you to use Blocks and other Applications within a page (maybe even with shortened URL support). It will be simple at first and I'll build on it from there.
- Social app - I've worked on this one some. It is intended to offer social tools for other apps to use, such as Facebook comments, content sharing features, post to x social network, and other social networking features.
I've upgraded to the newest version of ClayCMS tonight. Yay! :)
There are many improvements over the prior version, although most of them are not apparent from the outside. You may notice the blog entries are formatted better, that's thanks to the new HTML filter, which allows me to display HTML that is considered safe. I no longer have to strip out all HTML in fear of something malicious being sent through. I also have the new Dashboard bar, which is my favorite feature of this CMS by far. You have to be logged in to experience it, but it makes things a lot easier. :)
Performance has been improved and a lot of the code has been optimized. To help with performance, I've added the pager, which means I don't have to display all 100+ blog posts as once (see bottom of this page). I've also cut the PHP memory usage down by almost 20%, which isn't a lot, but ClayCMS doesn't use a lot of memory anyway. Most of the Dashboard uses Ajax form submission, which also cuts down on resource usage through minimized output and processing.
I'm hoping the next upgrade will have Blog comments and the privilege system stabilized so I can allow user registration.
Finally, this site is now using the Clay Autoboot package, which allows me to run multiple web sites from the same code base. :)
I've been putting together some initial proposals for an initiative I plan to share with several projects around the Open Source community. The overall idea stems from my ambition over ten years ago to build a social web hosting service. I worked on it heavily for a few years and ended up stopping direct development and began developing the Clay Framework (in hope of building the service on the lighter-weight framework). My new ambition is quite different, but in a lot of ways an evolved version of my original goal.
I haven't found a good name for it yet. I am hoping the name can be a collaborative effort, but so far I've pinned some good keywords down. Data and Context, those two words are what it is all about. There are many different open source projects that build content management systems and ways to deploy web sites. They all use their own methods and have their own systems in place. All of them compete directly or indirectly with eachother, sometimes while maintaining working relationships with eachother. As far as I know, few of them interact with eachother on a data transport level.
Meanwhile, large social networks are flourishing, providing services that heavily benefit themselves overall. My strategy is to create an open standard that allows any web site to become part of a vast social network. I'm not going into details, just yet, but imagine that you have a blog that supports this open data context standard. Any web site or user across the web that also uses this context standard can be networked with you and your web site. All you have to do is interact with that person or site in some way, whether it is subscribing to their public activities, commenting on something they created or even replying to their comment. This strategy takes the overall concept of a social network and applies it across any web site that supports it. Of course the hard part is creating a standard context for data to move from web site to web site, while also allowing the users and web sites to filter and share data as desired. I do have some ideas to provide barriers for misuse and to differentiate which kinds of data are shared or even accepted.
I'm hoping to get many other Open Source projects involved and to create a standard that will allow us to create a vast social network. It's entirely possible, we just have to do it.
I've started development on a new application for ClayCMS named Filters. The app uses the Services API to provide filters and other text/data handling features to other applications. The HTML filter will be the first filter to be added to the new app. It validates and tidies HTML output, while filtering out anything not allowed.
As a service provider, the Filters app will allow other applications to extend it. That means new filters can be added via other applications to perform functions like autolinking, wiki pages, and any other feature that transforms text before it's displayed.
I'll try to write up a blog on how applications use the available services in the near future.
I've been working hard on ClayCMS. Here are some of the changes: new Dashboard Toolbar - the toolbar features action icons for displaying the Dashboard and performing various actions; new Dashboard Message system - a notification system to relay status messages and errors when performing actions, such as adding new items or editing and deleting items; new System message API for sending notifications to the Dashboard Message system; new AJAX form handler for Dashboard items - add/edit/delete items without refreshing the page, supports the Message system, and it's built-in (just use dashForm in your ID attribute to your form and the AJAX handler does the rest); new dashlink CSS class to open items in the Dashboard from anywhere on the site; improved customization - many of the test styles have been moved to style sheets for theme overrides; built-in support for Gravatar.com avatars - register your login email address at Gravatar and it works automatically; and lots of beginnings for other new features.
As you can see, the Dashboard has remained my primary focus. It is the central focal point for site administration and content features, so it is important to have it working as well as possible. I've also started on the User management tools, added lots of settings to be changed in the Site Settings dashboard menu, began the management tools for Privileges and Roles, and fixed lots of bugs along the way. I've had quite a few issues trying to decide how to implement the user profiles, blocks, and the dreaded main menu. With the work on the Dashboard moving into maintenance mode, those will begin to attract more of my focus. I've also started on a Social Tools applications, for support of features from Social Networking sites and a few of my own. Facebook comments and things like that will likely make it into that.
2 Years ago today I watched an amazing young man lose his life. It's something I can never forget. We miss you Rich.
I've been working steadily on ClayCMS for a couple of weeks now. The Dashboard is becoming extremely useful and I've made many improvements. ClayCMS is kind of in the middle of stable versions right now, so I will probably wait a few more days or may be a week or so before I update the site here. It's going to be a decent change though when it happens. :)
Hopefully more to come in the near future about clay-project.com and Clay Framework's Alpha 3 release.
I've moved a lot of code around and created new repos. Now it's time to settle in a little. I've decided to rename the repo currently named clay-installer on Github, to clay. That should simplify things quite a bit, since clay-installer now includes the clay-framework repo's stable builds. The clay repo will house the latest mature code from different packages. ClayCMS will get it's own repo, for now, named claycms. It will not be the full code, like clay, just the pieces that make up ClayCMS. Over time ClayCMS will be merged into the clay repo, I have yet to decide if I will release a standalone version of ClayCMS. Anyway, this should simplify things and lighten the merge nightmare I have been dealing with.
Sculpt is a name that I've used for a few things so far, but it's never stuck. Maybe this time it will.
The concept is a little different from the standard Content Management System, such as ClayCMS. It's one that I've tossed around in my head for a years now, mainly because it's very complex on the code side and very simple on the user side. Let's just roll into it, shall we?
Most CMSs have a structure designed to be built upon, such as modules, applications, plugins, hooks, etc, and they used by developers from the bottom up. You have core functionality and build upon that functionality to create new functionality. The idea behind Sculpt is to have a system that builds upon itself as the developer builds in parallel. It requires a dynamic system of models, views, and controllers to allow a developer to create functionality based on events, instead of writing code.
For instance, if the developer wanted to create a blog, s/he would (from a user interface) describe what the blog needed to work, how it would look, and what it would be called. Sculpt would then use that information to build the blog. Then if the developer wanted to create something else, say a photo gallery, Sculpt would build it, and then offer cross functionality between the blog and photo gallery. So now, you can post images in a blog post, which adds an image to your gallery. Or, you could add an image to the gallery and write a blog about it. The concept is building vertically and horizontally at once, whereas the conventional system builds vertically or horizontally, but not both.
It's been really hard not to branch off into CF 2.0 territory. I see a lot of places the new PHP 5.4 features will be useful and it's driving me crazy not to jump into it yet :) Alas, I know I need to keep CF 1.0 as PHP 5.3+, so that means I have to keep pushing with what I have for now.