It's really cool that you've poured so much of your time, research, and development into building out this framework. Congratulations on bringing it so far - I can't imagine this being an easy feat.
I have to say, though - I really couldn't see myself using a closed-source framework for any web application, especially one which is quite new. The potential for running into bugs which it's impossible for me to fix is too great, and I can't afford the time and tension involved in waiting for a vendor to offer an update.
As the founder (and at present, sole developer) of a small ISV, it can be difficult balancing requests from customers, the vision of the company, and maintaining existing code alone. This problem would be far more pronounced for someone attempting to build out, maintain, and develop a community around an entire framework. Aside from perhaps Werkzeug (especially when it was first released), I can't think of a web framework that would have been able to thrive without either a growing community of developers and maintainers contributing, or heavy corporate sponsorship.
I know I'm just some guy on the web tapping out a comment, but I think you'd save quite a bit of sanity and find much better adoption by opening up the source, encouraging others to contribute, and empowering more developers to build applications rather than finding themselves frustrated by a bug in a closed framework which they cannot fix. If revenue is a concern for you, perhaps it's worth considering that things tend to work out well for those who succeed in defining new ways of building and deploying web applications (cf. 37Signals, the Django team, JRuby's core team, etc). You might be surprised.
"This program was developed over the past 7 years just by me. 5 years in part-time and 2 years full time, living off my savings and spending almost all of them, just to accomplish this dream."
Great story. Thumbs up!
But have you ever asked a question: "why there is no competition in C++ web frameworks?"
And I personally wouldn't use framework which is not open-sourced, no matter what technology is it using.
The advantage is that you can access C++ code from just about every language. Therefore, you can use the same framework to write PHP, Python, Java, or .Net code.
No you can't. You can access C code from just about every language; but you need to put hundreds of man-hours into bindings before you can access actual C++ classes; and you just can't use templates and stuff.
Any idea if you would open source this? I think the ORM part would be extremely helpful for C++ application development. I needed one and could not find any existing open source project.
I mean the idea is interesting and all (in theory - I didn't download the framework), but I gotta ask why you'd want to do this? C++ is appropriate and excellent for many problem domains...what is it about web development that should cause it to be added to that list?
Put another way: a lot of smart people have been making very good web apps for a while without using C++. Why is it that you're the first one to see that this domain is somewhere C++ will excel in, and what is it that you see that others don't that lead you to believe this?
I'm not saying that you're automatically wrong (great innovations tend to come from people who buck the existing mentality), but when you introduce something as distinctive and thought-provoking/dogma-challenging as this, you gotta provide more of a sales pitch than one table which says you're as good as Hibernate.
C++ lacks a feature set that would make developing a web application compelling.
How much customer development did you? Did you ask anyone whether this was their pain point or whether it was something else? Was there a niche market that just hasn't been able to build a suitable solution for 7 whole years? All of the possible benefits that people have cited such as speed, portability and familiarity to a niche audience don't make much a difference in web development due to the kind of development, the options already available and the kinds of platforms commonly in use.
I have this sickening feeling that you spent 7 years of your life and a significant portion of your savings working in isolation on a product that may not have any real market to sell into.
Some people are saying "Oh he just did this to be a hacker". I don't like this argument. I don't think it's alright that a talented engineer, a significant source of productivity and innovation for the people around them, would spend a significant amount of their work life (7 out of about 35 years or 1/5th of their most productive years as humans) developing something that doesn't have much value or doesn't solve a problem people have.
As an engineer, you're usually pretty lucky if 1/5 of your stuff reaches a wide audience. And much of the stuff that does reach a wide audience really isn't game-changingly-useful, it's just a nice feature to have.
Tech is a very hit-driven industry, where about 1% of software gets 99% of usage. It's usually impossible to predict that 1%, so you have to expect some duds on the way. And it's quite possible that big successes will be built off the duds.
I'm a pretty hard-core C++ guy and it wouldn't really occur to me to write web apps in C++.
The one place that I could imagine it being useful is in binding existing C++ code to a web service. In our case, were there a lightweight wrapper for providing a REST API including HTTP server, I might consider that over our current setup of binding to the engine from another language.
This framework does that in an easy way. You don't have to type any code to do REST serialization. Just feed the C++ objects to the response and the engine serializes then.
And with an ORM, database access is plain easy. Of course you can always get an handle to the database and execute manual queries.
It has an internal web server and you can easily deploy a shared library to Apache 2.
I think Google writes some of their web services in C++. Some things just need to be fast. Blogs and CMS's probably don't. Is there anything wrong with having a choice?
DON"T compare this to Django or RoR or any of the other web frameworks... their not meant for the same purpose or even on the same playing field. This framework is NOT to be used to write content management systems or blogs or things that simply display web pages constructed using data from a database. It can be, and the video shows it, but attempting to do so would be hilariously stupid.
What this is good for is making web applications that are to do seriously heavy computational processing. Think Image Processing and Analysis (openCV library), sound or Image analysis, Statical Simulations, Crypto Related tasks, etc. With this framework directly bind to those without having to rely on a secondary layer that would be PHP/Python/Rails etc.
Conventionally you either had to write modules in C and bindings for your interpreted language, or setup a fastCGI process. This takes care of handing both in a way...
A couple of suggestions and they're not listed in any particular order:
1. Run a spell checker on the content of your site (ie, Installation is not spelled Instalation )
2. If you're not going to provide source or open source your product, provide debug and release versions of your product; don't tease people that your release version is much faster
3. If you know you have "many bugs", then document them and and give folks a head's up - don't leave people guessing!
4. Explain to people "Why" they want to use your product; there are so many other products out there with tons of support and documentation - why would anybody want to use your product?
5. Open source it and consider still taking donations, consult on its use and maybe even release a book on it if you're going to continue on its use
Again, identify who your audience really is; there are lots of packages being used to fill the niche of web app frameworks; what is special about your product and in what circumstances would someone need to use it
We're focusing on the C++ because it's in the title of the post, and as far as I can tell, it's the only real thing of note that separates this from yet-another-web-framework.
If the C++ isn't the special bit, what is? What should be be focusing on if not that? What makes this - excuse my bluntness - small, unknown, untested, unexamined, underused, framework interesting aside from it being in C++?
I believe that you think there's something special and notable about this, because no one works that long on something unless they do - so tell us, share with us what's cool about the work you've done.
Wt is setup the way that a C++ developer would expect to write web applications. TouchIdeas seems to be set up the way a web developer would expect to write C++.
There's also KLone (http://www.koanlogic.com/klone/): "KLone is a fully-featured, multiplatform, web application development framework, targeted especially for embedded systems and appliances." It uses C/C++, and can be used with either the GPL or a royalty-free commercial license.
If you need to beef up your hacker cred, this is the way to go. But as Martin Fowler said: "It's been a long time since I used C++. But it hasn't been long enough."
My first question is... why? There are so many well proven, excellent web frameworks in modern languages. Why would anyone choose this over Django, Spring, ASP.NET MVC, etc. etc.
As silly as this seems to me at first, I gotta admit, even though this is the solution to no problems I currently know of, who the hell really knows. Its probably unique, and because of that it might find its way into god knows what application.
How come erlang web frameworks get a pass but this is trashed? Lets take a language, not renown for performance, relatively a pain in the ass to code in (which I do), and its biggest claim to fame is easy and lightweight threading, and lets apply it to a problem of web apps, that are naturally distributed and threaded no matter what you make them out of. Oh and lets try to sell a few books to suckers on the subject.
I have to say, though - I really couldn't see myself using a closed-source framework for any web application, especially one which is quite new. The potential for running into bugs which it's impossible for me to fix is too great, and I can't afford the time and tension involved in waiting for a vendor to offer an update.
As the founder (and at present, sole developer) of a small ISV, it can be difficult balancing requests from customers, the vision of the company, and maintaining existing code alone. This problem would be far more pronounced for someone attempting to build out, maintain, and develop a community around an entire framework. Aside from perhaps Werkzeug (especially when it was first released), I can't think of a web framework that would have been able to thrive without either a growing community of developers and maintainers contributing, or heavy corporate sponsorship.
I know I'm just some guy on the web tapping out a comment, but I think you'd save quite a bit of sanity and find much better adoption by opening up the source, encouraging others to contribute, and empowering more developers to build applications rather than finding themselves frustrated by a bug in a closed framework which they cannot fix. If revenue is a concern for you, perhaps it's worth considering that things tend to work out well for those who succeed in defining new ways of building and deploying web applications (cf. 37Signals, the Django team, JRuby's core team, etc). You might be surprised.
Thanks for sharing the screencasts - good luck!
Scott