First, I preface all of this with: I am not, nor have I ever been, a programmer.
Big subject. Moose has, or had, a set of YT videos at some time. Not sure about a website.
Next, I don’t use Moose for the simple reason I don’t think it’s necessary for me and I want more flexibility. But that flexibility comes at a price. With things like Moose you tend to get forced into that ‘lane’. Note that once you become more comfy with lua this isn’t such an issue.
If you haven’t yet look at ‘mist’, written by the individual that maintains the wiki DCS scripting ref (a must) at:
https://wiki.hoggitworld.com/view/Simulator_Scripting_Engine_Documentation
It is updated often/regularly.
Moose is I suppose what one (a pro) would call a ‘framework’. lua is a lot like c to me (I think it translates directly into c, which is why it can be pretty fast - good in performance dependent situations like games).
‘Frameworks’ are nice in that they bundle things up into neat little ‘objects’ for you - they hide things. I think Moose is an attempt to make a language that is not OOP (Object Oriented Programming - BIG subject), well, OOP.
I guess you could say it’s all ambiguous by design?
Won’t rehash the history of OOP here but I skipped Moose because I wanted complete control and know exactly what was going on ‘under the hood’. I do use some of the same mechanics Moose is built on. Just not very often.
lua is powerful really. Again it’s like c before C++ (an OOP variant of c); you are free do ANYTHING, including get yourself into a big fury mess. lua is like c using function pointers - which were considered taboo 40 years ago but, so what? In a game it’s about performance, not being ‘correct’.
Moose and such give you a bag of tools so you don’t have to grow a tree, mine ore from the ground - all to make a hammer. It gives you a hammer. Just not the one I want.
Not sure any of that helped. In the end, IMO, if the code does what you want it to do - and you understand it - then it is ‘good code’. Many would disagree with that.
The REALLY annoying bit using lua in DCS is the lack of a) a debugger and b) lua requires another application to run (ie; DCS) - lua is embedded. So testing is arduous. I’ve found a debugger that does the minimum (it has bugs).
If you use external lua source files [1] then: somewhere on this forum I explained how to get around the issue of testing DCS code without the EXTREMELY annoying cycle of:
1 Edit code
2 Delete: Trigger | Do Script File | load file “myscript.lua”
3 Save mission
4 Create new tigger with Do Script FIle | load file “myscript.lua”
5 Save mission
6 Run.
That gets old fast. The method I describe skips 2 - 5.
[1] I, personally, find it difficult to ‘organize’ myself without using external script files.