[asterisk-commits] russell: trunk r181292 - /trunk/doc/google-soc2009-ideas.txt
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Mar 11 11:19:41 CDT 2009
Author: russell
Date: Wed Mar 11 11:19:38 2009
New Revision: 181292
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=181292
Log:
Replace contents of this doc with a pointer to its new home
Modified:
trunk/doc/google-soc2009-ideas.txt
Modified: trunk/doc/google-soc2009-ideas.txt
URL: http://svn.digium.com/svn-view/asterisk/trunk/doc/google-soc2009-ideas.txt?view=diff&rev=181292&r1=181291&r2=181292
==============================================================================
--- trunk/doc/google-soc2009-ideas.txt (original)
+++ trunk/doc/google-soc2009-ideas.txt Wed Mar 11 11:19:38 2009
@@ -1,197 +1,3 @@
-================================================================================
-=== Google Summer of Code 2009 ===
-=== ===
-=== http://www.asterisk.org/ ===
-=== ===
-=== <asteriskteam at digium.com> ===
-================================================================================
+This document now lives here:
---------------------------------------------------------------------------------
---- Personnel ------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-Administrator: Russell Bryant
-
-Mentors: Russell Bryant
- Joshua Colp
- Mark Michelson
- Tilghman Lesher
- Luigi Rizzo
-
-Contact:
-
- To get in contact with mentors or the Asterisk development community in
- general, the best place is the asterisk-dev mailing list, hosted on
- http://lists.digium.com/. Alternatively, many developers can be found in
- the #asterisk-dev IRC channel on Freenode. The most active time for this
- channel on IRC is during US business hours.
-
- Feel free to get in contact with the development community ahead of time if
- you are a student interested in applying for a project with Asterisk. We
- can help explain projects proposed here, or help come up with potential
- alternative project proposals.
-
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
---- Project Ideas --------------------------------------------------------------
---------------------------------------------------------------------------------
-
-1) There are a number of projects that fall into the category of improving and
- creating new interfaces for developers to interface with Asterisk. To get a
- bit of an idea for the higher level vision of this effort, see the following
- wiki page: <http://astridevcon.pbwiki.com/Codename-Pinemango/>.
-
- Some insight regarding the motivation for this overall effort is captured
- in this mailing list post, written by Brian Degenhardt.
-
- - http://lists.digium.com/pipermail/asterisk-dev/2008-October/034700.html
-
- Specific project ideas in this area are listed here:
-
- a) Create a generic "data get" layer for Asterisk components to be able to
- expose data that they maintain. Currently, modules implement specific
- code to implement CLI commands, manager interface actions, and so forth,
- while it would be much nicer to have this data available through a common
- interface. For example, SNMP support has been added to Asterisk but is
- limited in what it can expose due to the lack of this interface. This
- project would be to create the infrastructure for this data layer and some
- uses to prove its functionality. Then, various parts of Asterisk could
- be converted as time permits. Note that this may end up sharing some code
- with the "data put" interface in part b.
-
- b) Create a generic "data put" layer for Asterisk components to allow
- external interfaces to update configuration items, as opposed to having
- to issue a full configuration reload to account for a single change.
- This project would involve writing the infrastructure and some basic usage
- to prove its functionality. Various parts of Asterisk could be converted
- as time permits. Note that this may end up sharing some code with the
- "data get" interface in part a.
-
- c) Improve the performance of cache handling in the event core. The event
- API in Asterisk provides a generic interface for subscribing to and
- publishing asynchronous events. It also provides a caching mechanism for
- events that represent state changes. So, to find out a state, you can
- pull it out of the event cache. For example, the state of devices as used
- for presence is handled using this mechanism. The data structures
- currently used for maintaining the cache are not optimal for performance
- when the cache gets large. This project would be to write code to
- benchmark the performance of the caching mechanism, and then implement a
- new storage mechanism that is more efficient.
-
- d) Develop a method for federating Asterisk servers using distributed events
- with a transport suitable for communication beyond a LAN. The current
- event infrastructure includes ways to hook in and distribute events
- between servers. There is a module which implements this, res_ais, but
- it is only suitable for federating servers on a high speed LAN. This
- project would be to implement a new event distribution module using a
- protocol such as XMPP, or something else if deemed appropriate.
-
- e) Implement a method that makes it very easy to add synchronous hooks
- throughout the code base. Hooks are arbitrary callbacks within the
- internals of asterisk where external components can modify asterisk's
- behavior. While the dialplan allows applications to control much of the
- asterisk behavior, hooks allow for business logic to be applied to
- situations that are not associated with a call (eg: a sip registration
- hook could allow time-governed registration period), or for situations
- that occur during the execution of a dialplan application (eg: codec
- negotiation hook to apply business logic to codecs proposed in the middle
- of a Dial command, or a transfer hook to execute business logic when a
- SIP REINVITE is received).
-
- f) Asterisk has a relatively new generic asynchronous event API. While it
- has been implemented in several areas of the code base, one place where
- it has not been utilized but would make a great fit would be to replace
- the legacy code used for generating events on the Asterisk Manager
- Interface (AMI). The first phase of this project would be to go through
- the code base and generate new generic Asterisk events in places where
- manager events are generated today. That means that those events would
- be available to any part of Asterisk that would be interested in doing
- something with them in a binary format as opposed to a big string.
-
- As time permits, a second phase to this project would be to either write
- a new socket based interface that exposes the generic event API, or to
- modify the existing manager interface to use the ast_event API to handle
- receiving events from inside of Asterisk to send to manager clients.
-
-2) This section contains projects related to Voicemail support in Asterisk.
-
- a) Extract the support for storage backends into an API to reduce code
- complexity and its ability to be reused. The current Asterisk voicemail
- application supports storing voicemail on the filesystem, in a database
- via ODBC, and on an IMAP server. All of the storage code should be pulled
- out into a form such that it makes the current app_voicemail easier to
- maintain, but also allows the backend storage code to be used in a next
- generation voicemail implementation, or potentially other things in
- Asterisk that would like to use these interfaces.
-
- b) One feature that has been widely desired for Asterisk voicemail is the
- ability to customize menu layout. This project would be to improve
- existing code, or develop a new voicemail application that supports
- customizable menu layout. The app_minivm module currently in Asterisk
- is one way of approaching this project, which is to break up current
- Voicemail functionality into smaller applications to make it easier to
- build a custom voicemail system in the dialplan. Luigi Rizzo had a
- student work on a project to create a new voicemail system that included
- these features that has some work left to be completed.
-
-3) This section includes projects related to improving the Asterisk console and
- logging interfaces.
-
- a) Improve the way "verbose logging" works in Asterisk. Currently, the
- Asterisk console and logging system only supports a single verbose level.
- However, it would be extremely useful to allow a verbose setting per
- console, and per log file that verbose output is being sent to.
-
- b) Improve Asterisk logging such that advanced filtering is available at the
- console so that output related to a single call is available without
- having to see the output for other calls. Lack of support for debugging
- individual calls has been a long standing difficulty for Asterisk
- administrators on busy systems.
-
- c) In addition to being used as an administrative interface, the Asterisk
- console can also be used for making calls using the system audio and
- video interfaces. In this sense, Asterisk can be used as a highly
- configurable console based soft phone. Luigi Rizzo and some of his
- students have put a lot of work into adding video support to the Asterisk
- console when being used as a softphone. This project would be to work
- with Luigi to continue this effort to improve the GUI that opens up for
- handling calls. This would involve adding some buttons to handle calls
- and contact lists, controlling the active audio source for a call, and
- adding standard telephone buttons.
-
-4) This section includes projects related to internationalization.
-
- a) One of the projects that Luigi Rizzo previously worked on was replacing
- the "say.c" code that implemented language support for saying dates and
- times in C code, with an implementation that allows additional languages
- to be added via a configuration file with special syntax. This project
- would be to work with Luigi to enhance this code to better handle
- languages where words change in multiple ways depending on gender and
- number, and also adding more languages to the sample configuration file
- that is distributed with Asterisk.
-
-5) This section includes projects related to portability to other operating
- systems.
-
- a) Asterisk has been ported to cygwin a couple of times over the years, but
- tends to bitrot due to lack of continued support by developers. This
- project would be to revisit the current state of cygwin support and get
- it working well in Asterisk 1.6. It should already compile, or be very
- close to it. However, there is some testing to be done to ensure that
- things work properly. Also, it would be most excellent to get a console
- channel driver functioning in cygwin (chan_oss, chan_console, etc.).
-
-6) There are a number of potential projects that could be done to improve
- security in Asterisk. A document that lists some of the security challenges
- currently faced and some ideas for improvements that could be made can be
- found in the following document:
-
- http://astridevcon.pbwiki.com/Network-Security-Framework
-
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-================================================================================
-================================================================================
+ http://svn.digium.com/view/asterisk/team/group/gsoc-2009/ideas.txt?view=markup
More information about the asterisk-commits
mailing list