The strange part is "no derivatives that don't comply with the spec, even if you rename it." It is not free software.
Unfortunately this is something I have to mention every time Shen is mentioned, because I'm irate that, in spite of my interest in it, that both it (and its predecessor Qi) insist on doing something so strange with no apparent legitimate purpose (some kind of bogeyman of fragmentation killing the project).
Shen seems pretty cool, but there are lots of other things out there that are also cool. When licensing is such a big deal, I think its bizarre license is reason to steer away from Shen.
It not being "free software" is pretty debatable imo. Maybe not free with a capitol f, but free enough as an academic language.
Supposedly the bizarro license is due to fear of forking and divergence, but ironically, it's just as likely to have the opposite effect:
If it's a great language, but the current implementation is toxic (as it seems to be), you'll get people writing their own implementations of it, which will inevitably differ, and the lack of a common base will make divergence even more likely. With forks, at least you usually have the option of porting changes between the forks with a smallish amount of effort; with separate implementations, this sort of thing becomes much harder.
They have developed it and don't want it fragmented. Not out of fear of loosing the project, but because they consider rampant forking to be one of the main weaknesses of open source and Linux in particular[1].
Why is it strange to want to avoid dilution and confusion of your product? People can use it, modify it for improved performance, add libraries to it, include graphics and other files as necessary, and even charge money for what they've done with it. Pretty much the only thing you can't do with it is modify it significantly and re-release it as your own personal brand of Shen (whether renamed, or not).
It looks like a lot of work went into it, and they're basically gifting it to the community to use and profit from.
A more open license would be great, sure. But they have a legitimate position here, and they make a reasonable point. It may be myopic in some people's opinion, that's a matter of debate, but I don't see how it can be considered to be absurd.
[1] "Hence the production of derivative non-conforming programs from our source, whether called Shen, Shin, Shine or Shoo, is barred by the license. To give up on this is to give up on the motivation for Shen.
We are therefore not open source. Generally, the diversity and freedom to fork which was lauded as a strength of open source, has turned into the major weakness of Linux. This OS has been burdened by multiple forks, multiple distros, multiple apps for doing the same thing to the point where essentially the same work has been redone over and over again by different groups. The resultant wastage of effort has been huge and the result has been lack of cross platform usability, a lack of uniformity in the user interface, a reliance on complex dependencies and too often, software that reflects the scattering of human resources by displaying broken functionality. Even Linux fans are seeing this. This in turn has given Linux a bad name. We want to avoid all that."
I came here to point this out as well. It just does not make any sense whatsoever to have this license if you are trying to make an open-source project. I get that the idea is to prevent fragmentation, but it is enough to require they don't use the name. The actual license basically excludes anyone who wants to experiment with it. It's not free.
I think the license is worded rather poorly and that's unfortunate. I think it would be better worded as this: if you create a port/version/mod of Shen, it must be able to execute spec-compliant Shen code. That's it. You can do all the changes, experimentation, etc. so long as it is somehow capable of executing stock Shen code, it's allowed. I think that means that you can even have a flag that toggles between "standard-compliant" and "everything-works-different" because anyone with Shen code can set the flag to "standard-compliant" and run their code. So that situation would be fully compliant with that license.
I'm glad that license is the only complaint software enthusiasts have against Shen.
Not all languages have to have the same license. It's open source, since the source is available, and it's free, since you don't have to pay to use it. If you mean that it's not "free" by FSF definition, then just say "it's not Free (tm) FSF(c)".
It seems like Shen is a successor to Qi, which if I remember right, had a type system that incorporated full-blown classical logic. If Shen follows in this tradition, then its type system would be significantly more expressive than standard functional type systems. It would allow not only arbitrary predicates on input and output, but also relationships between them. Needless to say, such a type system is Turing-complete, and therefore not guaranteed to terminate.
Systems like this are usually used as theorem-proving systems, not actual production languages. I think Qi was intended to be a practical language that allowed arbitrary proofs about the properties of its programs.
I have not been able to find any reference to this in a quick perusal of Shen's documentation.
It looks like it's a Lisp or Lisp-like, but with some features I haven't seen in other Lisps: pattern matching; currying-by-default; a built-in type system; and so on. IOW it seems like if Lisp and Haskell had a baby.
I'll admit that, having studied Haskell before Lisp, I really, really like pattern matching. But I don't think this would be enough for me to pick up Shen; I'd probably go with Clojure if I wanted a Lisp.
I think one of the coolest things I have seen is the way that it has full support for what macro expansion gives you in a "normal lisp" but without the use of quasiquotation - instead it utilizes pattern matching.
Second this. What's Shen's hook? I see a lot of prefix notation for function application...seems Scheme-y to me. I thought things had trended away from that.
I think for macro enthusiasts, being able to program the reader directly(with pattern matching) is a good selling point. It also has an inbuilt compiler compiler.
I've bought the Qi book and have been enlighted by the language it describes. I'm looking forward to play a bit with Shen and see how it compares to other lisps.
Yes and it's the 50th most common surname in China, the Chinese word for spirit/god, a character in a pletora of other popular games and fiction, etc etc. Got any other random associations to share with us?
[+] [-] fdr|13 years ago|reply
Unfortunately this is something I have to mention every time Shen is mentioned, because I'm irate that, in spite of my interest in it, that both it (and its predecessor Qi) insist on doing something so strange with no apparent legitimate purpose (some kind of bogeyman of fragmentation killing the project).
[+] [-] binarycrusader|13 years ago|reply
I would advise anyone to stay far, far away from that sort of licensing.
It seems impossible to combine most software components with it if you were trying to build something on top of Shen (as an example).
[+] [-] JoelMcCracken|13 years ago|reply
It not being "free software" is pretty debatable imo. Maybe not free with a capitol f, but free enough as an academic language.
[+] [-] snogglethorpe|13 years ago|reply
If it's a great language, but the current implementation is toxic (as it seems to be), you'll get people writing their own implementations of it, which will inevitably differ, and the lack of a common base will make divergence even more likely. With forks, at least you usually have the option of porting changes between the forks with a smallish amount of effort; with separate implementations, this sort of thing becomes much harder.
[+] [-] grannyg00se|13 years ago|reply
Why is it strange to want to avoid dilution and confusion of your product? People can use it, modify it for improved performance, add libraries to it, include graphics and other files as necessary, and even charge money for what they've done with it. Pretty much the only thing you can't do with it is modify it significantly and re-release it as your own personal brand of Shen (whether renamed, or not).
It looks like a lot of work went into it, and they're basically gifting it to the community to use and profit from.
A more open license would be great, sure. But they have a legitimate position here, and they make a reasonable point. It may be myopic in some people's opinion, that's a matter of debate, but I don't see how it can be considered to be absurd.
[1] "Hence the production of derivative non-conforming programs from our source, whether called Shen, Shin, Shine or Shoo, is barred by the license. To give up on this is to give up on the motivation for Shen.
We are therefore not open source. Generally, the diversity and freedom to fork which was lauded as a strength of open source, has turned into the major weakness of Linux. This OS has been burdened by multiple forks, multiple distros, multiple apps for doing the same thing to the point where essentially the same work has been redone over and over again by different groups. The resultant wastage of effort has been huge and the result has been lack of cross platform usability, a lack of uniformity in the user interface, a reliance on complex dependencies and too often, software that reflects the scattering of human resources by displaying broken functionality. Even Linux fans are seeing this. This in turn has given Linux a bad name. We want to avoid all that."
[+] [-] krichman|13 years ago|reply
[+] [-] taotree|13 years ago|reply
[+] [-] hermanhermitage|13 years ago|reply
To me free software either has no price or has no licensing restrictions at all.
What is free software?
[+] [-] markokocic|13 years ago|reply
Not all languages have to have the same license. It's open source, since the source is available, and it's free, since you don't have to pay to use it. If you mean that it's not "free" by FSF definition, then just say "it's not Free (tm) FSF(c)".
[+] [-] ante_annum|13 years ago|reply
[+] [-] lmkg|13 years ago|reply
Systems like this are usually used as theorem-proving systems, not actual production languages. I think Qi was intended to be a practical language that allowed arbitrary proofs about the properties of its programs.
I have not been able to find any reference to this in a quick perusal of Shen's documentation.
[+] [-] wonderzombie|13 years ago|reply
There's some talk about the motivation here: http://www.shenlanguage.org/motivation.html.
I'll admit that, having studied Haskell before Lisp, I really, really like pattern matching. But I don't think this would be enough for me to pick up Shen; I'd probably go with Clojure if I wanted a Lisp.
[+] [-] shaunxcode|13 years ago|reply
[+] [-] cantankerous|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] JacobGoodson|13 years ago|reply
[+] [-] d0m|13 years ago|reply
[+] [-] coolg54321|13 years ago|reply
[+] [-] keithvan|13 years ago|reply
[+] [-] BasDirks|13 years ago|reply
[+] [-] jychang|13 years ago|reply
A quick google for 'Shen' proves as much.
[+] [-] cantankerous|13 years ago|reply