Skip to content

ProjectIdeas

obiltschnig edited this page Nov 19, 2012 · 3 revisions

Project Ideas

These are major POCO-related projects we'd like to do in the near future.

Package Management System

As we keep adding new libraries to POCO, some of which are only interesting to a limited set of developers, we'd like to rethink the way POCO is distributed. Right now we have basically two release packages, the "Basic Edition" containing only the four core libraries (Foundation, XML, Util, Net) and the "Complete Edition" containing Data, Crypto, NetSSL and Zip in addition to the core libraries. There are also a few other libraries that are more or less in production ready form, but which currently are only available from the Git repository, or Applied Informatics' internal Perforce repository (ApacheConnector, CppParser, PocoDoc, PDF, Geo, etc.). Ideally, we'll have something like Ruby Gems that will allow us to only provide the "Basic Edition" download containing an additional executable ("poco"), which will be the package manager. Packages can be hosted on different sites (e.g., on http://pocoproject.org for all free Boost-licensed code and on http://www.appinf.com for the commercial frameworks). We already have package metainformation, version and dependency management code in Applied Informatics' OSP product, so this could be used as a basis. The distribution format would be basically so-called bundles which are ZIP files similar in format to JAR files (or OSGI bundles). The package manager would download the bundles to a local bundle repository, extract the source code, and build using the platform's native build system (Visual C++/msbuild or gmake).

Rewrite CppParser to use Clang

Right now, the CppParser used by PocoDoc and Applied Informatics' Remoting code generator uses a minimal hand-written C++ parser which tries its best to make a sense of the mess that is C++ syntax, to varying success. We'd like to rewrite it to basically use Clang's preprocessor and parser. Should be doable, but an additional requirement is that CppParser needs to understand the special comment format we use for documentation (PocoDoc), as well as annotation for Remoting.