Call for Contributors
Okay, here's the scoop. I make no secret that I consider myself to be pretty competent... In fact a number of people over the years have come to the conclusion that I'm downright conceited. :) On the other end of the spectrum a CF user group manager in Florida once in response to the question "who here has worked with x" at which I was the only person to respond said "well obviously, because Ike's done everything". I took it as a complement.
The reality is I'm just one guy and no one person, no matter how smart or how little they sleep can possibly know everything there is to know about ColdFusion, much less software in general. That being the case, I've always had a vision of the onTap framework being host to an array of plugin applications that operate as "services" to one another, creating a powerful software synergy between open-source projects and commercial products provided by entirely different people.
You would use the onTap framework as a foundation and then you would install the Members onTap plugin for managing your user information, onContact for contact information (my own commercial app), and then you would buy and install a CMS from some other vendor and a shopping cart from yet someone else. And all these applications would work together without requiring any tweaking or integration on your part. All the integration would be done for you by the framework!
Does that sound really cool? Well there's a name for it, it's called a Service Oriented Architecture (SOA) and it's something Sean Corfield has talked about a fair amount recently. Much of the underlying structure for this already exists ... in fact, most of it has been in the framework for a long time. The recently released Version 3.2 of the framework merely simplifies the management of these services and improves performance.
However! I don't know everything. I recently realized that I was somewhat behind the curve on caching techniques and I blogged at the time about starting a new project called CacheBox, which I plan to include in upcoming releases and hope will be used by other frameworks as well. And although I've had several people tell me already that they're interested in this new project, it's currently on hold. Why? Because Rob Brooks-Bilson is giving a presentation at the Adobe Max conference about advanced caching techniques for ColdFusion and I want to get his notes and pick his brain some before I make much more progress on that project (although I won't be at Max).
And herein lies the problem. I'm just one guy. I can't know it all! And I can't do it all! I've got loads of things I want to do, many that I've wanted to do for a long time, and just not enough hours in the day to do them. I need some help to make these projects fly. I've actually wanted more people to be involved in the onTap framework and contributing for a long time -- years in fact, since I started working on it. I honestly don't know why there aren't more people using it. There are probably a variety of reasons, but there's been very little feedback.
So this is my public admission that "I SUCK AT MARKETING" and at the same time an open request for more people to contribute.
So how can you get involved?
There are several ways you can contribute to the onTap framework.
- Make Suggestions: Simplest thing you can do. Is there something you've always wanted to be able to do with CF and haven't been able to figure it out? Email me and I'll see what I can do. And if I can't find a project that does it and I can't do anything about it myself, then I'll blog about it and we'll see if the community can provide a solution!
- Write about it: You can download it, check it out and write a blog about your experiences, good or bad, BOTH HELP! If you've tried it and had a bad experience, write a blog about it and shoot me an email. It may very well be that you had issues with something I myself didn't like and have since improved - OR - if not then I may be willing to work on whatever issue you're having. The worst case scenario is that we disagree about how to write software, in which case we can agree to disagree... but you won't know until you ask. :)
- Documentation: If there's anything you don't understand about the framework, or would like to understand better, just ask. If I've omitted anything in the documentation or if there's anything that could be better explained, I'm more than happy to update the documentation, and would love to include your articles or examples as well if you'd like to write them, it would help me out tremendously. :)
- Review / Contribute Code: Look over my code and see what you find. If you can improve it -- performance, better functionality, better security, whatever, send me your revisions and I'll see about including it in an upcoming release. Even if it's just comments in the code - I know a lot of my code doesn't have a lot of comments. If you're scratching your head, ask, I don't bite. :) And we can add comments wherever they might be useful.
- Write Plugins: DataFaucet is a good example of this. The DataFaucet ORM framework includes an onTap framework plugin in its distribution. What's it do? Not much -- all it does is act as a facade for integrating the DataFaucet ORM with the onTap framework. The installer may be a little involved, but guess how big the guts of it are? TWO files... yes, two. Not two-hundred, not twenty, TWO. Beyond that, the rest of the plugin is the installer... the installer is actually much larger than the plugin itself! What I'm really getting at here is that creating a plugin for the onTap framework is really easy to do and you may even already have a project or application that would work well as a service like DataFaucet or as a sub-application. Do you like Transfer? Would you rather use Transfer than DataFaucet? Write a Transfer plugin! I'm sure Mark would love to include it in his Transfer distribution and And of course, if you have any questions about how to write the plugin or the installer, just ask, I'm happy to help!
I'm looking forward to working with you!
ike

You're not the first person I've heard say that a physical tome helps "make it real" for them. And it's honestly a sentiment I can relate to myself in spite of the fact that I so rarely buy the books because I'm so busy and so broke. :P
Do you think a printable ebook on Lulu would be enough, or do you think I should actually make a cover and sell a bound edition? Of course, if I put one together I'm going to want to get some help with the editing before I publish it. I may ask Jeff Houser and/or Judith Dinowitz to give me a hand. But I'd love to get feedback from as many pre-release readers as possible. :)
I'm not sure if you need to go all out and get a book published. The only other framework with a published book is Fusebox, and that was quite a while ago. I know that onTap has documentation included with the framewok, but I still think putting some docs online on a web site with some quickstart guides should be first priority. Some people just like to see what it's about before even downloading it. Then once you get a growing user base, it might be worthwhile to think about a printed manual down the road. Just my 2c.
I'd have a wiki with basic info, a concise getting started guide, building your app guide, some basic examples, advanced sections, sample apps, etc. Coldbox is a good example, or jquery. Until people see those things, and can play with something, it's too much hassle to figure out just to know if you'd want to use it.
I think you need first to summarize concisely on the hompage of the project why anyone should use this framework. Is it faster than others? Easier to develop with (why)? More docs? Seriously, why would I consider onTap over Coldbox or...? Your framework comparison is good, thank you, if long and maybe in need of some js to open/close sections, but I mean something more concise so people can say, Yes, that's my style and what I'm looking for. SOA architecture might be a good idea, but I don't really know anything about it. (I do know Coldbox allows plugins.)
A single site with info, wiki, forum, bug reports, would be good.
I would also think open-source compatibility would be a very strong quality in a framework as well. Too many rely on CF7/8 only. I use BD now but the new Railo is going to rock, I think.
Right now there's a quick-start guide on the framework web site -- if you hit the "documentation" link. The home page of the site ( http://on.tapogee.com ) is not very clean right now because it's new and I've been working on a bunch of different things and haven't had the time to really give it a layout. I want to get to a place where the navigation is clean and intuitive, just not there yet. Anyway, the quick-start section of the documentation may be the kind of intro you're looking for, the sort of thing you might want to see in the Wiki.
I've been giving some serious consideration recently to the idea of recreating the onTap framework "livedocs", which is something I did a long time ago where the framework's documentation worked much like the Macromedia livedocs (now Adobe livedocs) with blog-esque comments at the bottom.
At this very moment I'm uploading a couple of video screen-captures to YouTube showing "one-click installation" of plugins, which is the SOA approach at work. That's what differentiates the onTap framework (SOA) from say ColdBox (OO/MVC). What is meant by "plugin" with ColdBox or Mach-II is that you can write CFCs and configure your framework to use them to modify the behavior of the framework ("low level" changes). What's meant by "plugin" with the onTap framework is "high level" sub or peer application functionality that can be installed via the browser in much the same way that you might install add-ons into Firefox. Note that when you do install add-ons into Firefox, there's no programming involved. You're not editing .ini or .xml files or anything, you just click and they install.
In order for that to work the framework needs to have systems in place internally for managing multiple applications and allowing them to integrate with each other in an automated way. The use of XML configuration files with Mach-II might make it a little easier to do that to some extent in Mach-II than in ColdBox, but there's not been any interest in doing that in the Mach-II community as far as I know. The same could also be said of Fusebox, although the problem there is that the recent versions of Fusebox offer several wildly different architectures which could easily make those kinds of integrations challenging. ColdBox is a decent OO/MVC framework, but it's "flat" in the sense that it's really designed just to support your singular application that you or your team have developed. The onTap framework has been designed from the very beginning with the intention of supporting multiple applications from different authors that integrate with each other.
I forgot that because I got an error trying that page yesterday. I see it works fine now. Took a small look already and does much of what I mentioned.
It would be nice to see a sample app because I get the impression, rightly or wrongly, that I'm going to have a mess of many folders with subfolders, though I think I can have default items for everything in one folder, and extra folders would be for exceptions only. If so, it would be good to emphasize the default because most people moving to a framework are looking to clean up a mess.
I still would say that the selling point is not clear. I understand what the CFWheels guys are aiming for. I'm not sure here.
For example, the first sentence:
>>The onTap framework seeks to allow you to define your own directory structures for your application
It seeks to allow to define..., or simply "The onTap framework lets you use your own directory structure" (singular!)?
But wouldn't it be much better to say it gives you a clean default structure (but also lets you use your own structure - if it does)? People want a framework because they need structure.
Then I have little idea what this adds to the sentence or even means exactly:
>>while creating a recognizable and reproducible structure for the generation of individual pages or webservices within the site.
So a directory structure to create a structure to create pages? That's already implicit in "framework."
And, most importantly, is that really the summary benefit???
Then first in the bullets:
>>Speed development by providing a Service Oriented Architecture (SOA)
I understand how CFWheels speeds development (or so they say), but I have no idea what an SOA is and how it speeds my development. I understand it allows plugins, but not how it speeds my development.
Etc.
Again, I'd go through all that carefully and concentrate on your specific benefits, and then summarize them as concisely as possible, then have it on your homepage Take a look at cfwheels, jquery, RoR sites. Or these guys, though busier: http://www.gosava.com/go/sava/
I hope an outsider's view helps. Thanks for the quick reply, btw.
----------
The docs website often seems slow and I got the same error again as yesterday:
The request has exceeded the allowable time limit Tag: CFLOOP
The error occurred in C:\Websites\168584jp4\_tap\_cfc\ontap.cfc: line 120
...
Called from C:\Websites\168584jp4\Application.cfc: line 161
118 : <cfelseif isStruct(properties)>
119 : <cfloop item="x" collection="#properties#">
120 : <cfset this.setValue(x,properties[x],overwrite)></cfloop>
121 : <cfelseif isQuery(properties)>
122 : <cfloop index="x" list="#properties.columnlist#">
You're right, that overview page needed a lot of work! In part I think it was old and I'd kind of added to it gradually before I learned what "SOA" meant. And then when I learned about SOA rather than revisiting the whole thing I just sort of tacked it in like the rest of it. :P
I do think the outsider's perspective helped ... I think it usually helps. :) and I'd like to think this is a good example. That wiki article is what will be the new overview page in the framework distribution very shortly here.
Thanks for all your help Ziggy et al :)