1. 19
  1.  

  2. 5

    The lack of example code in the readme and lack of a web page makes it come across as more of a research project than something ready for users. Not sure if that’s intentional or not. Looks interesting all the same.

    Other than adding example code to the readme, I’d recommend adding some notes about portability (should you expect every lux program to run identically across all platforms? should it be possible to fall back to platform-specific code where needed? what about FFI?) and efficiency; how much overhead does this add vs writing Java/JS/etc directly?

    1. 3

      Yo, Technomancy! Nice to have a clojurian chipping in. 😁

      The lack of example code in the readme

      There’s no example code in the README because I wanted to keep it light and focused. I figured anybody who cared enough to give it a chance would just read the book.

      and lack of a web page

      I haven’t gotten around to do that as I’ve been prioritizing other stuff.

      makes it come across as more of a research project than something ready for users

      I’ve been using it for some projects throughout the years, and it’s definitely meant to be practical rather than research; but it helps to hear what elements might make it seem amateurish. I’ll take the criticism to heart and see if I can improve how it appears to newcomers. 👍

      I’d recommend adding some notes about …

      Those are all great pieces of feedback. I didn’t think they’d necessarily be stuff that should be right in the README, but perhaps those are doubts others share with you.

    2. 4

      At first glance this seems like an interesting mash up between Clojure and Typed Racket. Very provocative.

      1. 2

        On the license: why a custom license rather than a well known business-unfriendly license like agpl?

        1. 4

          I was wondering about this too. Specifically I wonder if they got a lawyer to help them write this clause:

          Acceptance of This License Recipient is not required to accept This License since Recipient has not signed it. However, nothing else grants Recipient permission to use, or copy, or distribute, or modify, or create an Extension of either The Licensed Work or any Extension created by a Contributor. These actions are prohibited by law if Recipient does not accept This License. Therefore, by performing any of these actions, Recipient indicates that Recipient accepts This License, and Recipient agrees to be bound by all its terms and conditions. If Recipient does not agree with all the terms and conditions of This License, Recipient can not use, or copy, or distribute, or modify, or create an Extension of either The Licensed Work or any Extension created by a Contributor. If it is impossible for Recipient to comply with all the terms and conditions of This License, then Recipient can not use, or copy, or distribute, or modify, or create an Extension of either The Licensed Work or any Extension created by a Contributor.

          1. 4

            I wanted a reciprocal-style license to avoid the shortcomings of FOSS licenses with regards to sustainability.

            1. 2

              Unfortunately, a custom license also has drawbacks, like ordinary folk who don’t want to hire a lawyer to figure out if they can use something, not being able to use the language. I can’t write software using this language either, not with my preferred license, because I’d need a lawyer to help me figure out if they’re compatible (though, with my preferred license being the GPL, chances are it’s not).

              A custom license is fine for toys, but if I’d use something for anything more serious, having a license I can adhere to without spending a small bag of money on a lawyer is quite important to me.

            2. 2

              AGPL still allows certain forms of exploitation.

              1. 1

                Define exploitation?

                1. 2

                  Using an open source project to make profit without giving anything back to the creator.

                  1. 1

                    I can’t see it as exploitation if the author “opts-in” by selecting a license where that’s allowed.

                    1. 4

                      Yes, that’s why this project selected a license where that’s not allowed.

            3. 1

              Will be interesting to compare this against hy which has been around in Python-space for aeons.

              Hy transforms Python to LISP at the abstract syntax tree level, whereas it looks like Lux compiles to bytecode. I’d be curious to see the delta in performance.

              1. 3

                Lux compiles to bytecode for the JVM, but the Python backend generates Python code, similarly to Hy.

                1. 3

                  If you want to really freak people out, it is possible to generate Python bytecode directly and load it by constructing code objects and function objects. You can get working line numbers in exceptions and stuff if you fill out co_lines and co_firstlineno right. :)

                  1. 3

                    Hy does that, and it’s lovely.