Thank you, Mark, but the downside to my longish emails is that I'll need further guidance: which part/phrases would be of greatest interest? Happy to see if I can put together something to help with it.

--
 Richard Gaskin
 Fourth World Systems


On 2/4/21 3:33 AM, Mark Smith wrote:
Richard, you’ve covered a lot of territory in this message most of which I don’t understand since I’ve never had a need to delve into this aspect if LC technology, but I’m really fascinated by the potential and would love to learn more. Could this possibly be a topic for a half day (or full day) workshop at the upcoming LIVECODE NYC 2022? If so, I think it would be one of those topics that makes it worth the price of admission.

Cheers
Mark

On Feb 4, 2021, at 9:52 AM, Richard Gaskin via use-livecode <use-livecode@lists.runrev.com <mailto:use-livecode@lists.runrev.com>> wrote:

Mark Waddingham wrote:

On 2021-02-03 20:07, Richard Gaskin via use-livecode wrote:
LC Server had already been ruled out (for whatever reason) in an earlier part of the thread...
That's too bad. LC Server is LiveCode build designed specifically for
command line use.
Interesting - I don't remember that being what I specifically designed it for :P LiveCode Server was *specifically designed* to be used just like PHP - allowing you to interpolate code with HTML output for the purposes of constructing webpages on the fly, sitting behind a web-server... That's why it has unique syntax designed precisely for a CGI environment, and operating in that PHP-like manner. Making it run in command-line mode as well was an obvious thing to do, and also made up for the fact (at the time) that bare standalone engines would not launch a stack on the command-line (as that was a rather gaping licensing hole which was closed between v3 and v4
IIRC). [ It also made it easier to test the general features of it! ]
Since the advent of the community edition, however, and perhaps more importantly script-only-stacks - standalone engines running with -ui can be just as convenient...


Indeed it can.  The -ui option for running standalones was something many of us enjoyed back in the MetaCard days; AFAIK it was first implemented with v1.0 back in '92; it least it was there when I first started with MC back in '96.

In addition to being an option for standalones, one could even run the bare engine with -ui as well.

And being a command line tool that uses stdin/stdout, running the engine or a standalone with -ui also worked well as a CGI under Apache or Lightly (though in a flavor more like Perl, Python, or Ruby than PHP).

Your fine addition in more recent years with a special Server build to allow PHP-like co-mingling of code and content was well done and much appreciated for those who enjoy that workflow on web servers.

And back in '14 David Williams reminded us that the standard shebang option for running a script text file is still available, though with a slight syntactic difference from how we used to do that with MC (entry point used to be a startup message, now just bare script statements outside of a handler):
https://livecode.com/a-livecode-shell/


With all this flexibility in one lean install, for me the pros of LC Server for headless work are clear:

- We get the benefits of a standalone without having to make a
 standalone (indeed the engine can be kept up to date with a
 scrape-n-wget from the Downloads page, without needing to run
 it through the Standalone Builder on a separate GUI system).

- We have the same options for running it as a standalone, without
 needing to remember to add -ui (minor, but every little simplicity
 is nice).

- BONUS: We get the bonus option of running it aa a CGI without
 needing to write our own libraries for that (reading and parsing
 POST, writing to stdOut, handling every little detail about
 headers, sessions, and more).  And when we do, we can enjoy
 PHP-style implicit merge, mixing content and code much more
 conveniently than with the merge function.

That bonus may be irrelevant for some use cases, but probably not many. After all, a headless machine is usually not our main dev machine; it's probably being deployed to provide services for client machines. When those services are being delivered over a network we'll need a protocol, and in most cases HTTP will be a great choice, certainly the most common one. And though we can write our own HTTP daemon in LC, letting Apache do that generic work gives us better throughput, robustness, and security, with lower maintenance costs.

Letting Apache do what it does best lets us do what we do best: focus on the functionality unique to our application service.


All that said, perhaps my appreciation for your work with LC Server is indeed misplaced, and maybe it shouldn't be encouraged as the go-to choice for headless LiveCode development. :)

But as one who resisted using it for many years after it was released, continuing to use standalones with -ui, I must admit that the efficiencies in both execution time and my development and maintenance time eventually made me uniquely enamored of LC Server as my default choice for any headless system.

So if this makes me an LC Server fanboy, guilty as charged, your honor.

--
Richard Gaskin
Fourth World Systems


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to