mailing list of musl libc
 help / color / mirror / code / Atom feed
From: LM <lmemsm@gmail.com>
To: musl@lists.openwall.com
Subject: Re: High-priority library replacements?
Date: Thu, 25 Apr 2013 07:44:39 -0400	[thread overview]
Message-ID: <CAFipMOHu7y1Ko4L6zMzi5f7COzqkq4zFWB5y0wbgP1hTRR0gnw@mail.gmail.com> (raw)
In-Reply-To: <20130425041553.GA13951@brightrain.aerifal.cx>

[-- Attachment #1: Type: text/plain, Size: 5668 bytes --]

On Thu, Apr 25, 2013 at 12:15 AM, Rich Felker <dalias@aerifal.cx> wrote:

> The recent thread "Best place to discuss other lightweight libraries"
> had me thinking we should really put together a list of high-priority
> library replacements that need to be done.
>

Sounds like a great idea.


> 1. A light, C, UTF-8-only Unicode library. The most important things
> it should implement are things needed by any application that presents
> text to the user, specifically line-breaking (UAX#14), bidi (UAX#9),
> identifying grapheme clusters, etc. Things like case- and
> normalization-insensitive comparison, application of Unicode-format
> collation rules, etc. would also possibly be useful.
>

I have something I'm working on that I'm using for my sdcv port.  It mainly
covers things like switching from utf8 to uint32_t and back and utf8
equivalents of isspace, isdigit, toupper, tolower, etc.  I really like the
Plan 9 rune implementation.  I didn't need all the functionality of the
Plan 9 library, so I'm creating a small library with just the minimal
functions I need.  If you check Ohloh, I've also seen some examples of
internationalized versions of standard functions like isdigit, isspace
there.


>
> 2. SSL.

...

> Unfortunately, all of the existing SSL
> implementations are bloated, buggy, and fail even the most basic
> robustness requirements. A good solution would be based on tomcrypt
> and would expose a minimal, simple API suited for event-loop-based or
> threaded use. It may also be useful to have an optional wrapper layer
> to expose an API that mimics openssl or gnutls.


I think an openssl wrapper and possibly a gnutls one would be essential if
you want to have it work with all the Open Source programs already out
there.

There are three main options I currently know about: openssl, gnutls, and
nss.  Each has a different license.  So depending on how a program is
licensed, you may not legally be able to use some of these libraries with
the program.  Any GNU licensed program requires an optional waiver to link
with openssl.  You find many Open Source programs provide the optional
waiver.  One really good example of the license issue concerns lynx.  You
can check their mailing list for a detailed discussion.  The highlights are
that lynx is GPLv2 and the project can't contact all the authors who worked
on it to change the license or get a waiver for linking to other types of
incompatible licenses.  The openssl library can't be used with a GNU
program unless there's a waiver for it because one of the clauses in the
openssl license goes against the GNU license principles.  The gnutls
openssl compatibility wrapper is GPL v3, so it can't be used unless the
program is relicensed at GPL v3 (
http://www.gnu.org/licenses/gpl-faq.html#AllCompatibility ).  That just
leaves nss licensed under MPL, LGPL and/or GPL.  If it's LGPL, lynx can use
it.

Moral of the story, if anything's going to be done to replace these
libraries, it would have to be under appropriate license(s) or one would
not be able to use the results with existing Open Source software already
out there without violating copyright.

 3. Image format and compression (libpng, zlib, etc.).
>

A good SVG library is needed.  To get SVG into Tuxpaint, it added libcroco,
librsvg2, libcairo and other GTK+ library dependencies.  Tuxpaint is based
on SDL, so would prefer not to see all the added code for two GUI
libraries.  Someone was recently asking on the SDL list about SVG library
options that are actively supported.  The only one with active  support
that I could locate (besides librsvg2) was the one used by netsurf (
http://www.netsurf-browser.org/projects/libsvgtiny/ ).

If you're looking at graphics formats.  You might as well add audio formats
to the list too.  There are a wide variety of libraries for the different
audio formats and they range in quality (and license types).


> That's all I can think of at the moment but I'm sure there are other
> needs I've come across and forgotten. Please feel free to supplement
> this list.
>
>
As already mentioned, libintl is on my list of things to replace if
possible.  pkg-config has a nice replacement in pkgconf.  (If a list is
created, might be helpful to list possible replacements already out
there.)  Would like to see some of the pieces that are essential parts of
the GNU build system/autotools replaced with some more efficient
alternatives.  It's easier to keep using the GNU autotools system than to
completely replace it with a new design.  Replacing it with another system
completely would mean switching over any program or library one wants to
build from the many Open Source programs already out there that currently
use it.  The CoApp project is attempting to do that on Windows (switch
other build systems over to the one used by Visual C++).  Seems like a lot
of unnecessary work to port applications.  Would rather see the current
build systems already used (autotools, cmake, etc.) streamlined or see drop
in replacements that are better designed.

One other area that can be troublesome is when there are multiple libraries
with similar functionality and some of the programs you want to build use
one while the rest use another.  The openssl/gnutls/nss example is an
issue.  It's typically solved by supplying wrapper interfaces.  The case I
keep running into at the moment is libxml2/expat.  libxml2 is newer and
works in conjunction with libraries like libxslt.  Some Open Source
programs let you pick one or the other.  Unfortunately, there are some that
insist on only one.  Makes it hard to simplify one's system down to just
using one XML library.

Sincerely,
Laura

[-- Attachment #2: Type: text/html, Size: 6927 bytes --]

  parent reply	other threads:[~2013-04-25 11:44 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-25  4:15 Rich Felker
2013-04-25  5:05 ` Daniel Cegiełka
2013-04-25  5:21   ` Rich Felker
2013-04-25  5:55 ` Kurt H Maier
2013-04-25  7:34   ` Jens Staal
2013-04-25 12:18     ` Rich Felker
2013-04-25 13:54     ` Kurt H Maier
2013-04-25  6:43 ` Gregor Pintar
2013-04-26  0:55   ` idunham
2013-04-26  1:11     ` crypto libraries idunham
2013-04-26  7:51       ` Daniel Cegiełka
2013-04-26  1:51     ` High-priority library replacements? Rich Felker
2013-04-26  8:11     ` Gregor Pintar
2013-04-26 15:47       ` Rich Felker
2013-04-26 17:24         ` Gregor Pintar
2013-04-28 21:43         ` Rob Landley
2013-04-29 10:16       ` Szabolcs Nagy
2013-04-29 12:09         ` Rich Felker
2013-04-29 17:35         ` Gregor Pintar
2013-04-29 21:55           ` Szabolcs Nagy
2013-04-30  2:10             ` Rich Felker
2013-04-30  6:32               ` Gregor Pintar
2013-04-30  8:35                 ` Szabolcs Nagy
2013-04-30  9:58                   ` Gregor Pintar
2013-04-30 11:30                     ` Szabolcs Nagy
2013-04-30 14:11                       ` Gregor Pintar
2013-05-01  7:26                     ` Gregor Pintar
2013-05-08 21:37                       ` Daniel Cegiełka
2013-05-08 23:00                         ` idunham
2013-05-09  7:36                           ` Daniel Cegiełka
2013-05-09  9:03                             ` Daniel Cegiełka
2013-05-09 11:10                             ` LM
2013-05-09 14:08                             ` Rich Felker
2013-05-09 14:40                               ` Daniel Cegiełka
2013-05-09 14:45                                 ` Rich Felker
2013-05-12 22:42                                   ` Brad Conroy
2013-05-15 20:17                                     ` Rich Felker
2013-05-16 16:12                                       ` Justin Cormack
2013-05-17  1:56                                         ` Rich Felker
2013-05-17  7:28                                           ` Justin Cormack
2013-05-09 16:40                                 ` LM
2013-04-30 18:47   ` Nicolas Braud-Santoni
2013-04-30 19:18     ` Gregor Pintar
2013-05-26 20:09   ` Daniel Cegiełka
2013-05-27 15:53     ` Gregor Pintar
2013-05-28  9:27       ` Daniel Cegiełka
2013-05-28 17:30         ` Gregor Pintar
2013-05-28 13:11     ` LM
2013-05-28 21:38       ` Rob Landley
2013-05-31 11:13         ` LM
2013-05-31 11:36           ` LM
2013-04-25  7:21 ` Hal Clark
2013-04-25 10:58   ` Igmar Palsenberg
2013-04-25 12:28   ` Rich Felker
2013-04-25 11:44 ` LM [this message]
2013-04-25 12:51   ` Rich Felker
2013-04-25 15:30     ` Jens Staal
2013-04-25 16:51     ` Zvi Gilboa
2013-04-25 16:57       ` Justin Cormack
2013-04-25 17:53         ` Zvi Gilboa
2013-04-27  5:45           ` Rob Landley
2013-04-27  8:13             ` Luca Barbato
2013-04-27 13:05             ` Zvi Gilboa
2013-04-26  6:11       ` Igmar Palsenberg
2013-04-28 21:34         ` Licensing Rob Landley
2013-04-29 20:47           ` Licensing Rich Felker
2013-04-29 21:10             ` Licensing Jens Gustedt
2013-04-29 22:47               ` Licensing Kurt H Maier
2013-04-29 22:50             ` Licensing Rob Landley
2013-04-30 12:32           ` Licensing LM
2013-04-26  4:19 ` High-priority library replacements? Isaac Dunham
2013-04-26 11:41   ` LM
2013-04-26 12:57     ` Muhammad Sumyandityo Noor
2013-04-26 15:53       ` Rich Felker
2013-04-28  6:53         ` Muhammad Sumyandityo Noor
2013-04-28 17:46           ` Rich Felker
2013-04-26 16:52       ` LM
2013-04-26  4:32 ` nwmcsween
2013-04-29  5:51 Brad Conroy
2013-04-29 16:38 ` John Spencer
2013-04-29 20:14   ` Rob Landley
2013-04-29 20:53     ` Rich Felker
2013-04-30  1:53       ` idunham
2013-04-30  2:21         ` Rich Felker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFipMOHu7y1Ko4L6zMzi5f7COzqkq4zFWB5y0wbgP1hTRR0gnw@mail.gmail.com \
    --to=lmemsm@gmail.com \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).