Friday, July 1, 2011

Can you package up that library for us?

One thing that we, Data Differential, have is a lot of code. We get requests, infrequently, about packing up one or more libraries that we use in our products. 


Our test harness, libtest (uTest), is one that comes up frequently. We use it for all of our products, and there are a handful of open source projects out there that use it as well.


Why have our own, why not just use GoogleTest, or the one built into Boost?


  • We have different features. libtest can start, stop, kill, etc a number of types of servers with different options.

  • Integration with tools. If you are in vim and type “:make”, if an assertion in a test occurs, you go directly to the error in vim. 

  • It is always around, because we ship it in our code. 

  • It can rerun collections of tests over and over, with different flags/options. 

  • Extended testing with valgrind.

  • It gives us a regression report for performance for each test.

  • Does C/C++ libraries (which is our bread and butter).

Does it lack things?


  • Documentation. Everyone who uses it today, uses it because they have worked for me at some point (or…). It is the network effect.

  • CLI applications. It cannot test these at all.

What is the big win? 


We have 50K lines of test cases at the moment, that just we maintain. There is an example for just about anything. The framework has a number of ways it can be extended so it is it is not hard to find an example to show someone (and we receive a couple of test cases a week from users, so we know that the average developer can pick it up rapidly)


So should we package it up?


Probably not.


Is having it be open source a win for us?


Yes.


We can distribute it, we can have our customers distribute it, and we can ship it with each download. We get the benefit of having all of our users install and run it. Because we maintain, developed, and are further developing it, we make testing a core competency. 


So why not package up everything we do? There isn’t the time, and there really isn’t a reason.


ABI compliance? We don’t require it for libtest.


More developers? There is this myth in open source where people believe that if you open source something, i.e. throw it over the wall, people will come. That is not the case at all.


Help with Development? Maybe, but it could also just become a time sync for us. 


We have gotten similar requests for other libraries, like libhashkit. We haven’t bothered there either (though we do ship it, provide ABI, and install it). In its case we have had other companies fund the work, and they just happen to hit us with the requests when we had some free cycles (which is rare for us at the moment).


So will we package up more libraries? 


I think the better question is, do we have a compelling reason to package up a library? 

No comments:

Post a Comment