<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2176/18/9/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States">Asterisk Module Support States</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~lmadsen">Leif Madsen</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Remove section listing modules, as it'll never stay as up to date as the code.<br />
    </div>
        <br/>
                         <h4>Changes (3)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >The module will remain in the tree, but there is a better way to do it. After two release cycles issues that have been deprecated for some time will be listed in an email to the Asterisk-Dev list where the community will have an opportunity to comment on whether a deprecated module: still compiles, works sufficiently well, and is still being utilized in a system where there is a justification for not using the preferred module. <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h1. Modules and Support Levels (as of Asterisk 1.8) <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h1. MODULEINFO Configurations <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h2. Addons <br> <br>h3. Addons, Core <br> <br>* N/A <br> <br>h3. Addons, Extended <br> <br>* chan_mobile <br>* chan_ooh323 <br>* format_mp3 <br>* res_config_mysql <br> <br>h3. Addons, Deprecated <br> <br>* app_mysql \--&gt; func_odbc <br>* app_saycountpl \--&gt; say.conf <br>* cdr_mysql \--&gt; cdr_adaptive_odbc <br> <br>h2. Applications <br> <br>h3. Applications, Core <br> <br>* app_chanspy <br>* app_confbridge <br>** (Core in Asterisk 10 or later) <br>* app_db <br>* app_dial <br>* app_directory <br>* app_echo <br>* app_forkcdr <br>* app_milliwatt <br>* app_mixmonitor <br>* app_originate <br>* app_page <br>* app_parkandannounce <br>* app_playback <br>* app_queue <br>* app_read <br>* app_readexten <br>* app_record <br>* app_senddtmf <br>* app_softhangup <br>* app_speech_utils <br>* app_stack <br>* app_system <br>* app_transfer <br>* app_userevent <br>* app_verbose <br>* app_voicemail <br>* app_while <br>* app_cdr <br>* app_directed_pickup <br>* app_disa <br>* app_exec <br>* app_channelredirect <br>* app_dumpchan <br>* app_flash <br>* app_followme <br>* app_playtones <br>* app_skel <br>* app_waituntil <br>* app_authenticate <br>* app_controlplayback <br>* app_privacy <br>* app_sayunixtime <br>* app_sendtext <br>* app_macro \--&gt; app_gosub <br>* app_meetme \--&gt; app_confbridge <br>** (Asterisk 1.8) <br> <br>h3. Applications, Extended <br> <br>* app_adsiprog <br>* app_alarmreceiver <br>* app_amd <br>* app_chanisavail <br>* app_confbridge <br>** (Asterisk 1.8) <br>* app_dahdiras <br>* app_dictate <br>* app_externalivr (David Ruggles) <br>* app_fax <br>* app_festival <br>* app_getcpeid <br>* app_ices <br>* app_image <br>* app_ivrdemo <br>* app_jack <br>* app_minivm <br>* app_morsecode <br>* app_mp3 <br>* app_nbscat <br>* app_osplookup <br>* app_rpt <br>* app_saycounted <br>* app_sms <br>* app_talkdetect <br>* app_test <br>* app_url <br>* app_waitforring <br>* app_waitforsilence <br>* app_zapateller <br> <br>h3. Applications, Deprecated <br>* app_meetme \--&gt; app_confbridge <br>** Asterisk 10 <br>* app_setcallerid \--&gt; func_callerid <br>* app_dahdibarge \--&gt; app_chanspy <br>* app_readfile \--&gt; FILE() in func_env <br> <br>h2. Bridging <br> <br>h3. Bridging, Core <br> <br>* bridge_builtin_features <br>* bridge_multiplexed <br>* bridge_simple <br>* bridge_softmix <br> <br>h3. Bridging, Extended <br> <br>* N/A <br> <br>h3. Bridging, Deprecated <br> <br>* N/A <br> <br>h2. Call Detail Recording <br> <br>h3. Call Detail Recording, Core <br> <br>* cdr_adaptive_odbc <br>* cdr_custom <br>* cdr_manager <br>* cdr_syslog <br> <br>h3. Call Detail Recording, Extended <br> <br>Extended (Community Support) <br> <br>* cdr_csv <br>* cdr_odbc <br>* cdr_pgsql <br>* cdr_radius <br>* cdr_sqlite3_custom <br>* cdr_tds <br> <br>h3. Call Detail Recording, Deprecated <br> <br>* cdr_sqlite \--&gt; sqlite3_custom <br> <br>h2. Channel Event Logging <br> <br>h3. Channel Event Logging, Core <br> <br>* cel_custom <br>* cel_odbc <br>* cel_manager <br> <br>h3. Channel Event Logging, Extended <br> <br>* cel_pgsql <br>* cel_radius <br>* cel_sqlite3_custom <br>* cel_tds <br> <br>h3. Channel Event Logging, Deprecated <br> <br>* N/A <br> <br>h2. Channel Drivers <br> <br>h3. Channel Drivers, Core <br> <br>* chan_bridge <br>* chan_dahdi <br>* chan_local <br>* chan_multicast_rtp <br>* chan_sip <br>* chan_agent <br>* chan_iax2 <br> <br>h3. Channel Drivers, Extended <br> <br>* chan_alsa <br>* chan_console <br>* chan_gtalk <br>* chan_jingle <br>* chan_mgcp <br>* chan_misdn <br>* chan_nbs <br>* chan_oss <br>* chan_phone <br>* chan_skinny <br>* chan_unistim <br>* chan_usbradio <br>* chan_vpb <br> <br>h3. Channel Drivers, Deprecated <br> <br>* chan_h323 \--&gt; chan_ooh323 <br> <br>h2. Codecs <br> <br>h3. Codecs, Core <br> <br>* codec_alaw <br>* codec_a_mu <br>* codec_g722 <br>* codec_resample <br>* codec_ulaw <br>* codec_gsm <br>* codec_dahdi <br>* codec_g726 <br>* codec_speex <br>* codec_adpcm <br>* codec_ilbc <br>* codec_lpc10 <br> <br>h3. Codecs, Extended <br> <br>* N/A <br> <br>h3. Codecs, Deprecated <br> <br>* N/A <br> <br>h2. Format Interpreters <br> <br>h3. Format Interpreters, Core <br> <br>* format_g729 <br>* format_pcm <br>* format_sln16 <br>* format_sln <br>* format_wav <br>* format_wav_gsm <br>* format_gsm <br>* format_g723 <br>* format_g726 <br>* format_h264 <br>* format_ogg_vorbis <br>* format_siren14 <br>* format_siren7 <br>* format_g719 <br>* format_h263 <br>* format_ilbc <br> <br>h3. Format Interpreters, Extended <br> <br>* format_jpeg <br>* format_vox <br> <br>h3. Format Interpreters, Deprecated <br> <br>* N/A <br> <br>h2. Dialplan Functions <br> <br>h3. Dialplan Functions, Core <br> <br>* func_audiohookinherit <br>* func_callcompletion <br>* func_callerid <br>* func_cdr <br>* func_channel <br>* func_cut <br>* func_db <br>* func_devstate <br>* func_extstate <br>* func_global <br>* func_groupcount <br>* func_logic <br>* func_math <br>* func_odbc <br>* func_rand <br>* func_shell <br>* func_strings <br>* func_timeout <br>* func_uri <br>* func_version <br>* func_vmcount <br>* func_volume <br>* func_speex <br>* func_config <br>* func_curl <br>* func_module <br>* func_sysinfo <br>* func_base64 <br>* func_blacklist <br>* func_dialgroup <br>* func_dialplan <br>* func_enum <br>* func_lock <br>* func_md5 <br>* func_sha1 <br>* func_aes <br>* func_env <br>* func_iconv <br>* func_sprintf <br>* func_srv <br> <br>h3. Dialplan Functions, Extended <br> <br>* func_frame_trace <br>* func_pitchshift <br> <br>h3. Dialplan Functions, Deprecated <br> <br>* N/A <br> <br>h2. PBX Modules <br> <br>h3. PBX Modules, Core <br> <br>* pbx_config <br>* pbx_spool <br>* pbx_loopback <br> <br>h3. PBX Modules, Extended <br> <br>* pbx_ael <br>* pbx_dundi <br>* pbx_lua <br>* pbx_realtime <br> <br>h3. PBX Modules, Deprecated <br> <br>* N/A <br> <br>h2. Resource Modules <br> <br>h3. Resource Modules, Core <br> <br>* res_adsi <br>* res_agi <br>* res_config_odbc <br>* res_monitor <br>* res_musiconhold <br>* res_odbc <br>* res_rtp_asterisk <br>* res_rtp_multicast <br>* res_speech <br>* res_srtp <br>* res_timing_dahdi <br>* res_timing_timerfd <br>* res_fax <br>* res_calendar <br>* res_calendar_caldav <br>* res_calendar_ews <br>* res_calendar_exchange <br>* res_calendar_icalendar <br>* res_clioriginate <br>* res_config_curl <br>* res_realtime <br>* res_clialiases <br>* res_convert <br>* res_crypto <br>* res_stun_monitor <br>* res_http_post <br>* res_limit <br>* res_mutestream <br>* res_security_log <br>* res_smdi <br> <br>h3. Resource Modules, Extended <br> <br>* res_ael_share <br>* res_ais <br>* res_config_ldap <br>* res_config_pgsql <br>* res_config_sqlite <br>* res_fax_spandsp <br>* res_jabber <br>* res_phoneprov <br>* res_pktccops <br>* res_snmp <br>* res_timing_kqueue <br>* res_timing_pthread <br> <br>h3. Resource Modules, Deprecated <br> <br>* N/A <br> <br>h2. Test Modules <br> <br>h3. Test Modules, Core <br> <br>* test_acl <br>* test_amihooks <br>* test_aoc <br>* test_app <br>* test_ast_format_str_reduce <br>* test_astobj2 <br>* test_devicestate <br>* test_dlinklists <br>* test_event <br>* test_expr <br>* test_func_file <br>* test_gosub <br>* test_heap <br>* test_locale <br>* test_logger <br>* test_pbx <br>* test_poll <br>* test_sched <br>* test_security_events <br>* test_skel <br>* test_stringfields <br>* test_strings <br>* test_substitution <br>* test_time <br>* test_utils <br> <br>h3. Test Modules, Extended <br> <br>* N/A <br> <br>h3. Test Modules, Deprecated <br> <br>* N/A <br> <br>h2. Compiler Flags <br> <br>h3. Compiler Flags, Core <br> <br>* DONT_OPTIMIZE <br>* DEBUG_THREADS <br>* LOADABLE_MODULES <br>* LOTS_OF_SPANS <br>* MALLOC_DEBUG <br>* DEBUG_FD_LEAKS <br>* TEST_FRAMEWORK <br>* BETTER_BACKTRACES <br> <br>h3. Compiler Flags, Extended <br> <br>* STATIC_BUILD <br>* REBUILD_PARSERS <br>* LOW_MEMORY <br>* USE_HOARD_ALLOCATOR <br>* RADIO_RELAX <br>* G711_NEW_ALGORITHM <br>* G711_REDUCED_BRANCHING <br>* TEST_CODING_TABLES <br>* TEST_TANDEM_TRANSCODING <br>* BUSYDETECT_TONEONLY <br>* BUSYDETECT_COMPARE_TONE_AND_SILENCE <br>* BUSYDETECT_DEBUG <br>* IAX_OLD_FIND <br>* INTEGER_CALLERID <br>* RADIO_RTX <br>* RADIO_XPMRX <br>* MTX_PROFILE <br>* DEBUG_SCHEDULER <br>* DEBUG_THREADLOCALS <br>* DETECT_DEADLOCKS <br>* DUMP_SCHEDULER <br>* TRACE_FRAMES <br>* DO_CRASH <br>* THREAD_CRASH <br>* CHANNEL_TRACE <br>* SKINNY_DEVMODE <br> <br>h3. Compiler Flags, Deprecated <br> <br>* N/A <br> <br>h2. Voicemail Build Options <br> <br>h3. Voicemail Build Options, Core <br> <br>* FILE_STORAGE <br>* ODBC_STORAGE <br>* IMAP_STORAGE <br> <br>h3. Voicemail Build Options, Extended <br> <br>* N/A <br> <br>h3. Voicemail Build Options, Deprecated <br> <br>* N/A <br> <br>h2. Utilities <br> <br>h3. Utilities, Core <br> <br>* astcanary <br> <br>h3. Utilities, Extended <br> <br>* aelparse <br>* astman <br>* check_expr <br>* check_expr2 <br>* conf2ael <br>* hashtest <br>* hashtest2 <br>* muted <br>* refcounter <br>* smsq <br>* stereorize <br>* streamplayer <br> <br>h3. Utilities, Deprecated <br> <br>* N/A <br> <br>h2. AGI Samples <br> <br>h3. AGI Samples, Core <br> <br>* N/A <br> <br>h3. AGI Samples, Extended <br> <br>* agi-test.agi <br>* eagi-test <br>* eagi-sphinx-test <br>* jukebox.agi <br> <br>h3. AGI Samples, Deprecated <br> <br>h2. Module Embedding <br> <br>h3. Module Embedding, Core <br> <br>* N/A <br> <br>h3. Module Embedding, Extended <br> <br>* ADDONS <br>* APPS <br>* BRIDGES <br>* CDR <br>* CHANNELS <br>* CODECS <br>* FORMATS <br>* FUNCS <br>* PBX <br>* RES <br>* TEST <br> <br>h2. Built-in Features <br> <br>h3. Built-in Features, Core <br> <br>* Asterisk Manager Interface <br>* Featuers.conf (parking, dynamic, transfers, etc.) <br>* Pickup Groups <br>* HTTP Server <br>* Asterisk CLI <br> <br>h3. Built-in Features, Extended <br> <br>* N/A <br> <br>h3. Built-in Features, Deprecated <br> <br>* N/A <br> <br> <br>h2. MODULEINFO Configurations <br> <br></td></tr>
            <tr><td class="diff-unchanged" >At the top of modules there is the ability to set meta information about that module. Currently we have the following tags: <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h1><a name="AsteriskModuleSupportStates-Introduction"></a>Introduction</h1>

<p>In Asterisk, modules can take one of three supported states. These states include:</p>

<ul>
        <li>Core</li>
        <li>Extended</li>
        <li>Deprecated</li>
</ul>


<p>The definition of the various states is described in the following sections.</p>

<h2><a name="AsteriskModuleSupportStates-Core"></a>Core</h2>

<p>Most modules in Asterisk are in the Core state, which means issues found with these modules can freely be reported to the Asterisk issue tracker, where the issue will be triaged and placed into a queue for resolution.</p>

<h2><a name="AsteriskModuleSupportStates-Extended"></a>Extended</h2>

<p>This module is supported by the Asterisk community, and may or may not have an active developer. Issues reported against these modules may have a low level of support. Some extended modules have active community developers monitoring issues though.</p>

<h2><a name="AsteriskModuleSupportStates-Deprecated"></a>Deprecated</h2>

<p>The module will remain in the tree, but there is a better way to do it. After two release cycles issues that have been deprecated for some time will be listed in an email to the Asterisk-Dev list where the community will have an opportunity to comment on whether a deprecated module: still compiles, works sufficiently well, and is still being utilized in a system where there is a justification for not using the preferred module.</p>

<h1><a name="AsteriskModuleSupportStates-MODULEINFOConfigurations"></a>MODULEINFO Configurations</h1>

<p>At the top of modules there is the ability to set meta information about that module. Currently we have the following tags:</p>

<ul>
        <li><b>&lt;defaultenabled&gt;</b></li>
        <li><b>&lt;use&gt;</b></li>
        <li><b>&lt;depend&gt;</b></li>
</ul>


<p>The meta data added to <b>MODULEINFO</b> in the module causes data to be generated in <em>menuselect</em>. For example, when you use <b>&lt;defaultenabled&gt;no&lt;/defaultenabled&gt;</b> the module will not be selected by default. We would use the <b>&lt;defaultenabled&gt;</b> tag for <em>deprecated</em> modules so that they are not built unless explicitly selected by an Asterisk administrator.</p>


<h2><a name="AsteriskModuleSupportStates-AddingNewMetadata"></a>Adding New Metadata</h2>

<p>On top of the existing tags, we would add two additional tags to communicate via menuselect that a module was extended or deprecated (and what module supersedes the deprecated module). These tags include:</p>
<ul>
        <li><b>&lt;support_level&gt;</b>
        <ul>
                <li><em>Example: &lt;support_level&gt;deprecated&lt;/support_level&gt;</em>&nbsp; &#45;&#45; &nbsp;This module would be deprecated.&nbsp;Maintenance of this module may not exist. It is possible this module could eventually be tagged as deprecated, or removed from the tree entirely.&nbsp;</li>
        </ul>
        </li>
        <li><b>&lt;replacement&gt;</b>
        <ul>
                <li><em>Example: &lt;replacement&gt;func_odbc&lt;/replacement&gt;</em>&nbsp; &#45;&#45; &nbsp;The replacement for this module is the func_odbc module. This is used when the <em>&lt;support_level&gt;</em> is set to <b>deprecated</b>.</li>
        </ul>
        </li>
</ul>




<h3><a name="AsteriskModuleSupportStates-MenuselectDisplay"></a>Menuselect Display</h3>

<p>The following two images show the suggested menuselect output based on the addition of the <em>&lt;support_level&gt;</em> and <em>&lt;replacement&gt;</em> tags. This would be a new line that has not been used before, and therefore would be added to menuselect as that new line.</p>

<p>If the <b>deprecated</b> value is used, then the value between the <b>&lt;replacement&gt;</b> tags will replace the value of <em>app_superQ</em> as shown in the image below. The text surrounding <em>app_superQ</em> would be static (same for all modules that used <b>deprecated</b>).</p>

<p><span class="image-wrap" style=""><img src="/wiki/download/attachments/13076175/menuselect-deprecated.png?version=1&amp;modificationDate=1302809498781" style="border: 0px solid black" /></span></p>

<p>If the&nbsp;<b>&lt;support_level&gt;</b>&nbsp;tag is used, then the value of <em>extended</em> would cause the additional text of <b>&#42;</b>&#42; EXTENDED *<b>&#42;</b> to be displayed.</p>


<p><span class="image-wrap" style=""><img src="/wiki/download/attachments/13076175/menuselect-unmaintained.png?version=1&amp;modificationDate=1302809504910" style="border: 0px solid black" /></span></p>

<p>Display in menuselect-newt for supported modules. If no &lt;support_level&gt; is specified, then it is assumed the module is supported:</p>

<p><span class="image-wrap" style=""><img src="/wiki/download/attachments/13076175/menuselect-newt-supported.png?version=1&amp;modificationDate=1302812188961" style="border: 0px solid black" /></span></p>

<p>Display in menuselect-newt for extended modules:</p>

<p><span class="image-wrap" style=""><img src="/wiki/download/attachments/13076175/menuselect-newt-unmaintained.png?version=1&amp;modificationDate=1302812188978" style="border: 0px solid black" /></span></p>

<p>Display in menuselect-newt for deprecated modules:</p>

<p><span class="image-wrap" style=""><img src="/wiki/download/attachments/13076175/menuselect-newt-deprecated.png?version=1&amp;modificationDate=1302812188929" style="border: 0px solid black" /></span></p>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=13076175&revisedVersion=26&originalVersion=25">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>