The MiniSplat Project
The MiniSplat Project seeks to provide the highest quality Free/Libre and Open Source internet collaboration technologies, focusing initially on VoIP solutions. Originally developed by students at the Royal Institute of Technology (KTH, Stockholm, Sweden) and other (Non-KTH) volunteer developers, the minisip software stack and applications were forked as the starting point of development, production, and maintenance.
At present, The MiniSplat Project's activities and deliverables differ from minisip's primarily in the underlying organization, goals, and processes that are used to coordinate and produce them. Differences in the code will begin to emerge over time, as the different projects move toward their respective design horizons.
Background
The MiniSplat Project was started by Zachary T Welch of Superlucidity Services, LLC, on May 21, 2006. The initial fork was accomplished using components from his (still unreleased) GUFT project, originally developed using experience he gained from forking Gentoo into The Zynot Foundation in 2003.
The name, MiniSplat, reflects Zach's comprehensive vision for re-using the minisip stack in a variety of new embedded contexts, including a low-resource SIP server. The word "splat" is frequently used to describe the asterisk in mathematical discourse; developers frequently use Kleene Stars in regular expressions in order to indicate "all strings of valid symbols." Splat denotes the wildcard that will accept just about anything - but according to well-defined and understood rules.
His preliminary vision was originally presented on the minisip mailing list. As summarized there, The MiniSplat Project will strive to become "the BusyBox of SIP client/server solutions." This vision implies a manifest of additional supplemental infrastructure components, complementing existing and emerging SIP technologies. At present, full NAT traversal solutions, simple streaming media clients and servers, and additional rich media communication technologies are being considered. One logical conclusion involves extending SplatSip (and the relevant MiniSplat Internet Libraries) to provide complete Back-to-Back User Agent (B2BUA) capabilities.
After miscommunications surrounding his contributions for project management, Zach found his write access to the minisip repository revoked, and both his technical and management suggestions were excluded from subsequent consideration. Aside from the code's heritage, this project does not presently expect to have an ongoing relationship with the minisip project or its maintainers; nevertheless, functional additions, changes, or fixes in their original code will be incorporated on a periodic basis.
The MiniSplat Project and its founders intend to honor and respect the respective GNU Free Software Licenses under which the minisip works were originally released, including the meritocratic ideals that are outlined by the terms and general principles therein.
The MiniSplat Suite
The MiniSplat Project has developed The MiniSplat Suite as the primary means of delivering the required libraries and applications. This project combines all of the discrete LGPL/GPL components, which are each available separately.
- The MiniSplat Suite includes the
following components:
- The GUFT ARMPIT build.pl development system.
MiniSplat Libraries (LGPL)
MiniSplat Core Libraries
- libsplutilities: Core Utility Library
- libsplcrypto: Core Cryptography Library (AES, base64, HMAC, SHA, TLS, X509)
- libsplnetwork: Core Networking Library
MiniSplat Internet Libraries
- libsplmikey: Multimedia Internet Keying (MIKEY) Library
- libsplrtp: (Secure) Real-Time Protocol ((S)RTP) Library (not yet refactored)
- libsplsdp: Session Description Protocol (SDP) Library (not yet refactored)
- libsplsip: Session Initiation Protocol (SIP) Library
- libsplstun: STUN Client/Server Library (server incomplete)
- libsplzrtp: ZRTP Key Exchange Library (not yet refactored; incomplete)
MiniSplat Audio Support Libraries
- libsplaudio: Audio Support Library (not yet refactored)
- libsplaudio-codecs: Free Audio Codecs (G711, G721, G722, G723, speex)
MiniSplat Video Stream Support Libraries
- libsplvideo: Video Stream Support Library (not yet refactored)
- libsplvideo-codecs: Free Video Codecs (H.263/MPEG-4) (not yet refactored)
MiniSplat Video Grabber Support Libraries
- libsplgrabber: Video Grabber Support Library (not yet refactored)
- libsplgrabber-v4l: Video4Linux Video Grabber Plug-in (not yet refactored)
- libsplgrabber-ieee1394: IEEE1394 Video Grabber Plug-in (not yet refactored)
MiniSplat Video Display Support Libraries
- libspldisplay: Video Display Support Library (not yet refactored)
- libspldisplay-sdl: SDL Video Display Plug-in (not yet refactored)
- libspldisplay-x11: X11 Video Display Plug-in (not yet refactored)
- libspldisplay-xv: X11/XVideo Display Plug-in (not yet refactored)
MiniSplat Application Libraries
libsplatsip: Kitchen Sink Library (requires refactoring)
The following features will be remain in libsplatsip: Core UI, Conferencing, and more.
The following features will be moved into other libraries: SDP, {,S,Z}RTP, Audio Core and Plug-ins, Audio Spatialization, Automatic Echo Cancellation, Video Core, Video Display and Grabber Plug-ins, Audio and Video Codecs, Configuration, Contact Database, Push-to-Talk, and more.
MiniSplat Utilities (GPL)
- splatsniffer: The SplatSniffer SIP Analysis Package (not yet refactored)
- splatcapture: The SplatGrab Audio Setup Utility Package (unimplemented)
- splatgrabber: The SplatGrab Video Setup Utility Package (unimplemented)
MiniSplat Applications (GPL)
- splatsip: SplatSip User Agents (GTK, QT, ncurses) (requires refactoring)
- splatsip: SplatSip CLI User Agent (not yet refactored)
- gsplatsip: SplatSip GTK+ User Agent (not yet refactored)
- qsplatsip: SplatSip QT User Agent (not yet refactored; incomplete)
- splatstun: The SplatSTUN Client/Server Package (server incomplete)
- splatsip: SplatSip User Agents (GTK, QT, ncurses) (requires refactoring)
To facilitate broad distribution of the free packages, the following additional projects are distributed separately, because their licensing requirements are incompatible with the core LGPL/GPL licenses.
- Packages not included with
The MiniSplat Suite:
- libsplaudio-ilbc-codec: MiniSplat iLBC Audio Codec.
If you are going to try to build these packages on your own, you should probably grab the composite minisplat-suite package; this allows you to build all of the latest components in one step. The process of building the individual components takes a lot of knowledge and experience and will generally only be supported for distribution packagers and developers.
Licensing
The MiniSplat Libraries were (and will continue to be) licensed under the GNU Lesser General Public License (LGPL).
The MiniSplat Applications were (and will continue to be) licensed under the GNU General Public License (GPL).
Copies of these license are included in each package as either COPYING.LIB or COPYING, respectively.
A few packages may be licensed under additional (non-free) terms, such as the iLBC audio plug-in.
Download
We are presently working to produce the first set of tarballs and Gentoo ebuilds; additional platform support will be provided once contributors step forward to take responsibility for their care and feeding. This first release will provide an opportunity to test an entire year of contributions made to the original minisip code base, along with additional fixes and improvements that Zach had pending before the fork.
On Linux systems, the following commands should prepare you for development, retrieve the current trunk, and save a clean copy. These steps help reduce the cost of complete checkouts, which helps conserve server resources:
# create a local directory to hold working copies of the repository
mkdir minisplat
cd minisplat
# check out the trunk; save it as a "fresh" copy
svn co http://svn.minisplat.org/svn/src/trunk original
cp -a original mybranch
# now build and run mybranch; see README.build for more information
cd mybranch
./build.pl run minisplat
Contribute
At the moment, the project is seeking contributors in order to plan and execute its release cycle; however, we will be hard pressed to work with those who can not work by themselves:
- At present, some experience is required; leadership skills are highly desirable. If you do not expect to be able to contribute, please consider visiting minisip.org to thank the original developers for their contribution to the open source community. As it is, we will never be able to thank them enough.
- We have not produced our first release, so we will not need very many beta testers. Once our that release cycle has been completed, we will encourage wide participation in such a program; however, we want to limit such implict obligations for good support while still organizing the project. If you are interested in being a MiniSplat Tester, you are encouraged to contact the appropriate Project Group Leader(s).
Developers, web designers, documentation writers, translators, and other potential submitters are welcome to checkout the Subversion repository. In particular, the /Documentation/roadmap area of the repository lists the active groups, milestones, and contributors; new contributors should start there in order to learn about the project's tactical and strategic policies and procedures, and how to fit into them.
Maintainers for Debian/Ubuntu, Red Hat, and Win32 are needed immediately; in addition, we will begin pursuing a MacOSX port this summer, and we hope that others will join us in (or beat us to) starting that project.
Contact
Zach prefers to use IRC ( #minisplat on irc.freenode.net) for interacting with contributors involved in the project. Whenever possible, he will provide comprehensive support in that forum to help new participants to begin working with the MiniSplat code and applications. If you are new to IRC, we recommend Mozilla and Firefox users install the ChatZilla extension; if you use another browser, you will need to find a different IRC client.
After establishing contact in the IRC channel, additional support may available by arranging voice/video calls between existing project members, if such seems appropriately convenient and expedient. In fact, many problems should be solved in this way; after all, we are working to build the software to enable such communication! In addition to providing valuable testing experience and feedback, these calls permit critical verbal and visual cues to convey a better mutual understanding. When discussing emotionally charged issues, Zach has repeatedly demonstrated that his attempts to correspond about such topics have almost always resulted in gross misinterpretations and hurt feelings.
In addition, the project uses several mailing lists for persistent communications; these lists are archived for public access. If you have any questions, comments, or other feedback, please send them to the appropriate list or directly to Zachary T Welch (zach@minisplat.org). Additional contact information may be obtained from the DNS records for minisplat.org.