dpvreony

Designing Nucleotide.

TLDR: Nucleotide is available at the github project page.

Introduction

Nucleotide is a code generation toolset aimed at reducing developer burden on producing POCO objects for various parts of a .NET application structure. It started life as a series of C++ templates and macros, spent a few years as a concept utilising T4 (Text Transforms Transforming Toolkit) before the current toolchain that leverages Roslyn.

Nucleotide sits on top of Whipstaff which contains some lower level abstractions and helpers for .NET related projects and patterns such as CQRS and REST.

Benefits of Source Generation

TODO

Aims of Nucleotide

TODO

Benefits of Nucleotide

TODO

Challenges of Nucleotide

Nucleotide and Whipstaff are personal side projects and at this point not much better than proof of concepts. A key issue here is sustainability and usability outside my own personal work. Concepts from them have been taken and leveraged elsewhere but have not fed back into the project itself or even open source. With the time demands of COVID-19 on my own time my focus on open source has been ad-hoc and primarily in supporting Splat.

Maturing Nucleotide and Whipstaff

As an educational tool I believe Nucleotide has a lot to offer on Roslyn Source Generation and also on sustainable practices for the .NET eco-sphere. As with a lot of the work I do on Splat and ReactiveUI, Nucleotide and Whipstaff are aimed at leveraging other libraries to make development easier by reducing overhead. Something to look at is fit with another project within the .NET foundation, or continue to invest my time in the projects to gain them some traction and get them to a quality and stage where they make sense as a toolkit. Previously logic from Whipstaff was migrated to Splat (Functional logging overloads and Application Performance Monitoring) so one route is to continue the proof of concept helper route with nuget packages that increment to a major version if something reaches fruition of being capable of adopted by another upstream project.

Future options for Nucleotide

Some features within Nucleotide relate directly to other projects (i.e. MediatR, ReactiveUI, or even ASP .Net Core itself). That could be stripped from Nucleotide and fed into other projects. Vetuviem is an example of a source generation concept that belongs closer to the upstream project of ReactiveUI.

References

Roslyn Source Generators Cookbook Accessed: 2021-05-31.
Article Status Draft
Article Version 0.1
First Written 2021-05-31
Last Revision 2021-05-31
Next Review 2021-07-01
License MIT