| <!--toc--> | 
	
	
		|  | 
	
	
		| # CppCMS 0.999.1 - rc1 | 
	
	
		|  | 
	
	
		| ## Provide built-in solution for CSRF problem | 
	
	
		|  | 
	
	
		| It should be integral part of CppCMS and it must | 
	
	
		| be easy to use. | 
	
	
		|  | 
	
	
		| ## Review shared objects loading and `views_pool` class | 
	
	
		|  | 
	
	
		| Seems that the API needs cleaup | 
	
	
		|  | 
	
	
		| ## Improve Unit Tests for Templates System | 
	
	
		|  | 
	
	
		| There is some coverage - should be increased | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Booster.System | 
	
	
		|  | 
	
	
		| Booster.System misses `error_condition` class. | 
	
	
		|  | 
	
	
		| Fix `booster::system` to behave according to C++0x, or | 
	
	
		| just copy the code from Boost. | 
	
	
		|  | 
	
	
		| ## Do changes required in Review Of Event Loop  | 
	
	
		|  | 
	
	
		| Implement code review results by Maxim in the code. | 
	
	
		|  | 
	
	
		| ## Implement Pre-Upload file validation | 
	
	
		|  | 
	
	
		| In CppCMS application is created only once the request | 
	
	
		| is fully ready. And after that use can validate | 
	
	
		| the uploaded files. | 
	
	
		|  | 
	
	
		| This is quite bad in case of big ones. | 
	
	
		|  | 
	
	
		| Possible solution is store the validation requirements | 
	
	
		| in the session and let `cppcms::impl::cgi_api`  | 
	
	
		| fetch this session data and use rules to validate | 
	
	
		| uploaded files. | 
	
	
		|  | 
	
	
		| Problems: | 
	
	
		|  | 
	
	
		| - Session fetch may be not so cheap, it may be done over network or require DB access. | 
	
	
		| - Session API allows only synchronous requests. | 
	
	
		| - File uploading is done in even loop where all operations | 
	
	
		|   should be non-blocking. | 
	
	
		|  | 
	
	
		| Possible solutions: | 
	
	
		|  | 
	
	
		| - Store this data in signed cookies. | 
	
	
		| - Add asynchronous api to sessions. | 
	
	
		| - Send session fetch to thread pool till and get | 
	
	
		| session data this way. | 
	
	
		|  | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Reintegrate Distributed session backend | 
	
	
		|  | 
	
	
		| Distributed session backed was temporary-removed  | 
	
	
		| from the code during refactoring and still hadn't get | 
	
	
		| back. | 
	
	
		|  | 
	
	
		| So need to revert/rewrite the code in similar way it | 
	
	
		| is done with TCP Cache backend. | 
	
	
		|  | 
	
	
		| ## Booster Reference Documentation | 
	
	
		|  | 
	
	
		| Write Missing documentation for Booster classes using | 
	
	
		| Doxygen - especially for ones that have no Boost | 
	
	
		| equivalents.  | 
	
	
		|  | 
	
	
		|  | 
	
	
		| # CppCMS 1.0.0 - Stable Release | 
	
	
		|  | 
	
	
		| Tasks that does not require changes in API at all but should  be done till stable release. | 
	
	
		|  | 
	
	
		| ## Improve Unit-Test coverage | 
	
	
		|  | 
	
	
		| - Sesssion API | 
	
	
		| - Cache API | 
	
	
		| - Templates System | 
	
	
		|  | 
	
	
		| ## Write Examples | 
	
	
		|  | 
	
	
		| - AJAX using JSON-RPC | 
	
	
		| - AJAX using Asynchronos JSON-RPC | 
	
	
		| - Comet Programming | 
	
	
		| - File Uploading + validation | 
	
	
		| - Good caching examples. | 
	
	
		|  | 
	
	
		|  | 
	
	
		| # CppCMS 1.1.0 - Next Release | 
	
	
		|  | 
	
	
		| ## Implementing UDP Support for `booster::aio::socket` | 
	
	
		|  | 
	
	
		| Booster.Aio socket supports well stream sockets but | 
	
	
		| has very poor (if any) support of data-gram sockets. | 
	
	
		|  | 
	
	
		| You can open them, use them but there is no such operations | 
	
	
		| like `sendto` or `recvfrom` that are data-gram oriented. | 
	
	
		|  | 
	
	
		| Add their implementation to Booster in analogy to  | 
	
	
		| implementations of async/sync read/write operations. | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Booster.Filesystem | 
	
	
		|  | 
	
	
		| Implement Directory Iterator. | 
	
	
		|  | 
	
	
		| ## Boost to Booster tasks | 
	
	
		|  | 
	
	
		| - Extract/Reimplement `boost::bind` in Booster. | 
	
	
		| - Extract/Reimplement `boost::iostreams` in Booster | 
	
	
		|   and replace `cppcms_boost`'s zlib filter with Booster's one. | 
	
	
		| - Extract/Reimplement `boost::unordered` in Booster. | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Implement Locale sensitive Date-Time Form Widgets | 
	
	
		|  | 
	
	
		| ICU provides good features for parsing and formatting | 
	
	
		| dates and times, implement Date-Time Widget | 
	
	
		| for this purpose. | 
	
	
		|  | 
	
	
		| It is not so-straightforward as user should know the | 
	
	
		| format he/she enters the data, such information | 
	
	
		| is not supplied by any existing widgets. | 
	
	
		|  | 
	
	
		| Think what to do in case of no-icu builds. | 
	
	
		|  | 
	
	
		| ## Implement Active Cache invalidation | 
	
	
		|  | 
	
	
		| Distributed Cache system implements L1/L2 cache | 
	
	
		| allowing a cache client to check if the data is | 
	
	
		| has is still up-to-date without reading it back. | 
	
	
		|  | 
	
	
		| However each access to cache still require TCP-ping-pong. | 
	
	
		|  | 
	
	
		| So instead active cache invalidation may be done: when | 
	
	
		| trigger is risen or new data is stored a sort of | 
	
	
		| a message that causes all clients to drop invalid | 
	
	
		| cache is broad-casted. | 
	
	
		|  | 
	
	
		| Need to be implemented. | 
	
	
		|  | 
	
	
		| ## Replace LRU with 2Q scan resistant algorithm | 
	
	
		|  | 
	
	
		| Check possibility of changing this. | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Improve Support of RESTful services | 
	
	
		|  | 
	
	
		| Provide friendly API for RESTful applications in similar | 
	
	
		| way it is done today for JSON-RPC | 
	
	
		|  | 
	
	
		| ## Improve HTTP Server | 
	
	
		|  | 
	
	
		| Improve HTTP Server so it can be fully useful in production environment and not for debug proposes only. | 
	
	
		|  | 
	
	
		| This is very important for Embedded applications. | 
	
	
		|  | 
	
	
		| ## Provide WebSockets support | 
	
	
		|  | 
	
	
		| Implement Web Sockets support and transparetn | 
	
	
		| fallback to some long-polling based protocol | 
	
	
		| comet | 
	
	
		|  | 
	
	
		| ## Provide Plugin Framework | 
	
	
		|  | 
	
	
		| Allow applications and other tools be loaded dynamically. | 
	
	
		|  | 
	
	
		| ## Degraded Mode of work | 
	
	
		|  | 
	
	
		| Problem: | 
	
	
		|  | 
	
	
		| What happens when one of cache/session servers fails? | 
	
	
		|  | 
	
	
		| Solution: | 
	
	
		|  | 
	
	
		| Provide automatic servers fail-detection procedures and continue to work in degraded mode. | 
	
	
		|  | 
	
	
		| ## Implement Connection Forwarding over unix-sockets | 
	
	
		|  | 
	
	
		| CppCMS forwarding framework allows to forward any connection | 
	
	
		| to other network node over SCGI API. | 
	
	
		|  | 
	
	
		| Is is very useful to be able to forward connections | 
	
	
		| between forked processes of same application. | 
	
	
		|  | 
	
	
		| It can be done in much cheaper between forked processes | 
	
	
		| by forwarding a file descriptor over Unix domain socket and | 
	
	
		| passing already read information via shared memory. | 
	
	
		|  | 
	
	
		|  | 
	
	
		| ## Add Support of multiple event loops | 
	
	
		|  | 
	
	
		| Today, asynchronous applications do not scale | 
	
	
		| well on multiple CPU systems. | 
	
	
		|  | 
	
	
		| Required add support of multiple event loops | 
	
	
		| so different asynchronous applications would  | 
	
	
		| be able to use them. | 
	
	
		|  |