future
Proposal for the future of QCubed - to the QCubed Community
All,
I am concerned that QCubed is in trouble. QCubed originally existed because so many developers really loved QCodo, but either were frustrated with the lack of progress on it, or wanted to see it go in a new direction. Well, here we are again in a situation where there is little progress. I have contacted some of the developers in the core contributors list. Some have said they have moved on to other things, and some never responded. A couple are still lurking on the forums, which is GREAT. The ones that responded to me suggested I take the lead to make the next step, so this is my attempt.
I have been working on changes to the framework which I think would make a good 2.1 release, and which is important to future work I am planning. I would like to check it in to SVN in the experimental section to show you all and get help with it, but there are server problems that are preventing that. I believe some others have pointed out other server problems, but the server owner is unresponsive to my emails and the other posts on this forum.
So, to prepare for a QCubed 2.1, we need to get our house in order a bit, and those of us who are still interested in moving QCubed ahead need to help. It will take some work, but in the end, I think we will have a great platform to build some great apps with.
Here is my proposal. Note that this is a straw man to promote discussion. If you have a vested interest in the future of QCubed, chime in.
- Move the Web site to a public code hosting platform, so that it never has to rely on one person to maintain the basic development process. I don't have a lot of experience with these, so some of you who have worked with these platforms, please help. Before we decide on a platform, we need to decide what we want. Please see below for my thoughts on platform goals.
- Take QCubed further in its integration with JQuery UI. I have been working for a couple of weeks on this. There is much to do here. The primary end-goal here would be to have the code generation process by default generate forms that have JQuery UI objects in them, and have these objects be generally accessible and responsive through PHP code.
- Finally, finally, finally get our documentation in order. I have thoughts on this too. Please see below.
Web Hosting Goals
The success of any open source project is dependent on a group of people working together and over time, building trust in each other. The quality of the people and the quality of the trust create great software. I would like to see QCubed eventually become a well recognized platform with many developers actively moving it forward. That will require an environment that encourages creative thinking and experimentation, open discussion, and relationship building. There must be few barriers to posting ideas, code and documentation, and it should lean more on allowing people to make mistakes, and making it easy to back those out, rather than requiring lots of hurdles to jump before you can get code into the core.
I am not sure there is a particular public solution that would do this. We might have to build it. But before then, we should see if a public site would work. SourceForge comes to mind. GitHub maybe, but its not a complete solution, and the complexity of GIT might be a barrier. KForge could work, but it needs to be hosted by someone, and that host would need to be comfortable with having multiple people have root access so that we don't get into the problem again that we are in now.
Does anyone have any thoughts on this?
2.1 Features
Before discussing 2.1, I think a look at the present and look far ahead is in order. There are many PHP frameworks out there. Many of us who use QCubed, and used QCodo, know that this framework excels as a RAID development tool. There is nothing like being able create a complicated set of SQL tables, and pressing a button and seeing an entire application get spit out that is already functional, and just waiting for us to tweak it. QCodo was originally designed to get you far along the process of building a site, and then you took it from there.
But of course, things change. Once you build a site, you might add fields, or whole tables. The underlying framework may get improved. PHP is evolving, HTML is evolving, Javascript is evolving, browsers are evolving, and whole new platforms (e.g. iPhone, iPad) are being created. Recent changes in the architecture of QCubed and QCodo have made it easier to rely on the framework as an ongoing platform to host a Web application. The idea is that your application should be able to easily incorporate changes in the framework and changes to your data model so that the ideas and the data encapsulated in your application can live on as the world changes.
The recent effort to incorporate JQuery UI points QCubed in a direction of relying more and more on the work of other frameworks and tools, to further incorporate all the work of the thousands of developers working on complementary projects. This is a really important shift, in that it helps us to focus on what QCubed is good at, without trying to do everything ourselves.
So, to encapsulate the idea of QCubed's niche in the world, I would say that it is a fantastic tool for quickly building data driven Web sites where high performance is not a major requirement. This makes it a great tool for building in-house intranet sites, for small-businesses who have modest traffic but complicated data requirements, and for rapid prototyping. QCubed is a great tool on the belt of a software consultant. I see nothing wrong with sticking to these goals and with that audience. QCubed has a lot of room to grow with just these goals.
The next steps for QCubed I see are 1) to further integrate jQuery UI, 2) to incorporate the changes at QCodo that make it easier to upgrade to future versions of the framework without it being a big pain, and 3) to incorporate some of the recent code people have suggested to make it easier to get results from javascript requests. There are lots of other improvements that could be incorporated as well.
I am building a layer that sits between the generated JQuery UI code and the user code so that the JQuery UI objects are easily accessible from QCubed code. This opens up a LOT of functionality that users on these forums have requested, including:
- Being able to code generate forms that are jQuery UI based.
- Making forms Themeable.
- Using Autocomplete to manage selection from large lists easily.
- Much improved drag, drop and resize functionality.
- An easier process to create widgets for specific situations that are based on JQuery UI objects.
- The easy addition of jQuery UI widgets that are in planning over at the jQuery UI site.
What are your thoughts on what QCubed is good at, and the next steps?
The Documentation Problem
Most people hate writing documentation. I think the problem is primarily that after you put so much time into writing code, you realize that you may have to put in an equal amount of time to document it, and that is just not as fun.
The code hints in the comments help, but they are not a replacement. The examples site is great, but its not a replacement either.
What I think we need is a kind of living documentation system that allows all of us to contribute to the documentation on an ongoing basis. As you learn about some part of the framework, you may discover something that you want other people to know about (or that you want to remember and need a place to write it down.) I really like the PHP site's documentation, which allows people to leave comments on the doc. But you still can't easily change the actual documentation part. What we need is a kind of wiki that lets us write the documentation as we go, but also leave comments on the documentation as well. I would like it to be editable by anyone with a login, and not just a few select people. Because of the potential for abuse, it needs to be regularly backed up and have some form of version control, but my experience is that such abuse is rare and we should deal with it when we have that problem.
What are your thoughts on the documentation problem? Are there any collaborative documentation products out there that could help? Is there a public site that hosts something like that?
QCubed and QCodo
As you all probably know, Mike Ho updated QCodo website. I'm a big QCubed/QCodo fan and use it heavily.
I haven't found people on IRC. That's probably because I'm in Europe and all of you are sleeping when I'm online and vice versa.
