I have the core apps from Clay 1 working in Clay 2. I have some cleaning to do and some restructuring, but they are functional. The code looks different, easier to read and less spaghetti. The new file structure definitely cuts down on the learning curve as well. You also have more obvious control, whereas it was more cloaked by default behaviors before. For instance, every template is identified explicitly in each app component, while Clay 1 would allow you to specify the template. Also the object has control over output, whereas before it was from a return value. This allows you to use things like event or data-centric driven apps and is a quite different from traditional PHP applications. So far all of this has led to improved performance and fewer stack dependencies.
I have the Clay 2 installer working, it's very basic, but it works. Most of the issues I had getting it working were with namespace or file structure changes, but it depends on a lot less code than the Clay 1 installer. My friend Mikey will be taking it over and doing the bulk of work on the installer from here.
I'll be moving on to upgrading apps and themes, while rebuilding some of the subsystems and adding new features. A lot of the upgrades i can do with simple search and replace. Others will be cutting down on inconsistencies. This is a rewrite so, even if I'm not starting from scratch, there is a lot of work to do on all fronts.
I've been rewriting many of Clay 2's modules to be easier to use and document. Over the years Clay 1 became muddy and a lot of functionality was plugged into places it, probably, didn't make sense. Functions accepted a lot of parameters or large arrays filled with overly verbose data.
Clay 2 is already a lot easier to read and I'm working on slashing duplicate code and simplifying as much as I can. This rewrite is changing the way Clay looks, but not very much how it works. I'm liking it and I feel like everytime ao far has been an improvement in one way or another.
I also feel like Clay is becoming more consistent amd changing the file structure has helped toward that goal. It's really kind of amazing to look back at older code and see how much Clay has progressed. This should probably be Clay 4 or 5, based on rewrites before it hit 1.0, but it's definitely not 1.0 any more.
I've been working on a new hosting project that will be supported by Clay 2. I've had the idea for a long time, but someone recently beat me to it so I'm joing their project. Some of the features I had thought of weren't previously being considered and vice versa, so it's going to be even more amazing. I'm in the process of setting up a local version with distributed storage on a NAS I built with a Raspberry Pi. I can't go into too many details, as usual, but the web wont be the same if it's all successful.
I recently blogged about Clay2 and I've been working on it when I have time. Another tidbit I haven't mentioned, at least in a while, is Clay2 isn't only going to be developed in PHP. It's going to use other languages, where PHP falls short. Clay2 is more of a server suite, than just a CMS, using node.js and other languages to provide features Clay1 can only dream about. Clay2 will even be able to function as a headless CMS, by providing realtime data that can be plugged in anywhere, while maintaining all of it's security and role-based access. The privileges system is even being extended into a new installer, which means users can (if given access) create Clay2 sites or data stores on demand. Many developers hate data and treat it like a second rate citizen, but Clay2 is being built for data.
Everyone seems to have a youtube channel...so I'm going to have one. It'll be boring, obviously. I'll add a link when I start uploading.
I've been building the Clay 2 installer, which is quite different from Clay 1. Clay 2's new structure allows the installer to be a Clay app, instead of a separate instance of the Clay framework. The framework and cms will be merged and allow you to build installations where you select which modules and apps are considered to be a part of the core. This was previously done through packages in the installer, but required duplicating processes.
The processes are no longer duplicated, as each instance will have a lower level of control over the code base. Higher level functionality will require a range of compatibility, but that is taken care of by using traits for libraries and allowing modules and apps to extend classes as needed. Many former libraries have been converted to modules.
Clay 2 will also adhere more to widely accepted coding standards, utilize a file structure based autoloader, feature a new template system (separate from the app object), and use fewer static classes. I say will, but most of that is already started or implemented.
You may have heard of the Beaker Browser, which is based on Chromium and supports an alternate HTTP protocol named DAT. I have read about DAT and found Beaker while reading into it. The idea behind DAT is to allow you to share data P2P, whether it's files or a web page. Beaker has taken that idea a step further and incorporated seeding, so your data can persist without you to be shared.
This is right up my alley and something I'd like to push even further. I've always been a proponent of distributed systems and giving the internet power to the people.
...I swear. I had shoulder surgery in July so I've been out of commission for a while. I'm slowly trying to work in some dev and have some new ideas I'm working on. I will be diving back into Clay 2 soon as well, but I can't code for hours on end yet so it'll be slow for a while. What I have been working on is a desktop app and I plan to do a mobile version as well. The app is different from anything else I've seen and targets a few specific markets. It will use a lot of web api functionality that will pull from Clay 2 and Clay's transaction server (which I've never put into production use). Clay 2 will be quite a bit different and the desktop app is the first test for it.
I've moved all of my private repos. It's not because I don't trust Microsoft... it's because I don't trust their developers. I don't think Microsoft would do anything to jeopardize their new love with the FOSS community. On the other hand, in a world of quotas and time restraints, I dont want my software in the hands of another software company as big as Microsoft. Eventually I'll host my own private repos.
I've been working on a few things in Clay 1.3 and getting ready to shift gears for a stretch of Clay 2 development. In Clay 1, I'm working on DataObjects (DO) and a Forum app. DO is a way to group features by objects and allow apps to use them as if they were native to the app. At least that's the abstract description. The Forum app is just a simple message board, which uses the Comments app for threads.
The Clay 2 work will mostly be rebuilding the installer to be an app within Clay, rather than a separate entity using the Clay Framework.
Microsoft has announced it has acquired GitHub for $7.5B and a lot of people aren't happy about it. I've been looking into alternatives for my private repositories, but I may leave the public ones on GitHub. The problem is I can see some other corporations reacting by making similar moves.
I've been evaluating new services, both by quality features and potential acquisition cost to determine if I should move or if I'll just be looking for a new service again soon. I predict an explosion of growth (at GitHub's expense) soon for a few services, so I can see how one service in particular could exceed $10B in the potential acquisition cost in the near future.
I may have to take my private repos off the grid. I don't want to, because sites like GitHub are cheaper to use than hosting the projects myself. There are also few choices on the open source front for direct GitHub alternatives. Is Microsoft trustworthy? Unsure if I want to find out.