I've been working on Data Objects quite a bit lately, mostly planning, but some code as well.  The idea I have of DO has changed over the years, it started out super complex, then I slimmed it down to a simple library - used to implement my forms - and now, it's going back somewhere in the middle of the two.  I'm beginning to remember why I pulled back and decided to go toward a plugin system first: Data Objects, in it's original idea, is a beast.  It's a gentle beast, but a beast nonetheless. 

I've decided to skip the kid stuff and make it what it was originally intended.  What I've come up with is similar to my original notes, but with a little experience mixed in.  I'm still experimenting, so I don't want to go into to too many details just yet.  The goal has always been to use DO to simplify application development and it's looking like I'm on the right path for that.  I will try to put up a flow chart of how I envision DO to work within applications and display how they should simplify development.  

On a final (if lengthy) note, I want to make something extremely clear.  While inspiration for Data Objects came from Xaraya and perhaps even Drupal's nodes in some ways, Data Objects in Clay have never been intended to replicate DynamicData or Nodes.  Nodes (Drupal) provide an interface to hook in content and provide user input, in it's simplest form, while DynamicData (Xaraya) was intended to extend application (modules in Xaraya) functionality.  I think the problem with both of those is they accidentally discourage application development.  Xaraya was by far the biggest victim of that, as the Articles module (and later the xarPages module) could easily be turned into anything by hooking in DynamicData and editing a few templates.  It was great for the user, but not so good for project growth.  The hope of Data Objects is to provide structure for applications and a means for applications to extend one another.  If all goes well, Clay wont need Plugins or Hooks, you'll simply be able to attach a Comments object to your Blog application object and you'll have comments on your blog posts.  The end all goal for Data Objects is to be able to design an application from the UI, save it, then export it or install it, or both, and use that application to extend the abilities of another.  There will always need to be some development involved, unless everything is just generic, but the end all goal is to encourage application development and make it as easy as possible. 
2:13 pmGearing Up
I'm gearing up to start work on Clay again.  I had a false start about a month ago, but I've been updating all of my development software today and doing a code review.  It's hard to believe you can forget how something works when you actually made it...  

After delaying my Data Objects implementation to wait for Clay 2.0, I've decided to go ahead with it.  I may or may not finish Plugins, depending on the performance impact of DO.  This decision is based on my lack of development lately, as well as implications for the project.  Data Objects will allow applications to run as instances, instead of as stand-alone entities as they do now. It makes a site a little more complicated to administer, but it also opens up the possibility of having multiple web sites running on a single installation of Clay, not just multiple site installations running on a single code base, as we have now.  

I hope to get Data Objects finished rather quickly, implement the menu system (which will use DO), and get it all released. There's a lot more to it than just that, but I'm trying to focus on those three points.
5:49 pm
My plans for are to offer two different types of services that will hopefully transform the way we think of social media. The first type is much like self powered hosting services already out there, like Wordpress. The difference is an ability to network the individual web sites into social networks that are connected by protocals instead of physicality, fundamentally changing the meaning of the user base. The second service opens up this protocal to be used by any web site with a public ip address. Sounds fun right :)
4:57 pm
I'm hoping to have a Clay release ready soon with plugins ready. From there I dont plan on making a lot of changes to the code base before 1.0 and spending some time pushing out applications. The plugins are a critical piece to reaching that 1.0 milestone.
6:34 pm
It's been a while since I blogged, so here ya go. I've been too busy with work the last few months to do much else. That should slow done soon so I'll be around a little more often. I'll be working on Clay again and working toward 1.0 again. I will also be working on a closed beta of I'm hoping that will help push me to finish Clay. It will be used as a web service to compliment Clay and provide professional services built using Clay and Passage.
Unfortunately, I missed the July release deadline for the final Clay 1 beta. I'm working on a new road map revision, but I'm hoping to just push it back and month, along with a few adjustments to the milestones. July was a very busy month for me and I was just not able to put the time into Clay that I needed to finish the last beta. It happens.

I'm hoping to finish the Plugins (hooks) functionality and release it whenever it is ready, sometime in August. As I've stated before, Clay 1.0 will be kind of bare in apps and themes, but that just gives it room to grow into 2.0. I'm hoping to have several content apps available by the 1.5 release, which will be the divide into 2.0.

I would have probably had the Plugins functionality closer to completion, had I not been remapping some integration concerns I've had down the road for the Objects application and Data Objects module. Plugins in Clay work similar to plugins for a browser or other desktop applications.  Plugins in Clay allow you to plug in a specific feature offered from one application into another application, such as comments or a hit counter. Data Objects and its front-end, the Objects application, are similar, which has often tempted me to skip the plugin implementation altogether. I've mentioned Objects before, but in a nutshell they are a mixture of container objects and functional properties that can be stacked as needed. An example is a form, where the overall form is a container and each field in the form is added as a property.

The current plan to is continue implementing Plugins and to implement the Objects functionality as a plugin. Eventually, a lot of the functionality now offered as Services will be moved to either Plugins or Object properties and Services will become a lower level background facility.  It's all a progression of implementing new features and migrating current functionality into better suited facilities as they become available.

With school, work, and a family, it's difficult to put as much time into Clay as I'd like. Some help would be nice though.
I am pleased to announce the latest release of Clay, version 0.9.20.

Download it from our Google Drive here.

This release features a new upgrade tool, built into the Clay Installer. It is the first release that allows a direct upgrade from the previous version. To access the upgrade (or install Clay) go to install.php in a browser. If you are upgrading, an upgrade link will display next to the Web Site Configuration name. 

This release includes several fixes and enchancements, including:
  • Clay Installer fixes
  • Clay's Installer Package now lists all modules and applications affected during an upgrade
  • Several modules and applications were correctly associated as Core items in their info files
  • Sessions data field updated to TEXT instead of VARCHAR (bug fix)
  • Added Plugins module and application (not fully implemented)
  • Added a stylesheet for the pager
  • Performance updates in the Dashboard
  • Performance updates in WYSIHTML5
  • Autoboot Package bug fix (critical)
  • Optimized Privileges module (data caching)
Check out the release and let me know what you think.
I started school last week and it's taking up a little more of my time than I had planned. I should still be able to manage the Clay release schedule, I just have to work out the time management aspect of the change.

I am also in the planning stage of a major addition to the Clay project. This addition will be a long term project and will likely not get off the ground until closer to Clay 1.5. With that said, I am in the process of creating an Android starter application that uses data API services from a Clay website. The idea is to provide a starter application, so anyone with a Clay website and and a little extra time can provide their own Android companion application.

While the Clay-side features can be used for any mobile OS (including the the application layout), I only plan to provide the base application for Android. iOS may be supported later, but this is an open source project and Android is also open source (read that however you wish)
1:24 pm
I'm considering issuing another supplemental release, before the scheduled Beta 3 release later this month. It will likely be 0.9.16 and would be the first version of Clay with a working upgrade functionality. Consider it an Alpha version to 0.9.20 :)

I just started school again yesterday, so I'm trying to cram as much coding as I can before my class "gets real".

It has been so hard not to start on Clay 2.0... I don't understand why I can't just finish something before I move on to something else. On a lighter note, I've decided the best way to document Clay is from within. One of the plugins I hope to have implemented by the July release will be a built-in help system that pulls data from a git repository. The source may change as Clay evolves, but I thought that would be the best way to build up documentation and not have to release a new version just to update docs. Other developers, if they exist, will be able to push their docs into the repository and keep them up to date as well.
I've began work on the Clay Plugins system, which is the new name for the Hooks System I've mentioned lately. Plugins allow applications to offer pieces of functionality to extend an existing application. One of the first plugins I plan to make available is a comments system, which can add comments support to content items.

Plugins are an important feature for Clay 1.x and will enable a lot of expansion and changes. They are a stepping stone between the Services feature now provided and the future Data Objects model, planned for Clay 2.0. Even though Clay is just now approaching a 1.0 release, the code base has had a long development life span and this is an evolutionary step toward a new Clay.

Originally, I had planned to implement this functionality as an application that used the Services feature. As I looked forward, I realized a move away from Services would provide a better upgrade plan. The goal is to move all of the Services functionality toward plugins, for Clay 1.5, which will then move on to Application Data Objects when that feature is implemented for Clay 2.0. 
4:23 pm
Finding myself fighting with myself over why I'm creating a Hooks system that will be obsolete in a year. The reason though, is it would take a year to finish the alternative and I only have until August before my self-created Clay 1.0 deadline.

Oh well, Hooks now...Data Objects in September ;)
Even though I just released Clay 0.9.15 yesterday, the next scheduled release on only about 3 weeks away. I only have less than 3 months to have Clay ready for the scheduled 1.0 release in August, so there's lots to do!

For Clay 0.9.20 (June), I hope to finish implementing the Hooks system and have the upgrade functionality working in the Installer. I also have quite a bit of documentation to write, so I'm hoping some of that will be done as well. Beyond that, I plan to try to finish as much of the started-but-not-finished apps as possible. If I can add an app or two, then I'll be happier, but finishing what's started is a key goal for this release.

I hope for Clay 0.9.30 (July) to mostly be about performance enhancements and cleaning out as much unused code as possible. I have so say there are a few areas I'm not happy about performance, particularly in the Dashboard.