Hacker News new | past | comments | ask | show | jobs | submit login
R7RS-large kickoff, list membership, and voter registration process (groups.google.com)
84 points by groovy2shoes on May 15, 2016 | hide | past | favorite | 33 comments



In case you are a casual observer or are new to Scheme and are wondering why this might be particularly important to the language, wikipedia explains:

"The R6RS standard has caused controversy because it is seen to have departed from the minimalist philosophy [of scheme]. In August 2009, the Scheme Steering Committee ... announced its intention to recommend splitting Scheme into two languages: a large modern programming language for programmers, and a subset of the large version retaining the minimalism praised by educators and casual implementors;"[1]

Perhaps the history of Scheme standardization itself has something to teach us about the challenges and rewards of openly balancing a wide range of interests and agendas over the long term?

[1] https://en.wikipedia.org/wiki/Scheme_(programming_language)#...


To some extent I think the R7RS-large effort is a bit misguided. I believe successful "large languages" (as in, comes with a big "standard library") need a large team of professional programmers to implement it all (professional, in this sense as directed by some organization so that they work on what the organization prioritizes rather than on whatever they fancy), and preferably a single implementation so that all the implementation effort can be concentrated on that one implementation. Successful examples of this approach: Java, .NET.

Scheme is not anything like the above: Plenty of implementations, mostly by pretty small teams.

With ubiquitous internet access, and the rise of open source, I think the better approach for R7RS-large would be to instead standardize a package manager, and then let a thousand flowers bloom. This approach has proved successful, e.g. npm (for node.js), Cargo (Rust), elpa (emacs-lisp), quicklisp (Common LISP).

Then again, I'm not a Scheme "insider", so what do I know. YMMV.


I maintain a number of Chicken packages and am a contributor to Geiser.

With standardized libraries in R7RS-small the opportunity has existed for sometime for a community-created package manager to come into existence. There are several in existence, mostly targeting particular schemes, but Snow2 is the closest to what you desire.

Why it hasn't caught on is unquestionably, IMHO, because of the limitations upon the R7RS-small language. Library writers often cannot write for standard R7RS and must ship implementation-specific code. For instance, the R7RS opted not to define a standard FFI of any sort.

Even if your library is internally R7RS compliant it is often the case that it may rely on packages which are not, so deploying to the likes of Snow2 is a matter of porting code you didn't write to every scheme that Snow2 supports.

The best reason I have been given for the decision not to define an FFI is because it would force writers of toy schemes to conform their data structures to the standard. And so in an effort to remain a toy language it has restricted itself to being only a toy language.

Use Chicken, Chez, Gambit, Chibi or Racket. Forget about RnRS.


IMHO, Scheme has two, somewhat conflicting, goals. There's the desire to make it a practical language, with rich libraries (the central package repository is ok, but it'll require quite an infrastructure to implement portable package manager client.)

On the other hand, Scheme has been a toolkit to test out ideas of programming languages since its origin. We still keep call/cc not because we use it for daily application development, but rather because it is invaluable to implement new idea of control abstraction portably. With this goal, we don't want to restrict implementation too much (hence the loose definition of "error"), nor want to raise the hurdle of standard conformance by requiring too many libs.

R7RS small/large split reflects this view, and I think it's a good thing. I also think SRFI process is working. If there ever is a common package manager thing, R7RS-large is a step to it. I've been using Scheme at work for last 20 years; let's see what we have in the next 20 years.


The problem is that there's a baseline minimum of features that need to be standardized to have enough interoperability between implementations for a package manager to actually work, and that minimum is still too big for many die-hard Schemers. Call them "50-page-purists", if you will, but they want the standard to be as small as it can possibly be. They argue that inessential features are better left to the programmer -- the problem is that in reality, those features get implemented by the implementor, often in a different way than another implementor did it. So we wind up with a mess where everybody is R5RS-conformant, but nobody has a modules system compatible with anyone else's.

The R6RS editors tried to remedy this, but wound up causing a schism in the Scheme community which was pretty damaging. The "50-page-purists" have somehow gotten into their heads that the R5RS is the be-all, end-all of Scheme, and that any additions whatsoever are features piled on top of features. Now, with the R7RS, we've not re-united the Scheme community, we've fractured it yet again. There are now three factions (in no particular order): (1) those who think the R7RS sucks because of gratuitous incompatibilities with R6RS; (2) those who think the R7RS sucks because it's got more features than the R5RS; (3) those who like the R7RS.

Personally, I find that a module system and user-defined records are extremely welcome, and a long-time-coming, really, but I fear that the R7RS-small on its own is still too small for something like Snow2 to really take off in an implementation-independent way.

In short, I agree with you. But, it's complicated.


For what it's worth, they did introduce a standard module system. That is the prerequisite to a global standard package repository.

I've been following the effort and voted on ratifying R7RS-small. One of the nice things about the large-small split is that it satisfies all parties, while clarifying the specification. It also means that new implementers can start with a R7RS-small implementation, and immediately gain the power of much of the R7RS-large library in a portable form. This benefit is not to be underestimated for the community we're talking about.


> One of the nice things about the large-small split is that it satisfies all parties, ...

Unfortunately not. R7RS-small introduced some incompatibilities with R6RS that caused some R6RS fans (yes, they exist) to dissent. One was samth, as I recall, but I can't remember the names of any of the other outspoken critics of R7RS. If the mailing lists hadn't disappeared, I'd probably be able to find the threads for you. They made some good points.

Personally, my gripes with the R7RS-small are pretty minor, and overall I think it's good and I welcome it whole-heartedly. The modules and the records were sorely needed for decades. They were slotted for R5RS, but back then the RnRS was ratified by full consensus rather than majority vote, and some people simply refused to compromise. This is why R5RS took almost 10 years when its predecessors only took a handful of years. (In retrospect, I wish they'd made them an appendix in R5RS, like what they did for macros in R4RS, but it's far too late for that now...).


Some 66% of those who voted on R6RS voted "yes" (including me). Some 88% of those who voted on R7RS voted "yes" (including me).


Yup, and neither of those is a full consensus. Iirc, the only person holding out on the record proposal for R5RS was Kent Dybvig, and that was enough to block it. Prior to R6RS, the RnRS was only ratified on full consensus, not almost consensus.

Note that I'm not opposed to the new "80%+ vote in favor" system (I think it's a very good thing), I'm just pointing out the history.


Any popular language that is going through a standardization process can teach us a lot. As opposed to languages that have "benevolent dictators" (Ruby, Python, etc), languages like Common Lisp, Scheme, C++ have all gone through standardization processes that often leave a lot to be desired.

Unfortunately, that lesson usually learned is "don't do it", but I'm hoping that Scheme has righted the ship a bit and R7RS will be able to balance the goals of multiple diverse groups. The last thing we need is another Common Lisp.


Considering Common Lisp is still in use and doesn't need to be re-standardised despite several decades passing since, isn't its standardisation a great success?


It's lacking enough things like standardized networking and threading support that, no, many people don't consider it a success.

It was also a semi-atrocity in creation in ways that needlessly made it more difficult to implement, but that tale is best told by people more knowledgeable than I, I'd moved onto Scheme by then for the most part.


I think Common Lisp's success is due to the power of Lisp and that Common Lisp is the most modern full-featured version of Lisp. For all we know, if the standardization had been done better, Lisp might be more widely used than it is today.


It's trivial to run R5RS in DrRacket, for example, or other Scheme implementations as well. So it shouldn't really be a problem if R7RS becomes bloated, as you can stay on R5.


Well, note that this is about R7RS-large; R7RS-small is "a 'small' language, suitable for educators, researchers, and users of embedded languages, focused on R5RS compatibility" (http://trac.sacrideo.us/wg/wiki/R7RSHomePage see also http://www.scheme-reports.org/), its spirit is R5RS cleaned up and with a library feature to allow R7RS-large to be cleanly added.


Ah, I'm just now learning about the large/small split. Thanks.


Maybe it is me, but as the discussions here[0] about the relevance of Lisp etc which I blame largely on PR/Marketing unfold, I cringe when any announcements are on Google groups. It feels like projects who do their communications (even between devs) in Google Groups are not too much into current affairs and therefor ignored by people who do not know about the project beforehand.

Again, maybe that's way off, but I find the interface horrible and dated and only ancient projects seem to use it...

[0] https://news.ycombinator.com/item?id=11698414


Google groups are the best solution if you want to have a working mailing list without having to deal with setting up and maintaining a mail list server yourself (which is a non-trivial task and a serious responsibility). E-mail still stands unconquered as a practical tool for people who want to get things done with minimum bullshit. What else would you propose they use instead?


Github seems to work well. Including the use of email. And it allows for much better organization with not minimum but almost minimum bullshit.


Github how? I've yet to see Github being used well for any kind of discussion other than issues.

Three major drawbacks compared to mailing lists: it's on-line, it's proprietary, it sucks for searching and filtering (seriously, the few tools it gives you are a fraction of what you get in any e-mail client).


You have good points; I was commenting on the use as issue tracker which projects seem to do and the use of the actual Google Groups interface. If you use it with an email client that's quite different and yes, you are right there although I don't find it optimal the non proprietary and online nature annoy me too. Maybe I shouldn't use the client and just sign up for the list and respond via email.


What mailing list service would you rather see used? I spent a while looking for one a few months ago. There didn't seem to be anything that was both easy-to-use and designed for multi-way communication (rather than designed to send one-way marketing email).


I haven't used it, but give a look:

http://librelist.com/


Doesn't replace a mailing list but also consider a discourse community forum site (like phpBB)

https://en.wikipedia.org/wiki/Discourse_(software)


Discourse is a big FU for people who want to read it on the go but don't have mobile Internet. Whereas with HN and phpBB I can easily save the pages offline, Discourse's "infinite scrolling" makes sure you can never save more than a few posts. The 5MB of JS that a single page like [1] forces one to download is just icing on the cake.

[1] https://meta.discourse.org/t/cheap-docker-hosting/44262


I know what you mean, but what is interesting is that serious, new vs. old work, does not always correlate with a nice front end, or how it looks. Although, I have been following PicoLisp for years, and the site was just redone to look more modern. Didn't matter, since PicoLisp stands on its own for people who are interested in such a thing. The mailing list is direct and archived on at least two mail archival sites [1].

I also like J [2], and the Google Group gets less traffic than the individual direct email lists.

As long as I can communicate, and stay current, I really don't care if the site looks good, as long as it is easy to navigate with old styling.

[1] http://picolisp.com/wiki/?home [2] jsoftware.com


I follow picolisp and J as well and I would consider them niches which have their fans and get referred by fans to newcomers. Both are great projects by the way.


Not sure what the relationship between niches and website appearance is here.

I only care about quality, not quantity or popularity when selecting my tools for a task. There are people doing real work with both J and PicoLisp. Look at KDB+/Q. It is a highly effective time series database/language that is used by some of the largest companies, but could be called niche, yet the kx.com site is modern, but look at kxparc.com which is Arthur Whitney's site. He created A+, K and Q, and inspired J, yet the site is basically plain text and minimal, the beginnings of a desktop and server OS in K, KOS.

BTW, J has Jd, a time series dbase with J as the built-in language of you're interested in that sort of stuff.

I am more a "function over form" kind of guy, although I understand the importance of appearance and human interface designs.


> only ancient projects seem to use it...

Do you mean like Golang? (https://golang.org/help/)


The big problem with Google groups is that it requires proprietary JavaScript in order to read the archive. I wish the Scheme standards community would care more about free software, but in my experience they just don't understand.


We understand fine. The standard is freely available and reusable, the implementations are free software (now that Chez has become so), the process is as open as can be. If you'd rather maintain your own archive of posts, please do, and let us know where it is. As things stand, the posts that weren't on Google Groups lists have been lost because the person who volunteered to maintain them (I had no influence over that decision) didn't keep backups.


Who said Scheme is all about free software? Or I missed the /s mark?


In practice, proprietary Schemes have not survived unless they have become free software.




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

Search: