Open Source
@ Innovian
Fostering a culture of collaboration and innovation within and beyond Innovian.
Our Philosophy
At Innovian, our commitment to open source projects reflects our dedication to enhancing the tools we use and supporting the wider community. By addressing bugs and developing new features, we not only improve software reliability, but also gain valuable insights into the technologies we depend on. This active participation ensures we deliver top-notch solutions to our clients while promoting a culture of shared growth and continuous improvement.
Our Projects
We are proud to present a collection of projects that we have independently authored and continue to maintain for the benefit of the broader open-source community. Each of these projects reflects our commitment to innovation, quality and collaboration.
These projects are not just contributions to the community; they are integral components of Innovian's own software solutions. By leveraging these tools, we ensure that our products are built on a foundation of robust, reliable and cutting-edge technology.
Innovian.Telnyx.Storage
Persistence
Telnyx
Telnyx provides an S3-compatible storage solution that integrates high-redundancy blob storage capabilities with cost-effective pricing via an API layer built atop a file-based blockchain.
We have leveraged their service for storage extensive long-term data archives and developed this library to streamline management and data transfer operations.
Innovian.Contrib.Dapr.StateQueryBuilder
Query
Dapr
The Dapr framework offers a state management API with limited query support for certain providers. It requires constructing complex JSON schemas to define operations such as contains, equals, paging, sorting, and handling AND/OR queries.
This project introduces a fluent API for JSON construction, minimizing the risk of human error or illegal operations, and significantly enhancing developer productivity.
Innovian.Aspects.Logging
Aspects
PostSharp
PostSharp’s Metalama product facilitates aspect-oriented development in C# by utilizing the Roslyn compiler for code generation and validation.
This project automates logging for non-static classes and methods in projects using Microsoft.Extensions.Logging. It wraps methods in a try/catch block to log arguments, return values, and execution time. An instance of ILogger is injected and available in classes marked with the ‘partial’ keyword, ensuring comprehensive logging and performance measurement.
Innovian.Dapr.Workflow.RegistrationAspect
Aspects
PostSharp
PostSharp’s Metalama product facilitates aspect-oriented development in C# by leveraging the Roslyn compiler for code generation and validation.
This project is designed for microservices using Dapr’s Workflow capabilities. It ensures developers register all Workflow and WorkflowActivity implementations with the dependency injection system. At compile time, it identifies each implementing class and dynamically constructs a static method for standard Dapr Workflow registration.
If you are interested in support, would like to request a feature or want to customize any of these projects to better suit your own needs, we are here to help. Innovian offers commercial engagements to provide the expertise and assistance you request.
Our Contributions
We are excited to showcase the projects to which we have made significant contributions. Our deep familiarity with these initiatives underscores our expertise and commitment to advancing open-source technology. These contributions are integral to Innovian’s software solutions, reflecting our proficiency and dedication. By partnering with us, you gain access to subject-matter experts who are well-versed in these frameworks and tools, ensuring robust and innovative solutions for your needs.
Dapr
Feature
Historically, the Dapr clients have configured options via values pulled independently from environment variables - this PR instead prioritizes pulling from arguments, IConfiguration and then from environment variables.
Dapr
Documentation
While a previous PR provided a detailed explainer on Data Contract serialization in the context of strongly-typed actor clients, this supplemented that work with an explainer on JSON serialization provided by System.Text.Json in both strongly- and weakly-typed actor clients
Dapr
Feature
Removes all Dapr protos out from their separate projects to a shared Dapr.Protos project as part of broader refactoring
Dapr
Feature
Removes several shared classes imported by project file reference to a shared Dapr.Common project as part of broader refactoring
Dapr
Testing
Feature
The upcoming release of .NET 9 adds greater vulnerability awareness through NuGet to direct and transitive package refernces. This is an early effort to apply all known CVEs, use central package management and update packages to their latest .NET 6 compatible versions
Dapr
Feature
As the Workflow block is approaching stable status, this effort removed obsolete methods from the Dapr.Client project and refactored an erroneously placed type
Dapr
Testing
Added unit test to validate additional scenario in Secrets API
Dapr
Testing
Added unit test to validate headers passed in service invocation request are preserved by sender
Dapr
Bug Fix
Added fix to better handle null values returned from the Metadata API
Dapr
Bug Fix
Added missing branch to switch statement to fix bug
Microsoft
Feature
Testing
Added support for the missing EventHubBufferedProducerClient in addition to the existing EventHubProducerClient and EventHubConsumerClient in Aspire's Event Hub implementation.
Dapr
Documentation
Two environment variables I was recently working in another contribution were missing from the reference documentation, so this PR added them.
Dapr
Feature
Testing
Documentation
This PR adds an overload to the service invocation functionality in Dapr by explicitly allowing key/value pairs to be appended to the invocation URL
Dapr
Feature
Testing
This PR adds access to an instance of IServiceProvider in the registration method for the Dapr client enabling developers to access values from the configuration or other registered services during the Dapr client registration.
rudiv
Feature
This PR adds support for Azure Batch as a deployment target for the project.
Added example demonstrating limits to workflow concurrency in fan in/out example
Dapr .NET SDKMay 7, 2024
Dapr
Documentation
The documentation described different workflow patterns, including a fan-out/fan-in pattern. But it ended with a note suggesting how to take the idea further, but without elaborating. This PR contributes a code sample providing precisely that elaboration.
Dapr
Feature
Documentation
Testing
When a certain well-known environment variable was being set with the expectation that it'd be used for tracing, the Dapr runtime wouldn't recognize it. In this PR, it not only recognizes, but prioritizes it over configured values when set.
Dapr
Feature
An issue was raised indicating that a method was returning a null value despite not being marked with the appropriate annotations. This provides those annotations to this method.
Updated documentation to reflect best practices regarding endpoint registration
Dapr .NET SDKApril 3, 2024
Dapr
Documentation
With the release of .NET 8, the best practice guidance shifted from use of the app.UseEndpoints method and instead to registration directly on the app instance. This PR updated such guidance in the Dapr documentation.
Fluxor
Feature
The introduction of the Auto rendermode in the .NET 8 version of Blazor broke any implementation of Fluxor that utilized it as the state would be lost during any transition from Server to WASM. This PR added a pluggable state persistence layer that restored project compatibility.
Microsoft
Bug Fix
When a resource was defined, it would produce an invalid value name for the template resource name argument. This PR corrected the issue here and across all dependencies of the value.
Dapr
Documentation
Feature
Testing
This PR added support for high-performance and bidirectional streaming of data for encryption and decryption of strings or streams compatible with .NET 6 and newer.
Dapr
Documentation
Seeking to complement the Cryptography support provided for the .NET Dapr client in another PR, this PR updates the documentation with descriptions and reference information regarding the functionality.
Dapr
Documentation
This PR added explicit samples demonstrating encryption and decryption operations with the .NET Dapr client
Dapr
Documentation
There have been many versions of C# released since the DataContract serialization library was originally introduced. As such, there's been some confusion around how serialization should behave using more modern C# functionality. This article performs a deep-dive analysis with examples into how newer C# capabilities can be readily used.
Dapr
Feature
Documentation
Testing
Prior to this PR, data retrieved via a call to GetBulkStateAsync would simply returned as a string. This PR instead deserializes the data to the generic type specified using the serialization engine configured with the Dapr client.
Dapr
Testing
A bug report was filed indicated something wasn't working as intended. I created a unit test to prove that the client was handling the operation as expected
Dapr
Documentation
The Dapr documentation cited a bad link in the Azure App Configuration documentation describing authentication with Azure. This PR corrected this link with an appropriate URL.
Updated remoting listener extension to support exception serialization
Azure Service FabricSeptember 9, 2023
Microsoft
Feature
Newer versions of Azure Service Fabric use new serialization settings. This PR adds overloads to a set of extensions that ship with the Service Fabric .NET SDK to support exception serialization using a custom IExceptionConverter for V2 remoting purposes.
PostSharp
Documentation
This PR comprised an example project demonstrating how to add aspects to multiple projects using Metalama Fabrics.
Microsoft
Bug Fix
Fixed an issue that prevented scaling in the web explorer interface due to a badly formed regular expression.
Microsoft
Bug Fix
In the web explorer interface, clicking the timestamp header to change the sort order didn't do anything, and this fixed PR this experience.
ChartsCSS
Bug Fix
If more than ten colors were placed in the legend, the remaining elements wouldn't have a fill color. This fix changed this behavior so the colors would just repeat.
If you're stumped by a bug in an open source dependency or want a feature, but can't spare the engineering talent to contribute it yourself, we'd be happy to talk with you about stepping in to help. Innovian offers commercial engagements to provide the expertise and assistance you request.