Home  /  RSS  /  RSS Comments  /  Enter

What's Next?

5/3/09, by artyom ; Posted in: Progress, FastCGI, Framework; 10 comments

The road map of the project includes two important milestones:

  1. CppCMS core components refactoring including following:
    • Removal of dependency on CgiCC -- today there is about 5% of CgiCC library is used, many features are not supported by it or are not supported well. For example: file upload handling in CgiCC is very primitive, limited and error prone, support of cookies buggy and so on.
    • Using of Boost.Asio as internal event handler, because:
      1. It provides transparent synchronous and asynchronous event handling allowing future implementation of server push technologies.
      2. It provides efficient timer based event handling.
    • Removal dependency of libfcgi and writing Boost.Asio friendly implementation of FastCGI/SCGI connectors. Implementation of HTTP connectors as well.
    • Support of plug-in applications in CppCMS framework.
    • Improving compilation speed by representing more pimpl idioms and removal of unnecessary classes.
  2. Better support of i18n and and l10n:
    • Transparent support of std::wstring with forms including automatic encoding testing and conversion.
    • Support of std::locale for localization for outputs like numbers, dates, monetary, translation and so on.
    • Optional support of ICU and icu::UnicodeString and icu::Locale that would add unsupported features by std::locale and allow replacement std::locale features with more correct implementations provided by ICU.

These changes will significantly break API backward compatibility, but it would be possible to adopt the code almost "mechanically" to the new API.

Comments

Viet, at 6/6/09, 4:00 AM

You may consider using PHP C source code to replace CgiCC dependency. It has very good performance, maturity, stability and license terms. Since Uploading, cookies and session handling are very fundamental in PHP C source code, you can expect that they will not change and will not have bugs as those have been used for years.

I really like the idea of using ICU!

You can use Boost::Thread to improve threading.

For the templates, I think that you should make it as a plug-in system. I really love PHPTAL and I think that your CMS will create jobs for designers as well if it implements TAL templates. The bigger the community is, the better the application gets ;)

Thank you very much for your great work! Спасибо, Артем!

artyom, at 6/6/09, 4:06 PM

You may consider using PHP C source code to replace CgiCC dependency.

Actually, the CgiCC part I use is quite small and relatievly easy to rewrite, in fact it is already done in 70%, I also have session handling support outside of CgiCC.

Another point, is an ability to support asynchronous events, so in this case, PHP codes does not really fit.

I really like the idea of using ICU!

Actually, ICU usage would be quite limited and optional, there is quite good support of localization in via std::locale, so it would be optional.

The biggest issue of ICU is a lack of modern STL friendly interface. So user would be able to use icu::UnicodeString or accosiate icu::Locale with the context, but it is not major requirement.

You can use Boost::Thread to improve threading.

Actually I prefer posix threads, they are far more consistent then different version of boost libraries. I may use them if I feel that it would make port to MS Windows platform easier.

I think that you should make it as a plug-in system.

They quite already are: templates are loaded as shared object/dll and can be easily replaced.

I think that your CMS

It is not CMS it is web development framework

Viet, at 6/7/09, 5:21 AM

Thank you for your reply. Would there be something like PHPTAL, using TAL template language. Very designer friendly and intuitive. The current template engine is fit for developers only, who are not necessarily have a taste of design.

Regarding pthreads, there is Win32 native Port.

artyom, at 6/7/09, 7:27 AM

Would there be something like PHPTAL, using TAL template language

To be honest, I'm not familiar with TAL. Many things that TAL provides (according to quick look) are already exist in CppCMS template system, that is designed after Django views.

I agree that it is not designer friendly, in terms "you can't put template in browser and see how it behaves", because there are many important features that are not compatible with template system, like template inheritence.

In any case, I can't tell if something like that would be availible because I just not too much familiar with it.

BTW:

Thank you very much for your great work!

Just wanted to ask, are you using CppCMS for web development?

Viet, at 6/8/09, 8:45 AM

I found CppCMS last July but now I test CppCMS along with Wt C++ and CgiCC on Ubuntu. It's quite different from CgiCC which needs developer to dumps everything and Wt that is GUI-based web framework.

There are 2 reasons that I want TAL:

  1. Designer-friendly => good for collaboration
  2. Maturity & completeness

It'd be great if you will host a forum and development group to grow user base and community. I believe that CppCMS deserves broader attention and larger community.

artyom, at 6/8/09, 11:48 AM

It'd be great if you will host a forum and development group to grow user base and community.

There is a mailing list at Sourceforge: https://lists.sourceforge.net/lists/listinfo/cppcms-users

You can just join it and ask whatever you need, even it is not so active at this point, it has a simple advantage --- you do not need to visit it to get updates, the traffic is quite low, so it wouldn't be annoying.

I believe that CppCMS deserves broader attention and larger community.

Can't disagree with you ;)

gramic, at 7/16/09, 9:42 AM

Eliminating dependencies, especially when used so small parts of them is always useful and consistent with the framework. What makes me happy for the upcoming release is that with less dependencies it will be easier install and use, and probably a port to Windows environment would suffice this time :)

artyom, at 7/16/09, 8:06 PM

Eliminating dependencies, especially when used so small parts of them is always useful and consistent with the framework

Yes, but this requires quite strong code refactoring and re-implementing the weel. But it would be done together with implementing backwared compatible ABI.

and probably a port to Windows environment would suffice this time :)

this I do not promice, if it would work... it would. But in any case, CppCMS works under cygwin.

Daniel Vallejos Vivado, at 7/22/09, 6:06 AM

Hello from Argentina!

I discovered your project today. I used Wt, but I need more flexibility and LGPL. My worry is about AJAX events/signals/slots support. You plan add these AJAX facilities in future?

Great work pioneer!!!

Cheers!

artyom, at 7/22/09, 7:19 AM

My worry is about AJAX events/signals/slots support.

The way CppCMS build is totally different from the way Wt works.

Wt "mixes" server side and client side events and makes it look like "GUI", but generally this is not quite correct approach for web applications.

So signals/slots are just don't fit this framework like they don't fit most of other web frameworks like Django, RoR, etc.

I'd suggest you to use one of AJAX frameworks like jquery for client side that posts data using XmlHTTPRequest to the server and implement responses on server sides that returns data as XML (created using templates engine).

If you are looking for support of COMET or push technologies, then, there is no diect support of it. There is no asynchonous server side responses support, meanwhile.

Support of server push is planned for next versions of CppCMS with lots of other changes and improvements.

So, unless you need server side push, you should not have problems using CppCMS with Ajax.

Add Comment:

 
 the email would not displayed
 

You can write your messages using Markdown syntax.

You must enable JavaScript in order to post comments.

Pages

Categories