Changes between Version 4 and Version 5 of RoadMap


Ignore:
Timestamp:
05/07/10 09:08:46 (14 years ago)
Author:
Samuli Seppänen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RoadMap

    v4 v5  
    1313  * 22:23 - 22:53: Planning of the roadmap meeting
    1414 * 6th May 2010
    15   * The roadmap meeting. James' views available here
     15  * The roadmap meeting. James' views about OpenVPN 3.0 are available [wiki:RoadMap@1 here]
    1616
    1717 == Monolithic architecture ==
     
    3232The current non-asynchrous-clean status of the event system makes maintenance of certain OpenVPN components quite tenuous, such as mtcp.c. While the current event model is partially asynchronous, it is not sufficiently clean to allow certain features to be implemented such as concurrent multithreading or the ability to listen on multiple interfaces simultaneously. The limitations of current event system are also closely tied to OpenVPN's lack of multithreading. To get these features the current i/o event system needs to be revamped into a true asynchronous model. It might be worthwhile to look into using libevent as the underlying i/o event system for OpenVPN (libevent is used by memcached).
    3333
    34  = OpenVPN 3.0: Start from scratch or incremental approach? =
    35 
    36  == Technical considerations ==
    37 
    38 Some of the
     34 = OpenVPN 3.0 =
    3935
    4036 == Organic vs. planned development ==
     37
     38Community-driven development model excels in developing software incrementally in small steps. Most community developers are driven by healthy self-interest and concentrate on ''features'' that are of interest to them. Fixing parts of the architecture may or may not have value for them. An example of an architectural change that developers would probably be interested in is making OpenVPN multithreaded. That said, there are certainly some community developers who may be interested in less concrete work such as rewriting parts of the codebase to allow easier development in the future. Also, if the architecture is made more modular, people will be able to contribute to the project more easily in the future.
     39
     40 == Start from scratch vs. incremental approach ==
     41
     42Starting from scratch has the benefit that we can focus on fixing the current architectural problems. Also, we would not really need to start from scratch, as many parts of the old codebase can be utilized in the new codebase with minor modifications. However, as the codebase as whole would be new, it would almost certainly have unknown problems.
     43
     44There is also the problem that the new codebase will be competing for users and developers against the old codebase. Non-developers are unlikely to use the new codebase until it provides something the old codebase does not. This means the new codebase will be relatively untested for a long time even after it's somewhat functional. Attracting developers to work on the new codebase may also be difficult unless somebody (e.g. at the company) bootstraps and leads the development effort.
     45
     46Incremental approach solves the problem with competing codebases. However, as software architecture is difficult to change afterwards, incremental approach works only on a limited subset of the code. Some of the problematic code may be too integrated to be fixable without significant changes.   
     47
     48 == Generic network stack vs. focus on VPN functionality =
     49