[Freeswitch-users] [Freeswitch-dev] Seeking collaborators for FreeSWITCH/Lua scripting toolkit

Chad Phillips chad at apartmentlines.com
Fri Jan 29 02:05:42 MSK 2016


Hi Artur,

I used Jester to write an almost exact replica of Asterisk's Comedian Mail
(1.2/1.4), it can definitely do a lot more than just IVR/menu stuff.

I would not recommend using Jester for things that the XML dialplan can do.
I'm guessing you could, but it was designed to provide reusable modules for
more advanced scripting tasks like database access, custom voicemail
workflows, etc.

Please feel free to contact me on IRC  (hunmonk) if you have any more
technical questions.

On Thu, Jan 28, 2016 at 1:08 AM, Artur Mega <findmeinwland at gmail.com> wrote:

> Good day, I have a question for Chad. Is Jester good only for writing
> IVR-menu? I'm planning to write dialplan in lua this days, for incoming and
> outgoing calls. So I want tot know pros and cons of Jester, where I can use
> it, it is good for what?
>
>
> 2016-01-28 3:02 GMT+05:00 Anthony Minessale <anthony.minessale at gmail.com>:
>
>> Lets avoid going offtopic in threads:
>>
>> UserA: I would like to have a pool party, who wants to come?
>> UserB: Why would you have a party in a pool.  The beach is much better.
>> UserA: I feel the pool is cleaner and has warmer water.
>> UserB: Only fools swim in unnatural bodies of water.  A real lake is much
>> better.
>> UserA: I've always enjoyed pools and had fun swimming in them.
>> UserB: Let me demonstrate how to properly have a beach party.
>>
>> Lets keep things in context.  If he said he wants to find collaborators
>> to build IVR driven by hamster wheel, its not relevant if its a good idea
>> or not.
>> I'm sure there are valuable opinions here but we should save it for when
>> they are asked for.
>>
>>
>>
>>
>>
>> On Wed, Jan 27, 2016 at 3:49 PM, Stanislav Sinyagin <ssinyagin at gmail.com>
>> wrote:
>>
>>> well, maybe I just dislike Lua :)
>>>
>>> but the approach that I described is not only about performance, but
>>> also about fault tolerance, and probably also a geographically
>>> distributed scenario. If properly designed, it could give much better
>>> flexibility and scalability.
>>>
>>>
>>>
>>> On Wed, Jan 27, 2016 at 7:13 PM, Chad Phillips <chad at apartmentlines.com>
>>> wrote:
>>> > Stanislav,
>>> >
>>> > I'm guessing I could count on one hand the number of times any of my
>>> > production systems have had to process 30 calls in one second, and
>>> I've been
>>> > using FreeSWITCH since the earliest releases in a mission critical
>>> > application for my primary telecom business.
>>> >
>>> > I can certainly appreciate that some FreeSWITCH users need to think at
>>> giant
>>> > scale and about how they can squeeze every last ounce of performance
>>> out of
>>> > their instances, I've just never had to do it. Perhaps this experience
>>> > reflects in my library. :)
>>> >
>>> > Still, I'm not convinced that doing it the way I have costs a lot in
>>> > performance. I think it would be interesting to whip up a few simple
>>> load
>>> > testing scenarios, and run one set via dialplan only or dialplan with
>>> > focused Lua scripts, and another set through Jester. Do you have any
>>> > thoughts on what that set of scenarios might look like to effectively
>>> gauge
>>> > the performance difference?
>>> >
>>> > Chad
>>> >
>>> > On Mon, Jan 25, 2016 at 4:13 PM, Stanislav Sinyagin <
>>> ssinyagin at gmail.com>
>>> > wrote:
>>> >>
>>> >> Chad,
>>> >>
>>> >> if it's a daemon that stays in memory, it doesn't need to be written
>>> >> in C. It just needs to handle concurrent requests efficiently. It
>>> >> could be anything like python, perl, java... or golang which beats
>>> >> them in performance because it's compiled into native code. But the
>>> >> bottleneck would anyway be in I/O or database lookups, so it should
>>> >> simply be the language which you master the best.
>>> >>
>>> >> The nice thing about ESL is that it allows you to build a clusterized
>>> >> environment, with separated functional nodes and easily scalable. Then
>>> >> you may, for example, keep FreeSWITCH on a physical CPU churning its
>>> >> real-time tasks, and the application logic on a set of virtual
>>> >> machines with less-demanding SLA.
>>> >>
>>> >> I know some guys who implement this with Node.js. I'm not sure it's
>>> >> the right choice, but still it shows adequate performance.
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >>
>>> >> On Mon, Jan 25, 2016 at 11:20 PM, Chad Phillips <
>>> chad at apartmentlines.com>
>>> >> wrote:
>>> >> > Stanislav,
>>> >> >
>>> >> > Back when I originally wrote Jester, we did some basic load testing
>>> of
>>> >> > the
>>> >> > Comdian Mail replica profile against Asterisk's actual Comedian Mail
>>> >> > (which
>>> >> > is written in C), and the Jester implementation outperformed it.
>>> >> >
>>> >> > I think you may be overestimating strain of loading Jester once per
>>> >> > call.
>>> >> > Not counting comments, the core module is less than 800 lines of
>>> code
>>> >> > (hardly 'huge'), the other modules are all smaller than that, and
>>> they
>>> >> > can
>>> >> > be loaded conditionally based upon what you want to accomplish. And
>>> for
>>> >> > those looking to squeeze more performance out, there's a supplied
>>> script
>>> >> > to
>>> >> > pre-compile core and all modules, which means they wouldn't have to
>>> be
>>> >> > re-compiled every time they're loaded.
>>> >> >
>>> >> > I'm clear that there would be more efficient approaches than
>>> writing a
>>> >> > Lua
>>> >> > toolkit, and, I doubt that most of them would be as easily
>>> accessible as
>>> >> > something written in Lua. Given that Lua is already blazing fast
>>> for a
>>> >> > scripting language, I think it's a fair compromise.
>>> >> >
>>> >> > I will add that I've considered rewriting the core functionality in
>>> C
>>> >> > for a
>>> >> > number of reasons, performance being one of them, but at this time
>>> have
>>> >> > neither the skill nor the time to learn the skill of writing C code
>>> at
>>> >> > that
>>> >> > level. Someday, maybe... :)
>>> >> >
>>> >> > Chad
>>> >> >
>>> >> > On Sun, Jan 24, 2016 at 10:54 PM, Stanislav Sinyagin
>>> >> > <ssinyagin at gmail.com>
>>> >> > wrote:
>>> >> >>
>>> >> >> Yes, for relatively small scripts that are concentrated on their
>>> jobs.
>>> >> >> But
>>> >> >> this thing is huge.
>>> >> >>
>>> >> >> On 25 Jan 2016 3:36 am, "Michael Jerris" <mike at jerris.com> wrote:
>>> >> >>>
>>> >> >>> Lua is likely to be by far the most efficient of any scripting
>>> >> >>> language
>>> >> >>> used in FreeSWITCH, if there is still really a concern about
>>> >> >>> performance,
>>> >> >>> more pieces can be moved to helpers built out in c code.  If you
>>> are
>>> >> >>> looking
>>> >> >>> for dynamic but still optimal performance, lua is likely your
>>> best bet
>>> >> >>>
>>> >> >>> On Sunday, January 24, 2016, Stanislav Sinyagin <
>>> ssinyagin at gmail.com>
>>> >> >>> wrote:
>>> >> >>>>
>>> >> >>>> why not re-implementing it in Golang and ESL?
>>> >> >>>>
>>> >> >>>> What's happening now with your system, is that FreeSWITCH loads
>>> few
>>> >> >>>> thousand lines of Lua code on every call establishment. So, even
>>> with
>>> >> >>>> default 30cps limit, you may overload the CPU with unnecessary
>>> job.
>>> >> >>>>
>>> >> >>>> if you don't like Go, it could be some other language, but I
>>> like the
>>> >> >>>> built-in threads in it.
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>
>>> >> >>>> On Sun, Jan 24, 2016 at 9:47 PM, Chad Phillips
>>> >> >>>> <chad at apartmentlines.com>
>>> >> >>>> wrote:
>>> >> >>>> > Hi Bote,
>>> >> >>>> >
>>> >> >>>> > The difference is (supposed to be) that using Jester takes a
>>> lot of
>>> >> >>>> > the
>>> >> >>>> > dirty work out of doing things that you must turn to scripting
>>> for.
>>> >> >>>> > The
>>> >> >>>> > original design was to remove almost all scripting complexity,
>>> and
>>> >> >>>> > instead
>>> >> >>>> > have users use a more template-based approach to writing their
>>> >> >>>> > advanced
>>> >> >>>> > workflows. You can have a look at
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> http://thehunmonkgroup.github.io/jester/doc/topics/03-Sequences.md.html#Writing_sequences
>>> >> >>>> > to see the basic template style.
>>> >> >>>> >
>>> >> >>>> > And here's an example template that does some fairly advanced
>>> >> >>>> > stuff:
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> http://thehunmonkgroup.github.io/jester/doc/examples/phone_to_post_test.lua.html
>>> >> >>>> >
>>> >> >>>> > To my eyes, what the template accomplishes is quite easy to
>>> deduce
>>> >> >>>> > from
>>> >> >>>> > simply reading it, and all of the dirty work for taking those
>>> >> >>>> > actions
>>> >> >>>> > is
>>> >> >>>> > handled by Jester core and the supporting modules.
>>> >> >>>> >
>>> >> >>>> > The current limitation is that you must use the template
>>> structure
>>> >> >>>> > to
>>> >> >>>> > gain
>>> >> >>>> > access to Jester's modules. Looking back, this was a design
>>> mistake
>>> >> >>>> > that I
>>> >> >>>> > intend to rectify -- it would be much more powerful and
>>> flexible to
>>> >> >>>> > use a
>>> >> >>>> > template when it made sense, and still be able to mix pure Lua
>>> >> >>>> > scripting
>>> >> >>>> > with calls to Jester's support modules when that makes more
>>> sense.
>>> >> >>>> > And
>>> >> >>>> > what
>>> >> >>>> > I'm hoping to get help with is correcting that design flaw
>>> while
>>> >> >>>> > preserving
>>> >> >>>> > 'the good stuff' in the toolkit.
>>> >> >>>> >
>>> >> >>>> > Chad
>>> >> >>>> >
>>> >> >>>> > On Fri, Jan 22, 2016 at 2:16 PM, Bote Man <
>>> bote_radio at botecomm.com>
>>> >> >>>> > wrote:
>>> >> >>>> >>
>>> >> >>>> >> Hey Chad, long time no chat J  I saw your update to the Help
>>> >> >>>> >> section
>>> >> >>>> >> of
>>> >> >>>> >> the Confluence page concerning this and glanced at some things
>>> >> >>>> >> there.
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> I guess I don’t even know enough to understand the difference
>>> >> >>>> >> between
>>> >> >>>> >> using your toolkit and just plain writing a Lua script. Would
>>> I,
>>> >> >>>> >> for
>>> >> >>>> >> example, write an abbreviated Lua script that calls tested and
>>> >> >>>> >> proven
>>> >> >>>> >> functions in your toolkit, sort of like a library?
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> Anyway it sounds useful, so thanks.
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> ---
>>> >> >>>> >>
>>> >> >>>> >> Bote
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> FreeSWITCH Docs Janitor
>>> >> >>>> >>
>>> >> >>>> >> http://freeswitch.org/confluence
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> From: Chad Phillips
>>> >> >>>> >> Sent: Friday, 22 January, 2016 14:41
>>> >> >>>> >> Subject: [Freeswitch-users] Seeking collaborators for
>>> >> >>>> >> FreeSWITCH/Lua
>>> >> >>>> >> scripting toolkit
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> Looking for folks in the FreeSWITCH community who would be
>>> >> >>>> >> interested
>>> >> >>>> >> in
>>> >> >>>> >> collaborating on an open source scripting toolkit I've
>>> written for
>>> >> >>>> >> FreeSWITCH/Lua. The basic idea is to have ready made
>>> solutions to
>>> >> >>>> >> common
>>> >> >>>> >> scripting needs, so as not to reinvent the wheel.
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> The original project was written in 2010. A lot of it still
>>> works
>>> >> >>>> >> great,
>>> >> >>>> >> and there are some design flaws that I'd like to work out in
>>> the
>>> >> >>>> >> next
>>> >> >>>> >> release.
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> Project code is here:
>>> https://github.com/thehunmonkgroup/jester
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> Some background and reasoning for the project here:
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> http://xylil.com/2016/01/20/jester-freeswitch-lua-and-my-quest-for-an-awesome-scripting-toolkit/
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> If anyone is interested in helping, please let me know!
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> Chad
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >>
>>> _________________________________________________________________________
>>> >> >>>> >> Professional FreeSWITCH Consulting Services:
>>> >> >>>> >> consulting at freeswitch.org
>>> >> >>>> >> http://www.freeswitchsolutions.com
>>> >> >>>> >>
>>> >> >>>> >> Official FreeSWITCH Sites
>>> >> >>>> >> http://www.freeswitch.org
>>> >> >>>> >> http://confluence.freeswitch.org
>>> >> >>>> >> http://www.cluecon.com
>>> >> >>>> >>
>>> >> >>>> >> FreeSWITCH-users mailing list
>>> >> >>>> >> FreeSWITCH-users at lists.freeswitch.org
>>> >> >>>> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> >>>> >>
>>> >> >>>> >>
>>> >> >>>> >> UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> >>>> >> http://www.freeswitch.org
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> >
>>> _________________________________________________________________________
>>> >> >>>> > Professional FreeSWITCH Consulting Services:
>>> >> >>>> > consulting at freeswitch.org
>>> >> >>>> > http://www.freeswitchsolutions.com
>>> >> >>>> >
>>> >> >>>> > Official FreeSWITCH Sites
>>> >> >>>> > http://www.freeswitch.org
>>> >> >>>> > http://confluence.freeswitch.org
>>> >> >>>> > http://www.cluecon.com
>>> >> >>>> >
>>> >> >>>> > FreeSWITCH-users mailing list
>>> >> >>>> > FreeSWITCH-users at lists.freeswitch.org
>>> >> >>>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> >>>> >
>>> >> >>>> >
>>> >> >>>> > UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> >>>> > http://www.freeswitch.org
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>
>>> >> >>>>
>>> _________________________________________________________________________
>>> >> >>>> Professional FreeSWITCH Consulting Services:
>>> >> >>>> consulting at freeswitch.org
>>> >> >>>> http://www.freeswitchsolutions.com
>>> >> >>>>
>>> >> >>>> Official FreeSWITCH Sites
>>> >> >>>> http://www.freeswitch.org
>>> >> >>>> http://confluence.freeswitch.org
>>> >> >>>> http://www.cluecon.com
>>> >> >>>>
>>> >> >>>> FreeSWITCH-users mailing list
>>> >> >>>> FreeSWITCH-users at lists.freeswitch.org
>>> >> >>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> >>>>
>>> >> >>>> UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> >>>> http://www.freeswitch.org
>>> >> >>>
>>> >> >>>
>>> >> >>>
>>> >> >>>
>>> _________________________________________________________________________
>>> >> >>> Professional FreeSWITCH Consulting Services:
>>> >> >>> consulting at freeswitch.org
>>> >> >>> http://www.freeswitchsolutions.com
>>> >> >>>
>>> >> >>> Official FreeSWITCH Sites
>>> >> >>> http://www.freeswitch.org
>>> >> >>> http://confluence.freeswitch.org
>>> >> >>> http://www.cluecon.com
>>> >> >>>
>>> >> >>> FreeSWITCH-users mailing list
>>> >> >>> FreeSWITCH-users at lists.freeswitch.org
>>> >> >>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> >>>
>>> >> >>> UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> >>> http://www.freeswitch.org
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >>
>>> _________________________________________________________________________
>>> >> >> Professional FreeSWITCH Consulting Services:
>>> >> >> consulting at freeswitch.org
>>> >> >> http://www.freeswitchsolutions.com
>>> >> >>
>>> >> >> Official FreeSWITCH Sites
>>> >> >> http://www.freeswitch.org
>>> >> >> http://confluence.freeswitch.org
>>> >> >> http://www.cluecon.com
>>> >> >>
>>> >> >> FreeSWITCH-users mailing list
>>> >> >> FreeSWITCH-users at lists.freeswitch.org
>>> >> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> >>
>>> >> >> UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> >> http://www.freeswitch.org
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> _________________________________________________________________________
>>> >> > Professional FreeSWITCH Consulting Services:
>>> >> > consulting at freeswitch.org
>>> >> > http://www.freeswitchsolutions.com
>>> >> >
>>> >> > Official FreeSWITCH Sites
>>> >> > http://www.freeswitch.org
>>> >> > http://confluence.freeswitch.org
>>> >> > http://www.cluecon.com
>>> >> >
>>> >> > FreeSWITCH-users mailing list
>>> >> > FreeSWITCH-users at lists.freeswitch.org
>>> >> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> > UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> > http://www.freeswitch.org
>>> >>
>>> >>
>>> _________________________________________________________________________
>>> >> Professional FreeSWITCH Consulting Services:
>>> >> consulting at freeswitch.org
>>> >> http://www.freeswitchsolutions.com
>>> >>
>>> >> Official FreeSWITCH Sites
>>> >> http://www.freeswitch.org
>>> >> http://confluence.freeswitch.org
>>> >> http://www.cluecon.com
>>> >>
>>> >> FreeSWITCH-users mailing list
>>> >> FreeSWITCH-users at lists.freeswitch.org
>>> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> >> UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> >> http://www.freeswitch.org
>>> >
>>> >
>>> >
>>> >
>>> _________________________________________________________________________
>>> > Professional FreeSWITCH Consulting Services:
>>> > consulting at freeswitch.org
>>> > http://www.freeswitchsolutions.com
>>> >
>>> > Official FreeSWITCH Sites
>>> > http://www.freeswitch.org
>>> > http://confluence.freeswitch.org
>>> > http://www.cluecon.com
>>> >
>>> > FreeSWITCH-users mailing list
>>> > FreeSWITCH-users at lists.freeswitch.org
>>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> > UNSUBSCRIBE:
>>> http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> > http://www.freeswitch.org
>>>
>>> _________________________________________________________________________
>>> Professional FreeSWITCH Consulting Services:
>>> consulting at freeswitch.org
>>> http://www.freeswitchsolutions.com
>>>
>>> Official FreeSWITCH Sites
>>> http://www.freeswitch.org
>>> http://confluence.freeswitch.org
>>> http://www.cluecon.com
>>>
>>> FreeSWITCH-users mailing list
>>> FreeSWITCH-users at lists.freeswitch.org
>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> http://www.freeswitch.org
>>>
>>
>>
>>
>> --
>> Anthony Minessale II       ♬ @anthmfs  ♬ @FreeSWITCH  ♬
>>
>>http://freeswitch.org/http://cluecon.com/>> http://twitter.com/FreeSWITCH
>> ☞ irc.freenode.net #freeswitch ☞ *http://freeswitch.org/g+
>> <http://freeswitch.org/g+>*
>>
>> ClueCon Weekly Development Call
>> ☎ sip:888 at conference.freeswitch.org  ☎ +19193869900
>>
>> https://www.youtube.com/watch?v=9XXgW34t40s
>> https://www.youtube.com/watch?v=NLaDpGQuZDA
>>
>> _________________________________________________________________________
>> Professional FreeSWITCH Consulting Services:
>> consulting at freeswitch.org
>> http://www.freeswitchsolutions.com
>>
>> Official FreeSWITCH Sites
>> http://www.freeswitch.org
>> http://confluence.freeswitch.org
>> http://www.cluecon.com
>>
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>>
>
>
>
> --
>
> Arthur
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://confluence.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160128/7b96568f/attachment-0001.html 


Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list