Reputation:
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.
Upvotes: 0
Views: 1226
Reputation: 23398
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.
Upvotes: 1