[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wikitech-l
Subject:    Re: [Wikitech-l] On templates and programming languages
From:       Trevor Parscal <tparscal () wikimedia ! org>
Date:       2009-06-30 23:44:10
Message-ID: 4A4AA34A.8030507 () wikimedia ! org
[Download RAW message or body]

I personally agree entirely. Now we just need to revive J4P5 
(http://j4p5.sourceforge.net) :)

- Trevor

On 6/30/09 4:24 PM, Hay (Husky) wrote:
> I would opt for Javascript.
>
> PHP and Python are intended for large and complex applications and
> come with a huge standard library people probably expect to be
> available. Security concerns are a problem too, so a subset would
> probably be necessary So, in essence you get a crippled-down language
> that isn't really useful for templates.
>
> Making our own language, either by 'fixing' the template language or
> by inventing something new would only mean we introduce a new language
> that'll be specific to our own platform and nobody knows outside of
> Mediawiki developers.
>
> XSLT is not meant to be written or read by humans. It's a
> Turing-complete language stuffed into horrendous XML statements. Let's
> not go down that road.
>
> That leaves us to Lua and Javascript, which are both small and
> efficient languages meant to solve tasks like this. Remember, i'm
> talking about 'core' Javascript here, not with all DOM methods and
> stuff. If you strip that all out (take a look at the 1.5. core
> reference at Mozilla.com:
> https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference) you
> get a pretty nice and simple language that isn't very large. Both
> would require a new parser and/or installed compilers on the
> server-side. Compared to the disadvantages of other options, that
> seems like a pretty small loss for a great win.
>
> Javascript is a widely understood and implemented language, with lots
> of efforts to get it even faster in modern browsers. Every Wikipedia
> user has a copy of it implemented in their browser and can start
> experimenting without the need for installing a compiler or a web
> server. Many people program in Javascript, so you have a huge
> potential number of people who could start programming Mediawiki
> templates. And it's already closely tied to the web, so you don't have
> to invent new ways of dealing with web-specific stuff.
>
> So, let's choose Javascript as our new template programming language.
>
> Regards,
> -- Hay
>
> On Tue, Jun 30, 2009 at 6:16 PM, Brion Vibber<brion@wikimedia.org>  wrote:
>    
>> As many folks have noted, our current templating system works ok for
>> simple things, but doesn't scale well -- even moderately complex
>> conditionals or text-munging will quickly turn your template source into
>> what appears to be line noise.
>>
>> And we all thought Perl was bad! ;)
>>
>> There's been talk of Lua as an embedded templating language for a while,
>> and there's even an extension implementation.
>>
>> One advantage of Lua over other languages is that its implementation is
>> optimized for use as an embedded language, and it looks kind of pretty.
>>
>> An _inherent_ disadvantage is that it's a fairly rarely-used language,
>> so still requires special learning on potential template programmers' part.
>>
>> An _implementation_ disadvantage is that it currently is dependent on an
>> external Lua binary installation -- something that probably won't be
>> present on third-party installs, meaning Lua templates couldn't be
>> easily copied to non-Wikimedia wikis.
>>
>>
>> There are perhaps three primary alternative contenders that don't
>> involve making up our own scripting language (something I'd dearly like
>> to avoid):
>>
>> * PHP
>>
>> Advantage: Lots of webbish people have some experience with PHP or can
>> easily find references.
>>
>> Advantage: we're pretty much guaranteed to have a PHP interpreter
>> available. :)
>>
>> Disadvantage: PHP is difficult to lock down for secure execution.
>>
>>
>> * JavaScript
>>
>> Advantage: Even more folks have been exposed to JavaScript programming,
>> including Wikipedia power-users.
>>
>> Disadvantage: Server-side interpreter not guaranteed to be present. Like
>> Lua, would either restrict our portability or would require an
>> interpreter reimplementation. :P
>>
>>
>> * Python
>>
>> Advantage: A Python interpreter will be present on most web servers,
>> though not necessarily all. (Windows-based servers especially.)
>>
>> Wash: Python is probably better known than Lua, but not as well as PHP
>> or JS.
>>
>> Disadvantage: Like PHP, Python is difficult to lock down securely.
>>
>>
>> Any thoughts? Does anybody happen to have a PHP implementation of a Lua
>> or JavaScript interpreter? ;)
>>
>> -- brion
>>
>> _______________________________________________
>> Wikitech-l mailing list
>> Wikitech-l@lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>>
>>      
>
> _______________________________________________
> Wikitech-l mailing list
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>    

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic