There are notable weaknesses in the current version of OpenVPN. First, the entire application is written as a single, monolithic application. The same binary that is used for client connections is also used as the server instance. This isn't too much of a problem, but there is no modularization of code, so all of the logic needs to be handled regardless of the context in which the application is executed.
Working through the monolithic design woes, developers will have an easier time implementing features such as IPv6, additional compression algorithms, and so on. Also, changes to improve the network stack need to be updated in many places within the code, rather than a single library or component. This is the reason the IPv6 and IPv4 stacks are handled separately today.