Hacker News new | past | comments | ask | show | jobs | submit login

You're not alone.

XML can be a huge syntactical burden, I'll grant you. I read an article about an IBM standard for representing JSON in XML. Madness.

What XML does excel at is representing complex hierarchical data. The way Moya does forms (https://github.com/moyaproject/sociallinks/blob/master/socia...) and models (https://github.com/moyaproject/sociallinks/blob/master/socia...) is actually quite terse, IMO. Especially if you consider the amount of encapsulation in those declarations. Forms for instance, know how to render, validate, and apply themselves.

Slightly more contentious is Moya Code which is a high level language expressed in XML. But it does mean that code and data can be mixed in a fairly effortless way. As a language, Moya Code is actually quite similar to Python. Not surprising since I'm a Python guy.

Here is a loop to print the numbers 1 to 10 in Python and Moya Code:

    for i in range(1,11):

    <for src="1...10" dst="i">
More characters to type in XML, but it is quite familiar.

The extra characters are offset somewhat by the fact that moya tags are very high-level. Imagine if your code to render a page was factored out so that at the top level was barely a dozen function calls and conditions. That's what views in Moya Code tend towards.

Moya's expressions also cut down on lines of code. The following gets the current price of Bitcoin from a web service:

    <let btc="(fromjson:get:'https://www.bitstamp.net/api/ticker/')['ask']"/>
Less contentious is the template language, which straightforward to use, and uses the same expressions as Moya Code. There's no need to use a different syntax there. The most complex template for the Moya builtins is probably the threaded comments (https://github.com/moyaproject/moya/blob/master/moya/libs/co...). I don't think that's too bad.

I could go on, at great length. I've only waited 4 years to talk about it.

Applications are open for YC Winter 2021

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact