This is the official v2.3.0 release. It is dropping a little over a week from Release Candidate 1. We simply wanted to make sure the new CI/CD workflow was functioning before calling the release final. We feel confident that we’re good to mark this release as final. There are no new enhancement or bug fixes in this release from 2.3.0.rc.1.
We are glad to announce that the CFWheels Guides have been moved to GitBook.com. The good folks at GitBook are proud to support CFWheels and have granted us an Open Source Community account. We have migrated all the guides from our old provider to GitBook and will be making some more changes as we review all the links now that the domain has been switched. A few things you’ll notice right off the bat.
There is now a PDF download link to the right of the screen when viewing the guides. The link allows you to download the section you are on or the entire CFWheels Guides. Which by the way, is nearly 300 pages long. There is also a new search feature that will allow you to find topics easier. But the biggest change comes from the fact that by moving to GitBook we were able to move the guides to GitHub as well.
In fact the guides have been added as a sub directory in the cfwheels/cfweels GitHub repository. By moving the guides within the codebase, you can finally include both code changes and documentation changes in the same PR. This will make the guides more accessible to our contributors and make it easier to keep the codebase and guides in sync.
Please have a look through the new guides and let us know what you think. Oh, and if you find something that needs to be updated, you know the drill, clone, edit, and submit a PR.
As you may know, many years ago CFWheels embraced the distribution of Plugins via ForgeBox packages instead of maintaining our own directory. But the framework itself remains illusive. There was some work done in the last few months to put up packages for the framework but those packages were being maintained by hand which made them a show stopper for a long term solution.
Well, thanks to a new CI workflow based on GitHub Actions we now have the building and publishing of the packages fully automated. Giving credit where credit is due, the new workflow borrows heavily from the ColdBox workflow. It used GitHub Actions, Ant, and CommandBox to automate the process.
So what does all this mean for you, let’s cut to the chase. This means you can now install a fresh copy of the framework using the following command:
box install cfwheels-base-template
This will pull down a copy of the latest stable release of the template files and then pull down a copy of the latest stable release of the framework via package dependencies. In fact the CI workflow mentioned about publishes two packages cfwheels which is the core framework directory and cfwheels-base-template which is all the other files you need to scaffold the framework.
We’ve even backfilled all the prior released versions of the framework all the way back to version 1.0.0. So you can install a particular version of the framework using the following command:
In addition you can install the bleeding edge which includes all the work in process towards the next major release using:
box install cfwheels-base-template@be
And if you ever just need to get a copy of the latest framework files simply use the following command:
box install cfwheels
All this means that upgrading to a newer version of the framework should be much easier going forward. Frankly you should just need to modify the version of the dependency in the box.json file and issue a box update command. But we’ll document that more fully when we make our next release.
For now please feel free to play with all this package goodness and let us know if we fumbled anything.
We are happy to announce that CFWheels has joined Open Source Collective. According to their website, Open Collective enables all kinds of groups to raise, manage, and spend money transparently. We’re also in good company in the collective. Other projects hosted by the Open Source Collective include Lucee, WebPack, PHP Foundation, Vue, LinuxServer, ESLint, Bower, Svelte, and the list literally goes on and on.
So what does this mean for CFWheels. Well, it allows us to finally be able to accept donations from our community. Many of you have offered your donations to us in the past but we really had no good way to do accept them legally. Plus we felt strongly that as an open source project we needed to adopt an open and transparent accounting practices. As a member of the collective, you’ll be able to donate and see every dollar we raise and what it is spent on. Creating a sustainable ecosystem is important for the long term viability of the CFWheels project. So how do you donate, visit Open Source Collective directly or any of our GitHub projects and look for the Sponsor this project link in the right side bar.
We’ve already received our first monthly donation and we are truly grateful. These funds will allow us to offer bounties for small issues or bugs, commission larger works, and pay for marketing, logo, or branding services.
Have you looked at the CFWheels Example App lately? If you’re wondering, wait, there is an example app?, you’re not alone. Tom has done a great job putting the CFWheels Example App together but historically getting it up and running was somewhat difficult. It requires a database to be setup, a datasource to be defined, and migrations to be run.
With the help of our new templating structure and some improvements to the CFWheels-CLI commands, getting the Example application is a piece of cake. All you need to do is issue three commands inside a CommandBox shell and the app magically opens up in your browser.
So lets get started:
wheels g app name=example datasourceName=exampleh2 template=cfwheels-template-example-app --setupH2
package install
server start
So what do those commands do for us. The first line is the longhand way to install a fresh CFWheels app using one of the published templates from Forgbox.io. This command gives the application a name, sets up a datasource, and configures it to use the built in H2 database in the Lucee CF Engine. (Are you wondering, wait, Lucee has a built in database engine?) The next line installs all our development and production dependencies into our application directory. Lastly we start the Lucee server and the application launches in our default browser.
You’ll initially see the installation verification screen.
Once you click on the Reload button, the application will reload and launch the Example App.
At this point you can login using one of the default user ID listed below.
I hope you enjoy playing with this Example App and it serves as a learning tool as it was intended. Please share your experience in the comments below.
EDIT: The Lucee server that starts up will have cfwheels set as its admin password.
Posted in Community | Comments Off on Getting the Example App Up and Running
Why should only <a> and <form> be able to make HTTP requests? Why should only click & submit events trigger them? Why should only GET & POST methods be available? Why should you only be able to replace the entire screen?
By removing these arbitrary constraints, htmx completes HTML as a hypertext
Motivation behind htmx
So what does this all mean? Well, in its simplest form, it means being able to build modern web applications with the UX that users have come to expect, with the HTML, CSS, and the backend technology of your choice which in our case is CFML and CFWheels.
So I decide to see if I could build the TodoMVC project using no hand written JavaScript and only relying on HTML, CSS, and CFWheels. I downloaded the template project and took a look at the application specs to get an idea of what to implement.
Here is the video of the running app:
So if you want to run the app locally, you’ll need to have Commandbox installed and the CFWHeels CLI commands for CommandBox installed as well. With those two items taken care of, launch a CommandBox and issue the following commands.
wheels g app name=todo datasourceName=todo template=cfwheels-todomvc-htmx --setupH2
package install
server start
Let’s look at those lines and talk about what they do. The first line wheels g app will download the template app from Forgbox.io and create a CFWheels application and name it todo. It also create a H2 database and configures the datasource for you. The next line will install all the dependencies of our app. These include, a few CommandBox modules to make development easier, the CFWheels core framework directory and place it into the wheels folder, and install the H2 drivers into our Lucee server for out application. The last line will start our Lucee server. I’ve also added a setting to automatically run the Database migrations on application startup so the database schema is created.
You can checkout the code on GitHub. Let me know what you think.
EDIT: The Lucee server that starts up will have cfwheels set as its admin password.
I was waiting to have more of my thoughts and plans ironed out before posting this message, but due to the intense interest from the community I’ve decided to post what I have, however premature.
As many of you know we have had some changes in the CFWheels core team. Several of the core team members, have decided to reduce their level of administrative involvement in the project and have stepped down from the core team. I have volunteered to take the reins of the project and we are in the middle of passing the baton as it were.
So what does this mean for the CFWheels project?
Well, the fact that there is a transition in place at all, means the project will continue to live on. The CFWheels project has been around since 2005 and during that time different individuals have held the reins and guided the project along. This time is no different. I hope to be as worthy of a steward as those that have come before me.
So what are my thoughts for the future of the project?
From an administrative perspective I want to see what structure to adopt. Whether it is the core team structure we have had in the past or perhaps a more advisory committee structure would be better. We need to take stock of all the code in flight at the moment and try to get a roadmap sketched out. Setting up a funding structure for the project vis-á-vis Patreon.com, IssueHunt.io, BountySource.com, or OpenCollective.com. And finally looking at the legal structure of the project and if there is a need to formalize that by creating a LLC or 501.C corporation.
At this point I have more questions than answers but I welcome your feedback and look forward to your support.
David Belanger and Tom King from the CFWheels core team chat to host Michaela Light on the CF Alive Podcast! Have a watch/listen and share far and wide…
You can view the original post on the TeraTech website here
Over the past ten years we’ve been very lucky to have some great developers being part of the CFWheels core team. Unfortunately every now and then, we have to let people move on to other things as their jobs or circumstances change, and sadly we’ve had to say goodbye to Per Djurner (@perdjurner) and Chris Peters (@chrisdpeters) recently.
Both have contributed massively to CFWheels over many years: I think there are a lot of people who can blame Chris for his original series of screencasts getting them hooked (myself included!) on Wheels, and I’d wager that every CFWheels user has benefited from Per’s knowledge and guidance; both of them will be missed – a huge thank you to both of them.
Welcome to David & Andy
We’re pleased to announce that David Belanger (Github/dbelanger) and Andy Bellenie (Github/andybellenie) have agreed to join the Core team. Andy used to be on the team a few years ago, and brings lots of years of CFWheels experience with him. David joins us from Argentina (and occasionally Canada), making us a highly international group, with Tom & Andy in the UK and Adam over in Australia (unfortunately, with very few timezone crossovers!). It’s fantastic to have them on-board.
Up Next
Our next milestone is finishing up a 2.1 release: Please check the 2.1 Milestone to hear about upcoming features such as improved CORS headers, and also check the Changelog for all the bug fixes and improvements already implemented since 2.0.1.
It’s slightly hard to put an exact date on it, but this year (probably) celebrates 10 years of CFWheels!
Obviously, in the internet age, 10 years is an awfully long time. The first mention I can find if from Pete Freitag’s “Get Wheelin” blog post celebrating CFWheels 0.1 in November 2005. Rob Cameron, the original author moved over to Rails full time a few years later: you can catch up with him at http://ridingtheclutch.com/. Over the years there have been a lot of contributors – whilst our GitHub repo hasn’t quite got that (very) early history, since Jul 23, 2006, we’ve had:
2825 commits (Per Djurner has the dubious claim to fame of the first commit, and at time of writing, the most recent too :))
22 Branches
43 Releases
76 forks
453 issues
Whilst there was a “bit of a break” around 2012/13, Wheels has been going from strength to strength. Contributors have changed and moved on, and so have core team members. Our thanks go out to all of them!
Welcome Adam!
We’re very pleased that Adam Chapman (@chapmandu) has agreed to join the CFWheels core team! He’s been a long-time supporter of wheels, we’re very glad to have him on board. We expect great things AC…. great things. 🙂 You can find Adam’s blog here.
CFWheels 2.x:
Lots of chat at the moment about the next major release of CFWheels – please do get involved on the Google group if you’ve got ideas. At the moment, amongst lots of micro improvements, we’re looking at:
integrating the ColdRoute plugin into the core: ColdRoute allows you to define RESTful resources through new expressive routing helpers and controller conventions. It also allows you to organize controllers and views into subfolders via “namespaces” or “modules.”
improving wheels as a true RESTful service provider: you can already return JSON, XML and lots of other good stuff, but we’re looking to improve things like setting custom headers, and really controlling your APIs response
improving the plugin architecture, and generally looking a more “modular” way of doing things.
dropping CF8/9 support; dropping Railo (as you should all be on Lucee now!!)
better Commandbox support: we’ll be looking at CLI type stuff to make getting going with wheels even quicker.
Got an idea? Get on the Google Group and let us know!