Question

I am having a hard time trying to decide if I should use Poco in our product. We currently use boost but boost is very low level. I would like to use some of the features in Poco. Currently I only have a need for two, the Task Manager and the Timer classes however they depend on a thread pool which uses Poco::Thread over Boost::Thread etc.

I would like to remove our current task management framework and use the Poco one as it is a far better fit. In saying that, I am worried about the future consequences of this and the mixing of Poco objects and Boost objects.

I can see a benefit in some of the other Poco packages and maybe I will use them in future but right now, I really only need a good task manger.

This is how I see my options
Poco :
Pro – I get a well-tested working task manager with no effort.
Con – I will be introducing another foundation layer library into the module, the mix and
matching may be an issue in the future.

Boost:
Pro – I remain with boost, we have no other dependency’s.
Con – It will take time to write the equivalent of Poco Task Manager / Timer and it will not
have the community stress tested / code inspection benefit. ( also I am re-inventing the wheel)
Con – we miss out on the other Poco packages that could be of great help down the line, i.e. xml, cache, Unicode support etc.

Use Poco entirely and discontinue Boost
Pro – We get to use all of the features of Poco which are written at a higher level of abstraction, we can implement features quickly.
Con – If we need something that is in Boost in the future, we won’t be able to use it.
Con – It will require a lot of work to re-work the current code that uses boost.

I was going down the route of mixing them as I looked at the implementation and they appear similar but the issue was raised and now I am unsure.
I have been searching for documentation on this but I have found nothing conclusive, I was hoping to get a community response on the most advisable action.
I have no doubt that more engineers will want to use boot with Poco so maybe when they search they will see this.

Thanks for your time.

Was it helpful?

Solution

We use Poco mixed with boost in our project, and the combination works extremely well. In my mind boost has a great set of lower-level algorithms whereas Poco offers a very useful set of higher level application objects. There's not a clear line bounding the two libraries, but that's how we used them. e.g. boost for signals/slots, foreach, etc, and Poco for threading, HTTP services, Unicode/UTF8 conversion. Both libraries have worked well for common code across OS X, Windows, Linux, iOS, and Android.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top