Main  /  Edit version 11  /  Edit version 12  /   /  Users Area

Difference "CppCMS 1.x.x tasks" ver. 11 versus ver. 12

Content:

<!--toc-->
## Milestone Marks
Each task is marked with milestones:
- Mb - first beta version milestone. Task should be complete before first Beta release.
- Mrc - first release candidate. Task should be complete before first release candidate.
- Ms - first stable release. Task should be complete
before first stable release (including ABI stable)
- Mn - next stable release.
Rationale:
- Task that require **changes** in public API should
be completed before RC1
- Task that does not require changes in API at all may be done till stable or next release, depending on importance.
- Task that extend API should be done either for RC1 so users can review changes or in next release so there would be time for beta testing between versions.
## Booster Tasks.
### AIO Tasks
#### Implementing UDP Support for `booster::aio::socket` - Mn.
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.
# CppCMS 0.999.1 - rc1
#### Rewrite socket to better class design - Mrc.
## Rewrite socket to better class design
At this point, socket does everything, accept, connects,
read, writes, works with pipes and anything else.
Better class hierarchy needed, something like.
- `base_async_io_device`
- `acceptor`
- `base_socket`
- `stream_socket`
- `datagram_socket`
- `pipe`
It is good to fix this before first stable version.
#### Review Of Event Loop - Mrc
Do a code review by somebody who is not Artyom for the
Booster.Aio Event Loop.
### System - Mrc
## Booster.System
Booster.System misses `error_condition` class.
Fix `booster::system` to behave according to C++0x, or
just copy the code from Boost.
### Filesystem - Mn
Implement Directory Iterator.
### General tasks - Mn.
- 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.
## Do changes required in Review Of Event Loop
Implement code review results by Maxim in the code.
## CppCMS Core Tasks.
### Implement Pre-Upload file validation - Mrc.
## Implement Pre-Upload file validation - Mrc.
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.
### Implement Connection Forwarding over unix-sockets - Mrc or Mn.
## 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.
### Reintegrate Distributed session backend - Mrc.
## 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.
### Improve Unit-Test coverage - Ms
- Sesssion API
- Cache API
- Templates System
## Documentation tasks
### Booster Reference Documentation - Mrc
## Booster Reference Documentation
Write Missing documentation for Booster classes using
Doxygen - especially for ones that have no Boost
equivalents.
### Write Examples - Ms.
# 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.
## Non-Critical CppCMS tasks
# CppCMS 1.1.0 - Next Release
### Implement Locale sensitive Date-Time Form Widgets - Ms
## 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.
### Rewrite Cache's index to use has instead of tree - Mn
## Rewrite Cache's index to use has instead of tree
Cache backed uses `map` and may use `unordered_map`.
But it is not so simple:
- `unordered_map`, unlike `std::map` may invalidate iterators so direct replacement would not work.
- timeout index probably should be removed as well as
it requires O(log n) access.
And will it bring real performance benefit at all?
## New CppCMS Features
### Implement Active Cache invalidation - Mn
## 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.
### XSS Filter - Mn
## XSS Filter
Provide HTML filter that allows filtering HTML tags
and properties using strict white list.
Make it manually configurable and allow loading
configuration from JSON.
Needed very fine grained definition of tags and properties
including checks of correct nesting and specifications
of regex for each property if needed.
### Improve Support of RESTful services - Mn
## Improve Support of RESTful services
Provide friendly API for RESTful applications in similar
way it is done today for JSON-RPC
### SQL Library - Mn
## SQL Library
Consider writing replacement for `dbixx`:
- Write my own SQL Library (i.e. replace dbi)?
- Improve libdbi - make sure it works on more platforms.
- Improve SOCI?
- Fork SOCI?

About

CppCMS is a web development framework for performance demanding applications.

Support This Project

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Navigation

Main Page


Valid CSS | Valid XHTML 1.0