Utility Openness


Under this very weird title comes an important piece of news: the company I work for (proxying through me -or the other way around-) has released new Open Source Library: Vertica.Utilities.

And it is worth checking.

A bit of background

This is not a new library. Not at all. It is something that has accompanied me and most of the projects within Vertica for a number of years.

Majority of developers have a toolbelt of utilities that they are confortable with, improves their productivity and follows their style. I do too and I was happy to maintain it and share it with all my colleagues. But now it is time to share it with everyone else.

The seed for the library comes from way before I joined Vertical, where I used some helpers to create valid query strings.

By that time I was heavy on learning about unit testing and a library of utilities served me perfectly to sharpen my skills and it grew and grew as I found out pieces of reusable code within my day to day work and my sessions of Internet browsing and sample hoarding. I became sort of a magpie, fetching interesting code that I could improve and add tests to.

All of a sudden it became a useful, interesting collection of extensions, pattern implementations, utility classes and value objects that, continuously integrated and released to our internal NuGet repository could be used by all developers within our company.

After a couple of conversations in the past, this year seemed like the best chance to open source it. And there it goes.

Anatomy of a trasure hoard

Vertica.Utilities was born as a .NET Framework 3.5 class library. It went a major make up operation when I migrated it to a .NET Framework 4.0 library and now it is a .NET Standard library that targets both the .NET Framework 4.5 and .NET Standard 1.5 with minimal dependencies (none "external” as in not from System.*).

It is a single, multi-targeting project developed in Visual Studio 2017 but perfectly usable with the .NET Core SDK toolset. The fact that it also targets a “classic" Framework for compatibility reasons makes it unfit for multi-platform building. One can compile it and use it, of course, in any platform, but, in order to create the package one has to have a Windows machine.

It is hosted in GitHub (what isnt nowadays?), uses NUnit to be tested and leans on dotnet for all its (minimal) build scripting and it is continuously built by Appveyor, its test coverage published to Codecov and deployed as a Nuget Package.

Brighter future

Utility libraries are dime a dozen and plentiful. But this one has served me well, reflects my style and I hope it can help someone else even if only as a learning tool.

It would be a blast if we could get contributions. So there it goes the dare. Time to pick up the glove.