Simplify application maintenance #90
Labels
Epic
kind/chore
Technical tasks/debt needed in order to maintain a healthy system or otherwise improve dev processes
quality/engineering
team/studio
Introduction
In order to reduce breaking changes in the template used by all Altinn 3 Apps and to simplify the maintenance of apps a number of issues have been identified and grouped into this epic.
The expected positive results are:
Not solving:
In scope
Although the details isn't in place yet the goal is to split todays interfaces and implementations (eg. IAltinnApp, AppSettings +++) into smaller interfaces and move code out of AppBase into default implementations with the ability to easily swap them out if needed.
Create a .Net Api on top of the configuration we currently have. This is more about restructuring the standalone service implementations we currently have, where the responsibility of knowing what files needs to be updated is exposed to the controller, into a business layer handling all the implicit connections between the various configuration files.
Out of scope
Tasks
app-template-dotnet (in prioritized order)
Goal: Base overrides on Dependency Injection with well defined interfaces instead.
Goal: Get a better distinction between custom services/config done by app developers and default/required services/config added by Altinn team, ease the job required when we need to change this file, have a smaller file and separate out our and app developrs registrations in separate classes (to some point what's done with AddAppServices and AddPlatformServices today).
Goal: Re-use the publised version of the app-template directly
Goal: avoid having to refactor existing tests that targets the current version. Have tests on each supported version and ensure that no breaking changes are introduced when doing minor/patch updates.
Goal: Have the same set of rules applied to the development of apps and the app template as we have everywhere else. Avoid warnings and ignore statements in code when we pull app code into integration tests. We should have a warning free template to lead by example.
Goal: Run tests as part of apps pipeline and encourage best practices.
app-lib-dotnet
Currently we publish 3 nuget packages, but we treat them as 1 - meaning we always publish all of them to keep them in sync. We should look at the need for having 3 separate packages, and perhaps start of with one and discuss the need for multiple when the need arises.
Goal: Reduce breaking changes when implementation changes as the base class approach is sensitive when it comes to introducing breaking changes.
Goal: Group settings that belong together in the same class avoiding to have dependencies on settings not related to the actual use. Eg. Eformidling settings should be on their own.
Goal: Register, configure and inject EFormidling only when the app actually uses it. EFormidling should be a separate nuget package and is a good candidate for testing that an "add-on" like this can be configured only through importing the package and register the necessary services. This means we need to have interfaces defined that allows EFormidling to be injected and executed at the right places ref. Move from AppBase... task.
Goal: Allow for easy replacement of PDF generation, both for Altinn to create a new version and for app developers to create their own.
Goal: Reduce core and have smaller packages for additional implementations. Same is done for a new package specifically for Altinn 3 which eventually will replace the dependency on Altinn 2.
altinn-studio-docs
Goal: Training need to reflect the new ways of extending an application with custom code.
The text was updated successfully, but these errors were encountered: