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-awesom... If anyone is interested in helping, please let me know! Chad
Very nice Chad. Thanks for shared!! I am not a LUA coder, so I can't help, sorry. Normando El 22/01/2016 a las 04:41 p.m., Chad Phillips escribió:
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-awesom...
If anyone is interested in helping, please let me know!
Chad
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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> 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-awesom... If anyone is interested in helping, please let me know! Chad
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#Writ... 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.... 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@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-awesom...
If anyone is interested in helping, please let me know!
Chad
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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#Writ... 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....
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@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-awesom...
If anyone is interested in helping, please let me know!
Chad
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@apartmentlines.com <javascript:;>> 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#Writ...
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....
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@botecomm.com <javascript:;>> 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-awesom...
If anyone is interested in helping, please let me know!
Chad
Professional FreeSWITCH Consulting Services: consulting@freeswitch.org <javascript:;> 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@lists.freeswitch.org <javascript:;> 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@freeswitch.org <javascript:;> 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@lists.freeswitch.org <javascript:;> 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@freeswitch.org <javascript:;> 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@lists.freeswitch.org <javascript:;> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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#Writ...
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....
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@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-awesom...
If anyone is interested in helping, please let me know!
Chad
Professional FreeSWITCH Consulting Services: consulting@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@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@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@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@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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@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#Writ...
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....
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@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-awesom...
If anyone is interested in helping, please let me know!
Chad
Professional FreeSWITCH Consulting Services: consulting@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@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@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@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@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@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@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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@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@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#Writ... 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....
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@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-awesom...
If anyone is interested in helping, please let me know!
Chad
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@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@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@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@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@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@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@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@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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@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@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@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#Writ...
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....
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@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-awesom... > > > > If anyone is interested in helping, please let me know! > > > > Chad > > > >
> Professional FreeSWITCH Consulting Services: > consulting@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@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@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@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@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@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@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@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@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@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@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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@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@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@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@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#Writ... > 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.... > > 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@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-awesom... >> >> >> >> If anyone is interested in helping, please let me know! >> >> >> >> Chad >> >> >> >> >> _________________________________________________________________________ >> Professional FreeSWITCH Consulting Services: >> consulting@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
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@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@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@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@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@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@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@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@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#Writ... > > 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.... > > > > 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@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-awesom... > >> > >> > >> > >> If anyone is interested in helping, please let me know! > >> > >> > >> > >> Chad > >> > >> > >> > >> > >>
> >> Professional FreeSWITCH Consulting Services: > >> consulting@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@conference.freeswitch.org ☎ +19193869900 https://www.youtube.com/watch?v=9XXgW34t40s https://www.youtube.com/watch?v=NLaDpGQuZDA
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@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@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@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@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@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@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@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@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@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#Writ... >> > 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.... >> > >> > 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@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-awesom... >> >> >> >> >> >> >> >> If anyone is interested in helping, please let me know! >> >> >> >> >> >> >> >> Chad >> >> >> >> >> >> >> >> >> >>
>> >> Professional FreeSWITCH Consulting Services: >> >> consulting@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@conference.freeswitch.org ☎ +19193869900
https://www.youtube.com/watch?v=9XXgW34t40s https://www.youtube.com/watch?v=NLaDpGQuZDA
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@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
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@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@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@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@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@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@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@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@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@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@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#Writ... >>> > 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.... >>> > >>> > 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@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-awesom... >>> >> >>> >> >>> >> >>> >> If anyone is interested in helping, please let me know! >>> >> >>> >> >>> >> >>> >> Chad >>> >> >>> >> >>> >> >>> >> >>> >>
>>> >> Professional FreeSWITCH Consulting Services: >>> >> consulting@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@conference.freeswitch.org ☎ +19193869900
https://www.youtube.com/watch?v=9XXgW34t40s https://www.youtube.com/watch?v=NLaDpGQuZDA
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@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@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@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@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
participants (7)
-
Anthony Minessale
-
Artur Mega
-
Bote Man
-
Chad Phillips
-
Michael Jerris
-
Normando Hall
-
Stanislav Sinyagin