In Development
Last Updated: 13 Sep 2023 12:54 by Rodney Moore
Scheduled for 2023 R3
Levi
Created on: 29 Sep 2021 21:57
Type: Feature Request
51
Future of Linux support for reporting

What's the long-term plan for supporting Linux and Telerik Reporting? The dotnet design team is looking to remove support for System.Drawing.Common on Linux platforms. They're recommending compiler warnings in .Net 6, and full PlatformNotSupportedExceptions in .Net7

 

Sources:

designs/system-drawing-win-only.md at main · dotnet/designs (github.com)

Breaking change: System.Drawing.Common only supported on Windows - .NET | Microsoft Docs

42 comments
Rodney Moore
Posted on: 13 Sep 2023 12:54

we just need it done not screenshots begging for  forgivness.

this stopped me buying your blazor components cause i cant trust your company will keep current  

 

ADMIN
Ivan Hristov
Posted on: 13 Sep 2023 12:25

Hello all,

I can assure you I understand your concerns about the current state of Linux support in Telerik Reporting. I can also assure you that the major part of our dev force works on this task with one goal in mind - to deliver HTML and PDF rendering using Skia in 2023 R3 release.

Dan Flanigan is completely right - we knew and we should have been prepared. That's why it makes no sense to get into details about the task complexity or the amount of changes that need to be done. Instead, I will share one recent image from our work in progress - it's the well-known Dashboard report, rendered in PDF using our SkiaSharp implementation.

It's easy to see it's far from perfect - there are text misalignments, the graphic paths are not exactly the same as before, some positions are miscalculated... but I hope it gives you confidence that we're dedicated to deliver the promised functionality.

As we advance further, I will be more than happy to share our progress here, so stay tuned!

 

Ivan Hristov,

Reporting Team

Dan
Posted on: 07 Sep 2023 14:42

We are creating infrastructure just for running Telerik reporting in .NET 6 / Debian outside of our primary web application running containerized on .NET 7.

 

This entire situation has left a terrible taste in my mouth - you guys knew and should have been prepared for this. We will be considering slowly moving to ActiveReports when our new application goes live. We shouldn't have to search for a glorified blog post -- this should have been front and center within the release notes.

EDUARDO ALEJANDRO
Posted on: 11 Aug 2023 20:55

Thank you, Ivan.

 

We've been a Telerik customer for years, and we've been waiting for this fix for a very long time. This is seriously damaging our products since we cannot implement newer, better versions of .NET because of this problem. Our hearts will be broken if this doesn't come out in R3 this year.

Fingers crossed, I hope the best for your team so they can finally implement this and be ready for .NET 8.

ADMIN
Ivan Hristov
Posted on: 21 Jul 2023 08:59

Hi all,

Yes, we are working on the task with highest priority for our R3 release. As explained earlier, in R2 the engine still uses GDI+, but the abstraction part is done and is being used as a base for Skia implementation. We believe that for R3 we will implement all the necessary logic for correct measurement and rendering, focusing initially on HTML and PDF rendering extensions.

Regards,

Ivan Hristov

Telerik Reporting

Thomas
Posted on: 18 Jul 2023 20:02

I just wanted to check in and see what the status of this is moving towards 20203.R3.  Are we on schedule for linux support in 2023.R3?  Below is what we were told would be in place for 2023.R2:

"For R2 we will implement an abstraction of the graphics layer to a set of interfaces, but the engine still will be using the GDI+ implementation. This abstraction is mandatory so we can plug the Skia implementation and use it instead of the GDI+ calls."

ADMIN
Dimitar
Posted on: 20 Jun 2023 12:31

Hello,

Thank you for the feedback!

@Hans

As you have already discussed with my colleague Momchil in a separate ticket, the only two approaches left at the current time are to either:

  • Uninstall the new runtime (7.0.7) and re-install the previous version (7.0.5).
  • Use Parallels to set up a Windows VM where the issue should not be present

@dsfsdf

We have mentioned the problem in the Using Telerik Reporting with .NET Core, 6, 7, or Standard - Telerik Reporting article which is the main article to go to regarding our product's .NET Core features and limitations.

Regards,
Dimitar
Progress Telerik

Stay tuned by visiting our roadmap and feedback portal pages, enjoy a smooth take-off with our Getting Started resources, or visit the free self-paced technical training at https://learn.telerik.com/.
Hans
Posted on: 15 Jun 2023 08:45

This needs to be fixed as soon as possible. The Telerik.Reporting for ASP.NET Core worked until version 7.0.5. When updating to version 7.0.7 the System.Drawing library used through Telerik.Reporting throws the following error:

"InnerException {System.TypeInitializationException: The type initializer for 'Gdip' threw an exception.  ---> System.PlatformNotSupportedException: System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information.    at System.Drawing.LibraryResolver.EnsureRegistered()    at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()    at System.Drawing.SafeNativeMethods.Gdip..cctor()    --- End of inner exception stack trace ---    at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromScan0(Int32 width, Int32 height, Int32 stride, Int32 format, IntPtr scan0, IntPtr& bitmap)    at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)    at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)    at Telerik.Reporting.Drawing.Unit.GetDotsPerInch()    at Telerik.Reporting.Drawing.Unit.ResetDpiSettings()    at Telerik.Reporting.Drawing.Unit..cctor()} System.TypeInitializationException"

"System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information."

Until version 7.0.7 of .NET Core I was able to work around this issue using a third party Nuget package:
https://github.com/curiosity-ai/libgdiplus-packaging

Could you please address this issue as soon as possible?

With regards,
Hans Sixhöj
A Perfect Day AB
https://www.billingpoint.se

dsfsdf
Posted on: 14 Jun 2023 08:58

I spent three hours of my day trying to follow all your outdated documents only to stumble across this.

You really need to make sure this is spelled out on your pages, and while you are there, clean up all the outdated ones.

 

 

ADMIN
Dimitar
Posted on: 02 May 2023 09:02

Hi Giancarlo,

In regard to the first question, whether this problem will be present in future .NET versions, once we migrate from GDI+, the problem should be resolved for the current and future .NET versions included.

The only reason it currently works in .NET 6 but not in .NET 7 is due to Microsoft choosing to leave out a switch for using the System.Drawing.Common namespace in the older .NET. but removing it starting with .NET 7.

Regarding the second question, yes, we still intend to implement this for the R3 release later this year, please stay tuned.

Thank you for using Telerik Reporting!

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Giancarlo
Posted on: 28 Apr 2023 21:22

Hello Dimitar,

May I trouble you please with responses to my 2 below questions? My team is trying to make a decision whether we should move to .NET 6 or .NET 7, and it all hangs on this issue with Telerik Reporting.

Thanks again for your help

Giancarlo
Posted on: 26 Apr 2023 12:50

Hello Dimitar,

Now that Skia will or can be used instead of GDI, is it fair to say that going forward we won't run into this same issue with new versions of .NET (e.g. .NET 8)? I ask because it was a curveball that it works on .NET 6 but not .NET 7.

And also, can you please confirm (or deny) that things are on track still for having this fix for R3 2023?

Thank you

ADMIN
Dimitar
Posted on: 26 Apr 2023 11:05

Hello Giancarlo,

R3 releases are usually in September but this year it might come out a little later, October is more likely at this point.

You may see when the R3 releases come out usually at the Telerik Reporting Release History page.

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Giancarlo
Posted on: 25 Apr 2023 15:20

Hello Dimitar,

Approximately when will R3 2023 be released?

Thank you

ADMIN
Dimitar
Posted on: 13 Apr 2023 12:14

Hello Oleg,

Yes, we do plan to support .NET 7+ on non-Windows-based operating systems in the future.

We are working on it and our intentions are to deliver this feature with the R3 2023 release later this year, please stay tuned.

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Oleg
Posted on: 07 Apr 2023 19:42

Hello, guys!

Could you please tell me if you currently have any plans in the roadmap to support Telerik Reporting for .NET 7 / .NET 8 on Linux? Are you already working in this direction?

Our solution is stuck on .NET 6 (Linux) because of the dependency on Telerik Reporting components and I would like to understand whether we should just wait for some near future or come up with some alternatives to bypass these dependencies.

ADMIN
Ivan Hristov
Posted on: 28 Feb 2023 21:45

Hello Thomas,

I can assure you that we do not underestimate the significance of this feature and fully understand how important it is. We realize that replacing the current graphics library with Skia will also resolve the problems that we currently have not only on Linux, but also on Azure, where most of the GDI+ calls are getting gradually blocked. Enabling the usage of an alternate graphics library will allow us to label our product as truly cross-platform.

This is our top priority feature along with the Visual Studio Report Designer for .NET projects and - as always - we will keep you updated on our progress.

All best,

Ivan Hristov

Thomas
Posted on: 21 Feb 2023 22:36

Ivan:
Thank you for clarifying.  I'm not getting the felling this is getting the attention it deserves.  This issue has prevented us from upgrading to dotnet 7 and based on your timeline will cause us to miss the entire dotnet 7 release.  I can see missing the original release of dotnet 7 by a few months but this is a year late! 

Think about that, there is no support for dotnet 7 on Linux for Telerik Reporting and by the time support is released dotnet 8 will be out.  

ADMIN
Ivan Hristov
Posted on: 13 Feb 2023 16:13

Hi Thomas,

Sorry if my post was confusing.

For R2 we will implement an abstraction of the graphics layer to a set of interfaces, but the engine still will be using the GDI+ implementation. This abstraction is mandatory so we can plug the Skia implementation and use it instead of the GDI+ calls.

In short: 2023 R2 will still be using GDI+ as a graphics library. 2023 R3 will enable the functionality to switch between GDI+ and Skia.

I hope I managed to explain it better this time :)

All best,

Ivan Hristov

Thomas
Posted on: 13 Feb 2023 14:01
Ivan:
Thanks for the additional information, can you clarify your statement for us?  Will we be able to swap out the engine GDI+ for Skia with the R2 2023 release?  That's what it sounded like you were saying but then you said everything should work in R3.
ADMIN
Ivan Hristov
Posted on: 13 Feb 2023 13:49

Hi Dominik,

Thank you for notifying us about the incorrect status of the feedback item - I have just updated it.

I can assure you that the adoption of Skia library in our product is regarded as a feature with highest priority.

For R2 2023 we plan to refactor the graphics-dependent code to support pluggable architecture, so the users could easily switch between GDI+  and Skia rendering, even on Windows machines where GDI+ is natively supported. The effort will continue in the following months, and we believe we will be able to deliver a working solution for our R3 2023 release.

All best,

Ivan Hristov

Dominik
Posted on: 05 Feb 2023 16:39

Hi,

any new decisions you can share with us yet? This is currently holding us back from moving to NET7 as well.
This is getting harder for me to defend especially because this here is the only issue about it and it is still marked as "Unplanned".

NET8 might still be months away, but I imagine moving to a different rendering library is a months long endeavor to get right as well.
So any (technical) news or any alpha version to test would be very appreciated.

ADMIN
Dimitar
Posted on: 16 Jan 2023 14:22

Hello,

Indeed, support for System.Drawing.Common has been dropped for non-Windows environments starting with .NET 7 - Breaking change: System.Drawing.Common only supported on Windows - .NET | Microsoft Learn.

We are aware of this limitation and it is in our plans for the 2023 year to switch to another graphics library, however, that will not happen for the R1 2023 release coming out in the next few days. We are putting our efforts into implementing this for R2/R3 2023 and will update the thread as soon as we have confirmed a release date.

We appreciate your patience!

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Thomas
Posted on: 09 Jan 2023 20:24

@Dimitar that is true IF you are using Telerik Reporting with .Net 6 as your example shows, however if you are using Linux and .Net 7 your example fails to load.

 

@Milen any update on .Net 7 and Linux support for Telerik reporting are you still planning on May of 2023?

Ado
Posted on: 16 Dec 2022 09:01

@Sam, I know it's not LTS but this doesn't mean that is not ready for production, its support ends in May 2024. Our plan was to move to .net 7 this year and to .Net 8 in Dec 2023.

Furthermore, .net7 runtime is much faster in some areas and it has a lot of new features that we want to adopt for current and new versions of our system we planned for January.

Ado

 

 

 

Sam Morreel
Posted on: 16 Dec 2022 01:06

@Ado,

Have you considered that .NET 7 is NOT long term service and .NET 6 is? Is skipping .NET 7 until a new LTS version comes a possibility for you?

Cheers.

Ado
Posted on: 16 Dec 2022 00:52

I'm discovering now that we can't move our system on k8s to .net7 because Telerik reporting is not working on Linux.

I know that it maybe be challenging to swap the GDI library with SkiaSharp but it should have been planned ahead of time as GDI+ itself is a really ancient graphics library with a lot of issues.

We planned to move from .net6 to .net7 before the end of the year, a big system with a lot of microservices and many people involved: a lot of work is wasted now.

As a long Telerik customer, I feel that I must have been informed with a direct email, even more than one email, ensuring that all of us (your customers) were clearly aware of such a giant issue.

Sorry for the complaint,

Adolfo Marinucci

 

 

ADMIN
Dimitar
Posted on: 11 Nov 2022 15:30

Hello,

For those that use Docker to deploy their application that uses Telerik Reporting, there shouldn't be any issues as long as the required Telerik Reporting dependencies installation is part of the Dockerfile.

As an example setup, please have a look at the following Dockerfile DevOpsExamples/Dockerfile at 2faa76e574902088fb7a2bae8396d24f7b81bdcc · LanceMcCarthy/DevOpsExamples (github.com).

To quickly test this, you may run the following command:

docker run -d --name="TelerikReportingTest" -p 880:80 lancemccarthy/myaspnetcoreapp:latest

Then open localhost:880 and go to the ReportViewer page. We hope this helps!

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Ryan
Posted on: 04 Nov 2022 23:53
We deploy our apps to Azure App Service for Linux.  We will likely ignore .NET 7, since Microsoft won't give it Long Term Support (LTS).  However, we will very likely adopt the next following (LTS) version after .NET 7.
Thomas
Posted on: 28 Sep 2022 11:58

Milen:
We deploy our application to Linux via docker.  Right now our base image is Ubuntu. 

Actual Image: mcr.microsoft.com/dotnet/aspnet:6.0-focal.

We tried alpine a few times with little luck due to dependencies for Telerik Reporting, so that is another one we would be very interested in.  With Azure AKS now supporting ARM that is another area of interest for our runtime.

ADMIN
Milen
Posted on: 28 Sep 2022 09:09

Hello Thomas,

Thank you for your care. Mid-May 2023 continues to be our target for this feature. I will share here anything meaningful I have.

Thomas, It would help if you describe the exact platform you guys deploy on. Thank you!

Regards,
Milen
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Thomas
Posted on: 15 Sep 2022 14:41
Milen, would it be possible for you share updates on a regular basis?  This will help us also plan for our .Net 7 upgrade alongside yours.
ADMIN
Milen
Posted on: 21 Jul 2022 11:18

All,

Indeed, the fact that .NET 7 completely shuts down System.Drawing on non-Windows platforms puts us in a very hard situation. We have already started the research and it seems we will need to make a big architectural change in the product in order to integrate and use another drawing library. Most probably, we will go with SkiaSharp. As a time frame, I cannot promise we will be done along with the official .NET 7 release. Realistically we will target the R2 2023 release scheduled for May 2023. I will update you here when I have more details to share.

Meantime, any ideas are more than welcome. Thank you for your engagement.

Regards,
Milen
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Christopher
Posted on: 13 Jul 2022 15:01

i am running the reporting code in a Linux container also.

We pass Telerik images for our reports and lack of System.Drawing.Common is going to break this in .Net 6 and going to be dead broke in .Net 7

For those unaware.. you can add this into your runtimeconfig.template.json to get Systme.Drawing.Commin working on .Net 6

    "configProperties": 
    {
      "System.Drawing.EnableUnixSupport": true
    }

This workaround will go away in .Net 7

We absolutely must have the ability to print images using Telerik Linux containers.

I can imagine this is a nightmare for the Progress Architects.

However, from a business standpoint this has to be in the product for us to continue using it.

As this is your dependency, I am not concerned with how you implement it.

 

 

 

 

 

Sean
Posted on: 24 Jun 2022 20:08

We run all our applications in custom Linux containers on AWS just to support your reporting libraries.

This will be vital to be able to go to .NET 7.

 

 

 

 

Sam Morreel
Posted on: 14 Apr 2022 00:25

Chiming in here,

Please see for reference -> https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only

Currently, we use Telerik reporting extensively on Linux. We recently upgraded several nuget packages that caused System.Drawing.Common to be updated to file version 6.x.x. According to the article above, in order to continue to use System.Drawing.Common under .NET 6 on Linux, we needed to add a runtime switch. This did indeed fix the exception.

However, this switch is gone in .NET 7.0. Microsoft's recommendation is to use:

It's likely that Maui.Graphics is the strategic choice, given its ability as a complete cross platform library. My vote would be for Maui as a replacement, but I'll take anything as long as we can continue to use Telerik reporting on .NET 7.0.

Cheers,
Sam.

 

ADMIN
Dimitar
Posted on: 02 Feb 2022 07:10

Hello Tursunkhuja,

Telerik Reporting is constantly making improvements on the rendering behavior under Linux, however, migrating to the SkiaSharp library is not in our roadmap for 2022.

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Tursunkhuja
Posted on: 26 Jan 2022 08:09

Hi All,

We also have similar problem. Our project based on .net6 and we are planning to use reporting in Linux environment.

When you are planning to improve Telerik Reporting rendering behavior on Linux machines? or when you expecting to use SkiaSharp library.

 

Thank you,

Gregory
Posted on: 24 Nov 2021 14:40
we will renew our license if you will do it
ADMIN
Dimitar
Posted on: 25 Oct 2021 14:20

Hello Levi,

Thank you for the valuable feedback!

I just want to mention that it is possible to run Telerik Reporting on Linux even today but the library libgdiplus is required. This library is a Mono implementation of GDI+ API for non-Windows operating systems - Using Telerik Reporting in Applications on Linux Platform.

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.
Levi
Posted on: 18 Oct 2021 20:19

Thanks for the update. This is one I'm keenly interested in.

For reference, my use-case is with Azure Functions. Being able to host in Linux would enable us to adjust our hosting tier to much higher performance for the same cost (currently on Windows hosted). Although when I think about again, being able to fully drop the GDI dependency would also let us move to the dynamic serverless tier (which blocks most GDI access).

I understand that it's a large change and you can't give a commitment or timeline, but this feature would be huge for us - the further ability to run Telerik reports easily in more environments.

ADMIN
Dimitar
Posted on: 06 Oct 2021 12:53

Hello Levi,

Thank you for raising awareness of those potential issues.

Our long-term plan is to try and refactor our drawing logic to utilize the SkiaSharp library.

Even if MS does not drop the support for System.Drawing.Common, the currently used library, libgdiplus, has multiple issues with text measuring, clipping, working with units other than pixels, etc. and we are researching for a solution to improve the Telerik Reporting rendering behavior on Linux machines. The SkiaSharp library may be the answer to those problems.

Please let us know if you have any other questions.

Regards,
Dimitar
Progress Telerik

Brand new Telerik Reporting course in Virtual Classroom - the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products. Check it out at https://learn.telerik.com/.