Onze collega Jonathan Mezach is in mei 2020 namens R&R gestart met een open source project. Dit project heet ‘MSBuild.Sdk.SqlProj’ en is aardig succesvol op ‘GitHub’, een online platform voor het delen van code. Het heeft inmiddels de grens van maar liefst 100.000 downloads gepasseerd en daar zijn we natuurlijk trots op.
Binnen R&R WFM maken we gebruik van SQL Server Data Tools (SSDT) van Microsoft om changes binnen onze database te managen. We hebben deze keuze gemaakt toen we – inmiddels een aantal jaar geleden – van de Oracle-database migreerden naar SQL-server. SSDT was destijds de meest volwassen tool die ons in staat stelde om versiebeheer op onze database changes uit te voeren.
In de loop van tijd hebben we verschillende scripts geschreven waarmee developers hun changes lokaal kunnen uitrollen. Daarnaast hebben we scripts geschreven voor het automatiseren van de deployments naar test- en productieomgevingen vanuit Octopus Deploy. Dit heeft altijd goed geholpen bij het gecontroleerd doorvoeren van onze database changes. Maar, gezien de ontwikkelingen en veranderingen aan de kant van Visual Studio en bijbehorende tooling, lijkt het erop dat de SSDT-tools achterblijven bij die ontwikkeling.
Een ding dat Jonathan daarbij stoorde is dat het niet mogelijk is om NuGet packages in een SQL-project (.sqlproj) te installeren. Hiermee zou je bijvoorbeeld afhankelijkheden kunnen delen in het .NET ecosysteem of het MSBuild-proces aan kunnen passen.
Daarom ging Jonathan aan de slag om dit zelf te bouwen. Gelukkig had de onderliggende technologie, DacFx, een publieke API waarmee hij aan de slag kon met het bouwen van een oplossing.
Het is Jonathan gelukt om in verschillende stappen een goed werkende oplossing te bouwen. Hierna is deze geüpload op NuGet zodat anderen de oplossing uit konden proberen en testen. In eerste instantie was het al redelijk getest in verschillende scenario’s, maar uiteraard zijn er altijd scenario’s te bedenken die nog niet gedekt zijn.
Na de lancering kreeg het open source project al snel tractie en goede reacties en feedback. Dat leidde dan ook tot de verdere ontwikkeling van de oplossing en nieuwe versies met nieuwe features. Daarbij hebben we ook hulp ontvangen van de open source community, met 35 externe ‘contributions’. Daar zijn we dan ook erg blij mee en dankbaar voor. Dit toont voor ons ook de kracht en de grote mogelijkheden van open source.
Wat begon als een eigen project om een oplossing te vinden voor onhandige situaties met SQL Server Data Tools, is inmiddels uitgegroeid tot een populair project op GitHub. Het heeft onlangs zelfs de mooie grens van 100.000 downloads gepasseerd.
Wij zijn natuurlijk trots op de bijdrage van Jonathan en R&R aan de open source community en hopen dat anderen hiermee ook goed geholpen zijn. Gezien het aantal downloads en positieve reacties blijkt dat zeker het geval te zijn.
Daarnaast heeft het project van Jonathan ons goed geholpen in het beheer van changes aan onze database. Er is dus sprake van een mooie ‘win-win’ situatie.
Open source technologie heeft veel voordelen en wordt op veel gebieden van het technologische spectrum gebruikt. Denk aan besturingssystemen van mobiele telefoons (bijvoorbeeld Android) of CMS voor websites (bijvoorbeeld WordPress). Het grote voordeel van open source is dat er door een grote community kan worden ‘doorontwikkeld’ en op deze manier continu wordt verbeterd en verrijkt met nieuwe functionaliteiten.
Binnen R&R zien we veel mogelijkheden op het gebied van open source. We zijn dan ook voornemens om op regelmatige basis geschikte elementen van onze software te delen met de open source community. Het MSBuild.Sdk.SqlProj project van Jonathan is wat ons betreft een hele mooie start en we kijken uit naar de verdere ontwikkelingen.
Wil je meer (technische) details weten over dit project? Kijk dan op: https://github.com/rr-wfm/MSBuild.Sdk.SqlProj