User Tools

Site Tools


devel:kamailio-5.0-design

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devel:kamailio-5.0-design [2016/02/24 23:34]
miconda [Build System]
devel:kamailio-5.0-design [2016/05/03 18:33] (current)
miconda
Line 1: Line 1:
 ====== Kamailio v5.0 Design ====== ====== Kamailio v5.0 Design ======
 +
 +===== Overview =====
  
 After 15 years of development, it is time for Kamailio v5.0. After 15 years of development, it is time for Kamailio v5.0.
  
-===== Configuration File =====+This page collects suggestions and ideas for major refactoring of various components to make the leap to v5.0.
  
-==== Exporting Functions To Embedded Interpreters ====+When adding a remark that needs to be tracked by author, use initials in front of the paragraph. The list of contributors to this document and initials:
  
-  * define and implement an export interface from modules to embedded interpreters to automatically add new functions to embedded interpreters, in a similar fashion as for adding functions to configuration file+  * Daniel-Constantin Mierla (dcm)
  
-==== Routing Logic In Embedded Interpreters Scripting ====+===== Initial Remarks ===== 
 + 
 +Initial content for this document is listing also ideas popped up during discussions at Fosdem 2016 and Kamailio Development Workshop - among participants: Camille Oudout, Daniel-Constantin Mierla, Federico Cabiddu, Giacomo Vacca, Henning Westerholt, Olle E. Johansson, Torrey Searle, Victor Seva. 
 + 
 +===== Configuration File Interpreters ====
 + 
 +Goals: 
 + 
 +  * have at least one option of an optimized configuration file interpreter targeting high performance SIP routing deployments 
 +  * have at least one option of a more flexible configuration language that allows: 
 +    * extended language syntax 
 +    * reloading routing rules at runtime 
 + 
 +Ongoing implementation that enables writing routing blocks in Lua and Python as alternative to native language is documented at: 
 + 
 +  * [[devel:config-engines|Configuration File Engines]]
  
-  * writing the routing logic only in a scripting language supported via embedded interpreters 
-  * eventually setting core parameters, loading modules and setting modules' parameters are still done using the kamailio configuration file but all routing blocks should be possible to be written in an embedded language 
-  * routing logic in an embedded language should allow reloading at runtime without kamailio restart 
  
 ===== Source Tree Structure ===== ===== Source Tree Structure =====
 +
 +Goals:
 +
 +  * group files per components to be easier to spot their role, especially the core, include files and utilities
 +
 +==== Reorganizing Source Files Location ====
  
 It was discussed in the past: It was discussed in the past:
  
   * source code files should be relocated to have a better structure for include headers, core files, modules and internal libraries as well as utilities   * source code files should be relocated to have a better structure for include headers, core files, modules and internal libraries as well as utilities
 +
 +Two models proposed:
 +
 +  * a) only move core files in a new 'core' folder in the root directory
 +  * b) move all source code files for Kamailio in a new 'src' folder, with further re-organization with subfolders inside 'src'
  
 ===== Build System ===== ===== Build System =====
  
-Revising the build system based on Makefiles.+Goals: 
 + 
 +  * revising the build system based on Makefiles. 
 + 
 +==== Reviewing Alternative Build Systems ====
  
 Alternatives to analyze: Alternatives to analyze:
Line 31: Line 60:
  
 ===== Continuous Integration ===== ===== Continuous Integration =====
 +
 +Goals:
 +
 +  * attempt to make a more consistent and "easy to contribute to" continuous integration eco-system 
 +
  
 ==== Unit Test Framework ==== ==== Unit Test Framework ====
  
 Reviving the exiting unit testing or selecting another framework. Reviving the exiting unit testing or selecting another framework.
 +
 +Available frameworks:
 +
 +  * http://robotframework.org/ (python)
  
 ==== Minimal Unit Tests ==== ==== Minimal Unit Tests ====
devel/kamailio-5.0-design.1456353271.txt.gz · Last modified: 2016/02/24 23:34 by miconda