[Botan-announce] User survey results

Jack Lloyd lloyd at randombit.net
Tue Sep 7 13:15:08 EDT 2010


The botan user survey that has been running for the last few weeks has
finished up. In total there were 40 responders, mostly in North
America and Europe with a half dozen or so from southeast Asia. I was
a little surprised to see no responses at all (that surveygizmo
geolocated to) Australia, the UK, Japan, or anywhere in South America.

The responses on target platforms showed a very high skew.  For
operating systems, 2/3 of all replies indicated use on Linux and
Windows, followed by OS X with 37% and FreeBSD with 22%, and the rest
under 15%. For Windows, targeting native Win32 was about 3 times as
popular as going through Cygwin or MinGW. Nearly everyone used either
GCC or Visual C++, which were about even in the results. The only
other replies were Clang (5 users) and Sun Studio and Intel C++ (2
each). Similarly, almost everyone is targeting x86 (either 32 or 64
bit); only a handful of people mentioned targeting anything else
(PPC, ARM, and SPARC).

The platform responses are good news for me: it means I have
reasonably good coverage during development of the platforms people
are actually using. Probably the biggest exception here is OS X, since
I don't have access to an OS X development machine. However given OS X
is pretty Unixy, uses GCC (or likely Clang sometime soon), and is x86
only, means new features intended for Linux and FreeBSD running x86
will mostly apply there without problems, though features specific to
OS X are of course less likely. I don't even know the OS X ecosystem
well enough to know specifically what I might be missing here; Grand
Central is the only thing that really comes to mind, and I don't know
if that is something that botan could effectively leverage in any
case.

Currently botan is C++98 without any (required) external dependencies
[TR1 is required in 1.8 for ECC but this requirement was dropped in
1.9; I prepared a patch for 1.8 to do the same but applying it would
break binary compatibility which would make downstream Linux distros
like Debian and Fedora unhappy]. On the question of how much of C++
botan should require, a majority (60%) preferred botan stay C++98,
possibly with the addition of TR1 (14%) or Boost (7%). The remaining
40% were OK with the idea of botan adopting C++0x features.

As of now I think the most likely evolution is that the next stable
series (1.10) will remain pure C++98. By that point, C++0x support
will be more widely available in the relevant compilers and I'll
explore the right choice re C++98 vs C++0x after that point. I'm sure
eventually botan will adopt C++0x, it's merely a question of getting
the timing right.

The project areas showed another long tail, with a slight majority
(53%) using botan in some form of end-user software, followed by
anything enterprisy/B2B (30%), followed by research projects (28%)
followed by everything else. The two people who are working on a
Skynet prototype should consider getting together and pooling their
efforts. :)

The write in responses had a lot of good suggestions, and I wish more
people had written things here. The most notable themes:

 - A number of people expressed a desire for better/updated
   documentation, tutorial material and examples. This was probably
   the #1 requested feature, and in the 'rate these areas' question,
   documentation scored the lowest out of all the categories. So
   clearly this is an issue.

 - Two people asked about zero-copy operations, either with the
   pipe/filter system directly supporting it, or by exposing
   operations in such a way as they could be done without requiring
   the use of a Pipe object. (I've got some ideas written down in this
   area but no code written).

 - Two other people requested pure state machine SSL that doesn't have
   any socket dependencies and can work with event-driven IO. This is
   definitely a goal for the next stable release series, requiring a
   thread per connection sucks in many obvious ways, I just don't have
   time to work on it right now.

 - Other interesting requests:
    - More high level interfaces

    - Improving the Python wrapper (will happen when I have time, or
      when you send patches)

    - McEliece encryption (definitely an interesting area,
      unfortunately no standards and it's not totally clear to me yet
      what is/is not safe so I've been holding off investing too much
      time in this just yet; maybe in a year or two?)

    - iOS/Android/webOS port (seems neat, but I don't have a
      smartphone and don't anticipate getting one anytime soon so
      someone else would have to take this one on)

    - CUDA optimizations (been playing with this, my CUDA cards are
      much slower than my CPUs so currently all my results are CUDA
      pessimizations).

Obviously there were many more questions asked, the above is just a
summary of the more relevant or interesting pieces I noticed looking
over the results. If anyone is curious about other results just ask.

Thanks to everyone who responded.

-Jack



More information about the botan-announce mailing list