Discussion:
Curating libraries
Faré
2012-10-28 00:50:18 UTC
Permalink
Dear Lisp pro,

I think it is time for us (the Lisp professionals) to do a better job
at curating libraries.

Now that, thanks to Quicklisp, people aren't afraid from using
libraries anymore,
we find that there are too many libraries for any given problem domain,
yet that most of these libraries do a bad 80% job max (sometimes 50% or less).
Moreover, navigating which of these libraries makes most sense to use is hard.

Ideally, we'd have a one distinguished library providing a 100% solution
for any such domain, that we could use and recommend, and that would have
an easily recognized name.

For instance, regarding pattern-matching libraries, I'd like to retire
fare-matcher,
and after migrating any remaining useful functionality (such as
fare-quasiquote),
recommend that all users should use optima instead. I would similarly push
toward the retirement of all other pattern-matching libraries but one.
That one library could then be called "pattern-matching" and use the package
"pattern-matching".

Similarly, I'm trying to push for a single data structure library.
This time, I'm putting forward my own Lisp-Interface-Library (aka LIL)
because I think it has much more potential than other libraries,
including some with a lot of existing data structures (such as cl-containers):
Indeed, LIL can accommodate both pure and stateful data structures,
in both Interface-Passing Style (IPS) and
traditional Object-Oriented Programming (OOP),
with automatic mapping between the four combinations.
Moreover, its IPS allows for parametric polymorphism,
which wasn't previously available in CL, and
is great to bootstrap new data structures.

I'd like to invite you to join me in this effort.
Whichever libraries you use or maintain,
please partake in this consolidation effort.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The problem with being a citizen of the world is
that you don't get to travelling abroad much.
A.J. Rossini
2012-10-28 07:25:48 UTC
Permalink
Post by Faré
I'd like to invite you to join me in this effort.
Whichever libraries you use or maintain,
please partake in this consolidation effort.
As discussed, am looking at the data importers ((text)-file or system
to CL array, i.e. the prototypical CSV to CL-array importer), and
would be happy to work with others who want to take a lead on this
topic (I'm aware of 5-6 blog posts over the past few years to review
as part of due diligence, and 5+ different systems which range from
simple importers to a bit more sophisticated state machine parsers...)

I eventually need something like a unified version of R's foreign
package (unified with the other data importer and exporter packages),
but of course, need to start somewhere, and somewhere is with CSV,
TSV, and similiar delimiter-separated-values (DSV).

best,
-tony

***@gmail.com
Muttenz, Switzerland.
"Commit early,commit often, and commit in a repository from which we
can easily roll-back your mistakes" (AJR, 4Jan05).

Drink Coffee: Do stupid things faster with more energy!
Faré
2012-10-28 08:01:58 UTC
Permalink
Post by A.J. Rossini
Post by Faré
I'd like to invite you to join me in this effort.
Whichever libraries you use or maintain,
please partake in this consolidation effort.
As discussed, am looking at the data importers ((text)-file or system
to CL array, i.e. the prototypical CSV to CL-array importer), and
would be happy to work with others who want to take a lead on this
topic (I'm aware of 5-6 blog posts over the past few years to review
as part of due diligence, and 5+ different systems which range from
simple importers to a bit more sophisticated state machine parsers...)
I eventually need something like a unified version of R's foreign
package (unified with the other data importer and exporter packages),
but of course, need to start somewhere, and somewhere is with CSV,
TSV, and similiar delimiter-separated-values (DSV).
Speaking of CSV, a few years back I reviewed the existing offering and
beefed up my fare-csv library which was lagging behind so it was
better than all other available CSV libraries (at the time): fare-csv
can be configured to be compliant with at least two conflicting CSV
standards, and more, and by default follows the more relaxed
"Creativyst" specification.

I haven't followed recent developments, but there as in other cases,
someone who actually develops or uses these libraries should drive a
consolidation.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
You cannot teach a man anything; you can only help him find it for himself.
— attributed to Galileo Galilei
Faré
2012-10-29 02:14:39 UTC
Permalink
Dear Dan,

Maybe we should be moving this discussion to another list.
: Dan Lentz
Regarding consolidation under LIL just wondering if someone might have
suggestions for individual authors of CL data structure libraries on
how to work in a way most cooperative with the effort. For example I
have a small ctrie lib (http://github.com/danlentz/cl-ctrie) the
objective should be to refactor based on what unique interface it
could provide, such as "concurrent" or "lock-free"?
Perhaps this question is somewhat specific to LIL but it is a project
I've been following with interest
It would be delighted to help with such an effort,
either a merge of the two libraries,
or a layer to make them work together.

Also, considering that LIL has so few users (just drewc and I, IIUC),
it is still time to rename basic API functions if you have strong opinions.

While adding support for concurrent data structures
has long been on my TODO list,
I admit I haven't given much thought on how to automate (or not)
whatever locking is required (or not) on various methods
(not the same methods, depending on the data structure).
So far, my hypothesis is that nothing needs to be changed
as far as the signature of map interfaces goes:
the underlying implementation may or may not be concurrent,
that doesn't directly affect the calling conventions.

Of course, concurrently accessing a non-concurrent data structure
may blow up in your face, but
I don't know how to express linearity constraints in Lisp, yet.
That's a topic I'm actively researching, though, and suggestions are welcome.

In short, I'd love that to happen, I'm ready to help, and
a small data structure library is the perfect place to start.

PS: I've added you as a contributor on
https://github.com/fare/lisp-interface-library

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Be careful what you set your heart on — for it will surely be yours.
— James Baldwin, "Nobody Knows My Name"

Continue reading on narkive:
Loading...