PSARC 2008/364 Integrate Snack into Solaris

Frank Che Frank.Che at sun.com
Wed Jun 11 00:56:06 PDT 2008


Case material updated:

1. Updated the case proposal to integrate the Tcl/Tk extension only. 
Removed the support for Python and those C/C++ APIs. Propose to put the 
libraries to /usr/lib/tcl8.4/snack2.2.10 instead of /usr/lib/. New 
proposal was saved as spec.txt in case directory.
2. Updated the 'Snack.1t' man page file according to proposed changed, 
new file saved as 'Snack.1t.update1' in the 'material' sub-directory.
3. Removed those HTML documents on C/C++ APIs from the 'material' 
sub-directory.

Frank.

Garrett D'Amore wrote:
> Lin Guo wrote:
>> Hi Garrett,
>>
>> Thanks for your comments.
>>
>> Please don't worry about the audio interface. I will ask for your 
>> comment before switching to OSS to make sure everything is OK and 
>> nothing will be broken.
>> As for the C API and the location of the libraries and the "ext" 
>> example, they are the same issue: Whether the project should export 
>> the C/C++ API at this moment.
>> You know, now the only consumer of snack is "aMSN" which uses snack 
>> as a Tcl/Tk extension.
>> I am considering just export the Tcl/Tk related interfaces , leaving 
>> others in the following case when a consumer is identified.(As you 
>> suggested)
>> In that case, I will put the libraries to /usr/lib/tcl8.4/snack2.2 
>> directory since only "pkgindex.tcl" script will use them. The "ext" 
>> directory will not be delivered.
>> I will modify the proposal based on above description. Any comments 
>> will be greatly appreciated.
>
> This sounds like a great plan to me.  Thanks.
>
>    -- Garrett
>>
>> Thanks,
>> Lin
>>
>> Garrett D'Amore wrote:
>>> Lin Guo wrote:
>>>> Garrett D'Amore wrote:
>>>>>
>>>>> I have a couple of concerns here.
>>>>>
>>>>> 1) What are the dependencies of snack for audio?  Can it support 
>>>>> OSS?  Can it support Sun Audio?  How is the selection made (if 
>>>>> any)?  (PSARC 2008/318 specifies a task to introduce OSS into 
>>>>> Solaris, and I'm concerned that adding a new layer of middleware 
>>>>> creates more work for my project.  While this shouldn't act as a 
>>>>> show stopper for this case, it does suggest that we should 
>>>>> probably communicate offline.)
>>>> Snack supports Sun Audio,  OSS and ALSA. Compiling snack with 
>>>> different configure flag may enable different audio support.
>>>> Whenever OSS is integrated to Solaris and is stable, I will change 
>>>> snack to OSS since OSS has new features that not provided by Sun 
>>>> Audio.
>>>
>>> Okay, as long as it won't automatically switch to OSS when OSS 
>>> integrates (e.g. by way of autoconf), then we're OK.  We will want 
>>> to switch, but I think we want to control the "when", to make sure 
>>> we don't mess up support for Sun Ray, which will probably be 
>>> delivered in a subsequent phase.
>>>
>>>>>
>>>>> 2) /usr/lib/libsound.so seems *awfully* generic as a name to me.  
>>>>> My concern here is that this will create problems or conflicts 
>>>>> with other audio middleware?  Can the project team provide more 
>>>>> detail about why this particular name is required?  (It seems like 
>>>>> you also have libsnack.  Is libaudio just a symbolic link to 
>>>>> libsnack?  Has the project team done any survey of other FOSS 
>>>>> systems to verify that a) this libaudio doesn't conflict with any 
>>>>> known uses, and b) the Snack libraries are popular enough to 
>>>>> minimize the likelihood of any new conflicts occurring in the future?
>>>> It really my concerns when I saw the "awful" name.  libsound is not 
>>>> a symbolic link to libsnack, it provides similar functionalities to 
>>>> libsnack except graphics support.
>>>> I looked into other FOSS systems and found that libsound is in 
>>>> /usr/lib too. Google results prove that snack libraries are popular 
>>>> enough to prevent conflicts with  other libraries.
>>>
>>> OK.   If you're confident that this won't be an issue, then I'm 
>>> happy.  (Can you, off hand, name any distros which have this 
>>> installed or delivered either by default, or as a commonly used 
>>> add-on?  I did see RPMs for it, but I'm not sure if that means it is 
>>> popular or not.)
>>>
>>>>
>>>>>
>>>>> 3) Your case describes Python and Tcl/Tk, but your materials 
>>>>> include a C API.  Is there a need to make this public at this time 
>>>>> (are there any consumers for this now, or anticipated in the future)?
>>>> There is no consumers for this C API now. But the C API is a part 
>>>> of snack project. Using it, you could write your own snack 
>>>> extensions in C/C++. You can also create custom commands that 
>>>> operate on Snack's sound objects. That means if snack Tcl/Tk 
>>>> commands are not enough for your application. You could create 
>>>> custom commands to extend Snack and then use the commands just as 
>>>> any other Snack sound commands in writing your application.
>>>
>>> Can I make a suggestion then, that you start with the C/C++ API 
>>> being Project Private for now.  It will be quite easy to uplevel the 
>>> API later, if it proves to be desirable or necessary, but without 
>>> any identified consumers, I prefer to take the safe road and avoid 
>>> making promises.  (Plus, this frees the project team from having to 
>>> supply documentation for those APIs.)
>>>
>>> Another way of looking at it is, if you don't have any consumers, 
>>> then you really can't be sure what the stability of the API will be.
>>>
>>> Note that this is only a *suggestion*, so take it or leave it at 
>>> your discretion.
>>>
>>>>>
>>>>>
>>>>> 4) /usr/share/doc/snack-2.2/ext/aclocal.m4 -- is this snack's 
>>>>> actual m4 that it uses for its own configuration, or is this 
>>>>> intended as samples for applications to include in their own 
>>>>> autoconf scripts to detect snack?  (If only the former, please 
>>>>> remove it.  If the latter, then it sounds good to me.)
>>>> It is the latter. A whole example of how to write a snack extension 
>>>> is in "ext" directory including the m4 file.
>>>
>>> Ah, so that's what the ext is.  Are such extensions C/C++, or are 
>>> they are written in some other language?  (Again, while this sounds 
>>> possibly interesting, I think it leads into the questions in 3 above 
>>> -- if there are no known consumers, might be better to add the work 
>>> to make it public in a following case, when at least one consumer is 
>>> identified.)
>>>
>>>>
>>>> Thanks for your comments,
>>>
>>> Sure.  I appreciate your answers to my questions.  It sounds like 
>>> your project is right on track.
>>>
>>>    - -Garrett
>>>
>>>> Lin
>>>>>
>>>>>    -- Garrett
>>>>>
>>>>> Thanks!
>>>>>
>>>>>    -- Garrett
>>>>>
>>>>> Frank Che wrote:
>>>>>> I'm sponsoring this fast track case for Lin Guo. The timer is set to
>>>>>> 06/12/2008. This case is to integrate an open source package, snack
>>>>>> sound toolkit, into Solaris. It requests a minor release binding.
>>>>>>
>>>>>> Two man page files created by the submitter and those HTML documents
>>>>>> provided by snack are placed in the 'material' sub-directory of 
>>>>>> this case.
>>>>>>
>>>>>> A contract with Python is in progress now.
>>>>>>
>>>>>> -Frank
>>>>>>
>>>>>> Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
>>>>>> This information is Copyright 2008 Sun Microsystems
>>>>>> 1. Introduction
>>>>>> 1.1. Project/Component Working Name:
>>>>>>  Integrate Snack into Solaris
>>>>>> 1.2. Name of Document Author/Supplier:
>>>>>>  Author: Lin Guo
>>>>>> 1.3 Date of This Document:
>>>>>>  04 June, 2008
>>>>>>
>>>>>> 4. Technical Description
>>>>>>  Summary
>>>>>>
>>>>>>  This project integrates snack into Solaris.
>>>>>>  This project requests a minor binding.
>>>>>>
>>>>>> 4.1 Proposal
>>>>>>
>>>>>> The Snack Sound Toolkit is a open source package. It is designed 
>>>>>> to be
>>>>>> used with a scripting language such as Tcl/Tk or Python.  Using 
>>>>>> Snack
>>>>>> you can create powerful multi-platform audio applications with 
>>>>>> just a
>>>>>> few lines of code.
>>>>>>
>>>>>> With features such as:
>>>>>>
>>>>>>  * High level sound objects, with flexible storage management and
>>>>>>    streaming support.
>>>>>>  * Multiple simultaneous playback and recording threads (system
>>>>>>    dependent).
>>>>>>  * All audio data handled as floating point internally for fast and
>>>>>>    accurate computations.
>>>>>>  * Multi-platform support.
>>>>>>  * Script compilation tool included, for easy deployment using
>>>>>>    stand-alone executables.
>>>>>>  * Filters which can be used to process sound objects or during
>>>>>>    playback for on-the-fly operation.
>>>>>>  * Visualization with waveforms, spectrograms, and spectrum 
>>>>>> sections.
>>>>>>    Postscript support.
>>>>>>  * Real-time visualization/spectrum analysis.
>>>>>>  * Web enabled, possible to run scripts embedded in web pages 
>>>>>> through
>>>>>>    the use of the Tcl Plugins
>>>>>>  * Extensible, new commands, filters, and sound file formats can be
>>>>>>    added using the Snack C-library.
>>>>>>  * Lots of examples included as well as a skeleton C-extension.
>>>>>>  * Supported sound file formats: WAV, AU, AIFF, MP3, CSL, SD, SMP.
>>>>>>
>>>>>> The first consumer of the library is aMSN -- a free open source MSN
>>>>>> Messenger clone which is an Indiana package. AMSN uses snack for 
>>>>>> voice
>>>>>> clips support.
>>>>>>
>>>>>> 32 and 64 bit libraries will be provided.
>>>>>>
>>>>>> snack provides detailed documentations in html format and examples
>>>>>> describing snack tcl commands and python commands that will be 
>>>>>> released
>>>>>> with the integration.  New man pages will be provided pointing to 
>>>>>> the
>>>>>> html documentations. They are included in case directory.
>>>>>>
>>>>>> 4.2 Interfaces
>>>>>>
>>>>>> Exported Interface                          | Stability    
>>>>>> |Description
>>>>>> --------------------------------------------|--------------|------------------- 
>>>>>>
>>>>>> SUNWsnack                                   | Uncommitted  | 
>>>>>> package name
>>>>>> /usr/include/snack/snack.h                  | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/snackDecls.h             | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/confdefs.h               | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkAudIO.h                | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkCanvItems.h            | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkFormant.h              | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkFormatMP3.h            | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkGetFO.h                | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/include/snack/jkSound.h                | Uncommitted  | 
>>>>>> header file
>>>>>> /usr/lib/libsnackstub2.2.a                  | Uncommitted  | 
>>>>>> stubs library
>>>>>> /usr/lib/64/libsnackstub2.2.a               | Uncommitted  | 
>>>>>> stubs library
>>>>>> /usr/lib/snackConfig.sh                     | Uncommitted  | 
>>>>>> snack extension config script
>>>>>> /usr/lib/64/snackConfig.sh                  | Uncommitted  | 
>>>>>> snack extension config script
>>>>>> /usr/lib/libsnack.so                        | Committed    | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/libsnack.so.2                      | Uncommitted  | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/libsnack.so.2.2.10                 | Uncommitted  | 
>>>>>> snack library
>>>>>> /usr/lib/64/libsnack.so                     | Committed    | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/64/libsnack.so.2                   | Uncommitted  | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/64/libsnack.so.2.2.10              | Uncommitted  | 
>>>>>> snack library
>>>>>> /usr/lib/libsound.so                        | Committed    | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/libsound.so.2                      | Uncommitted  | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/libsound.so.2.2.10                 | Uncommitted  | 
>>>>>> snack library
>>>>>> /usr/lib/64/libsound.so                     | Committed    | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/64/libsound.so.2                   | Uncommitted  | 
>>>>>> snack library symbolic link
>>>>>> /usr/lib/64/libsound.so.2.2.10              | Uncommitted  | 
>>>>>> snack library
>>>>>> /usr/lib/tcl8.4/snack2.2/pkgIndex.tcl       | Uncommitted  | tcl 
>>>>>> package index
>>>>>> /usr/lib/tcl8.4/snack2.2/snack.tcl          | Uncommitted  | 
>>>>>> snack script library
>>>>>> /usr/lib/python2.4/site-packages/tkSnack.py | Uncommitted  | 
>>>>>> python script
>>>>>> /usr/lib/python2.4/site-packages/tkSnack.pyc| Uncommitted  | 
>>>>>> Python Compiler Script
>>>>>> snack APIs                                  | Uncommitted  | C 
>>>>>> functions
>>>>>> ---------------------------------------------|-------------|-------------------- 
>>>>>>
>>>>>>
>>>>>> Documents delivered:
>>>>>>
>>>>>> /usr/share/man/man1t/snack.1t
>>>>>> /usr/share/man/man3/libsnack.3
>>>>>> /usr/share/doc/snack-2.2/BSD.txt
>>>>>> /usr/share/doc/snack-2.2/COPYING
>>>>>> /usr/share/doc/snack-2.2/README
>>>>>> /usr/share/doc/snack-2.2/changes
>>>>>> /usr/share/doc/snack-2.2/html/AddSubCmd.html
>>>>>> /usr/share/doc/snack-2.2/html/Callback.html
>>>>>> /usr/share/doc/snack-2.2/html/CreateFilter.html
>>>>>> /usr/share/doc/snack-2.2/html/FileFormat.html
>>>>>> /usr/share/doc/snack-2.2/html/SampConv.html
>>>>>> /usr/share/doc/snack-2.2/html/SnackLib.html
>>>>>> /usr/share/doc/snack-2.2/html/SoundData.html
>>>>>> /usr/share/doc/snack-2.2/html/SoundObj.html
>>>>>> /usr/share/doc/snack-2.2/html/SoundProp.html
>>>>>> /usr/share/doc/snack-2.2/html/SoundSamp.html
>>>>>> /usr/share/doc/snack-2.2/html/tcl-man.html
>>>>>> /usr/share/doc/snack-2.2/html/python-man.html
>>>>>> /usr/share/doc/snack-2.2/examples/python/*.py
>>>>>> /usr/share/doc/snack-2.2/examples/tcl/*.tcl
>>>>>> /usr/share/doc/snack-2.2/ext/Makefile.in
>>>>>> /usr/share/doc/snack-2.2/ext/README
>>>>>> /usr/share/doc/snack-2.2/ext/aclocal.m4
>>>>>> /usr/share/doc/snack-2.2/ext/configure
>>>>>> /usr/share/doc/snack-2.2/ext/configure.in
>>>>>> /usr/share/doc/snack-2.2/ext/square.c
>>>>>> /usr/share/doc/snack-2.2/ext/square.dsp
>>>>>> /usr/share/doc/snack-2.2/ext/square.vcproj
>>>>>> /usr/share/doc/snack-2.2/ext/test.tcl
>>>>>>
>>>>>>
>>>>>> Imported Interface      | Stability       | Description
>>>>>> ------------------------+-----------------+-------------
>>>>>> libtcl/libtk 8.4.14     | Uncommitted     | PSARC 2007/317
>>>>>> Python 2.4.x            | External        | PSARC 2005/532
>>>>>> ------------------------+-----------------+-------------
>>>>>>
>>>>>> 4.3 References
>>>>>>
>>>>>> [1] http://www.speech.kth.se/snack/
>>>>>> [2] PSARC 2007/317 Tcl/Tk upgrade to 8.4.14
>>>>>> [3] PSARC 2005/532 Python 2.4.x
>>>>>>
>>>>>> 6. Resources and Schedule
>>>>>> 6.4. Steering Committee requested information
>>>>>> 6.4.1. Consolidation C-team Name:
>>>>>>          SFW
>>>>>> 6.5. ARC review type: FastTrack
>>>>>> 6.6. ARC Exposure: open
>>>>>>
>>>>>
>>>
>



More information about the opensolaris-arc mailing list