CLRFI is in the news.
Bill Clementson quoting Dirk Gerrits:
Anyway, I personally think the info in Nick Levine's short talk about the CLRFI is very much worth being more widely known in the Lisp community. (Has anyone announced it on comp.lang.lisp yet?)
Basically, the idea is to advance Common Lisp without actually having to develop a new ANSI standard. Everyone can write a CLRFI (Common Lisp Request For Implementation) and send it to the CLRFI editors. When it is approved, the CLRFI achieves draft status. It is then put on the website, announced on the email@example.com mailing list, and it gets its own mailing list for discussion. After a discussion period, the CLRFI will either be withdrawn or become accepted. Accepted CLRFIs become a sort of 'de facto standard' additions to the HyperSpec, and will (hopefully) be widely implemented by Common Lisp vendors. The standard *features* mechanism can be used to check whether your implementation supports a certain CLRFI. All this info can be found in more detail at http://clrfi.alu.org.
This approach is similar to the (relatively successful) Scheme SRFI approach. It allows for common extensions to be proposed, debated and approved/declined in the community without going through a formal standards process. Another advantage of this process is that vendors can explicitly support a particular RFI if there is a demand for it and not support other RFI's if there is no demand for the functionality. However, as Christophe Rhodes points out, in order for this to work, people need to get involved in creating high-quality RFI's. It remains to be seen whether this will happen.
I wish I had a better idea of exactly how successful SRFIs have been. Christophe Rhodes claims that most implemented SRFIs merely try to bring Scheme up to the level of Common Lisp. “Scheme needed the SRFIs to allow people to decide on a shared vocabulary for completely ordinary programs, for the utility functions that previously everyone was having to implement for themselves: it's not hard to write remove-if-not, but if everyone has to do it then that's so much less time to spend on solving the actual problem.”
I would argue that at this point basic networking, regular expressions and threading are capabilities that are almost as basic as remove-if-not. One out of twenty programmers will need to do something unusual that won't be covered by the standard library (ICMP, weird threading, whatever), but not all duplicate removal needs are served by remove-duplicates, either. Yesterday I overheard someone say that email should be a type in scripting languages. Why not?
The problem I generally have isn't taking my Common Lisp programs and running them on other platforms. I rarely have to do this. It's being able to take other peoples library source and use it on whatever Common Lisp system I'm currently using. In practice though it's not that big a problem. There are defacto standards around for a lot of things and some very portable libraries. But if the CLRFI implementations could be shipped with the Common Lisp implementations themselves then there would be no porting necessary and that would be a great thing.
Agreed. Portability means taking someone else's code and being able to use it, absolutely unchanged, on any machine, with any Lisp. It often matters less whether that portability is achieved through international standards (C, ANSI Lisp, POSIX), de facto standard language implementations (Python, Perl, Java) or, if possible, a CLRFI/SRFI style process.
No, there's nothing to force anybody to comply with a memo posted on a certain web site, but you'd be amazed how just writing something down and putting some letters on it like “CLRFI” has the power to change things. It's funny that the IETF originally used to be very lightweight, just an organization for assigning numbers and publishing Request For Comments (RFCs) in an orderly way. As the Internet grew and the infrastructure became more important, the IETF started that gradual slide toward bureaucracy.
We can hope.
P.S. I'm back.Posted by jjwiseman at October 06, 2004 11:25 AM