

The first web framework and ORM for C++ - TouchIdeas
http://www.touchideas.com

======
cscotta
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.

Thanks for sharing the screencasts - good luck!

Scott

------
woid
"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.

~~~
j_baker
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.

~~~
ilyak
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.

~~~
yangyang
Well there are things like SWIG and Boost Python that can make your life
considerably easier. But you are right, it's much more work than C.

~~~
j_baker
Then again it's also more trouble to write code in C than it is in C++.

------
JimmyL
Uh...why?

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.

~~~
kingkongrevenge
> first one to see that this domain is somewhere C++ will excel in

C++ is used a lot in the big sites like Amazon and Yahoo and Google. The
frameworks just aren't open sourced.

C++ remains a lot faster and a lot less memory intensive than Java/C#. It
would make sense to use it any time load is pushing the hardware.

~~~
JimmyL
Is it used in their world-facing front ends? That's the part I don't get using
C++ for.

I can understand 100% using it for data processing in the back-end systems,
but not for the usual web framework parts...

------
besquared
Wow I mean, I just feel kind of bad.

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.

Am I the only one feels this way?

~~~
wheels
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.

~~~
TouchIdeas
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.

------
dryicerx
...

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...

At least that's my view of great use for this.

~~~
jpcx01
Better let the developer know. In his screencast he chronicles building a blog
app, in just about the most unappealing way possible.

------
tptacek
Oh please oh please oh please oh please use this for your next big app. I need
a new car. ;)

~~~
Raphael
Are you suggesting that it's full of security holes?

~~~
jmonegro
He's suggesting he is a good C++ coder.

~~~
tptacek
That wasn't what I was suggesting, though in fairness I didn't even bother to
read the code.

------
spacecowboy
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

Good luck!

------
TouchIdeas
You are all focusing too much on the C++ argument.

This framework will support all mainstream languages like Perl, PHP, Python,
Ruby, Java, .NET being the first one to do this.

And it will offer full programming language interoperability (for example PHP
code call C++ code or any combination of languages).

All this with the features it would expect from an Web framework and ORM.

~~~
JimmyL
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.

------
wheels
There's already Wt: <http://www.webtoolkit.eu/>

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++.

~~~
TouchIdeas
MySite from touchideas.com is a MVC framework with an ORM. It has all the
features of other big products (check the site for a feature comparison).

Like: MVC, Web services (JSON, XML), ORM, database access / connection
pooling, caching (memory, disk, distributed), session data with automatic
serialization, internationalization / localization, view template engine,
custom memory allocator (no delete needed), and many others.

~~~
caffeine
So that's good .. but all the other products have those features too.

So what does yours do that the others don't do? If it's C++, maybe its faster?

------
Bjoern
In the comments the question "why" pops up quite a few times, here is my try
on it.

1.) It's a cool hack (if you like C++)

2.) It's pretty useful if you develop for an embedded environment (embedded
webservers etc.) and need to avoid GPL'd code

~~~
Kw2987
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.

------
boggles
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."

------
scm007
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.

------
jmonegro
No it's not

<http://www.webtoolkit.eu/wt>

------
KevinMS
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.

------
jorgeortiz85
There's also the open-source OKWS <http://www.okws.org/doku.php?id=okws>

------
jpcx01
I was seriously expecting an "April Fools" notice at the end of the video.
This has got to be the worst product I've ever seen.

