mirror of
https://github.com/greenshot/greenshot
synced 2025-08-23 06:36:20 -07:00
Adding a new post about dotnet core, this is a draft.
This commit is contained in:
parent
9dc2b0c4a3
commit
3d7c660e22
1 changed files with 66 additions and 0 deletions
66
_posts/2018-12-04-dotnet-core.markdown
Normal file
66
_posts/2018-12-04-dotnet-core.markdown
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
---
|
||||||
|
layout: post
|
||||||
|
status: draft
|
||||||
|
published: false
|
||||||
|
title: The future of Greenshot for Windows
|
||||||
|
tags:
|
||||||
|
- windows
|
||||||
|
---
|
||||||
|
|
||||||
|
What did we do the last year?
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Although you might not have noticed, as we didn't release any new version of Greenshot, but since our last official release we didn't sit still, and a lot has happened!
|
||||||
|
|
||||||
|
What most people don't realize is that Greenshot in its current form would still work with .NET Framework 2.0, which is technology from 2002!
|
||||||
|
|
||||||
|
With that fact, you might understand that Greenshot desperately needs an overhaul! Not only in the used technology, but most parts of the program grew into something which hard to maintain and it didn't really invite other developers to assist us.
|
||||||
|
|
||||||
|
I started last year by updating Greenshot so it works with the most recent version of the .NET Framework, so we can use current technologies and reduce our codebase. I managed to extract multiple projects from Greenshot, into new Open Source projects:
|
||||||
|
* [Dapplo.Addons](https://github.com/dapplo/Dapplo.Addons) provides an addon framework, based on [Autofac](https://github.com/autofac/Autofac), which makes it possible to extend Greenshot
|
||||||
|
* [Dapplo.CaliburnMicro](https://github.com/dapplo/Dapplo.CaliburnMicro) Dapplo.CaliburnMicro provides a composition & MVVM implementation, using CaliburnMicro, and bases on Dapplo.Addons.
|
||||||
|
* [Dapplo.Confluence](https://github.com/dapplo/Dapplo.Confluence) provides an .NET API for accessing Atlassian Confluence
|
||||||
|
* [Dapplo.Confluence](https://github.com/dapplo/Dapplo.Confluence) Dapplo.Config provides the logic for handling the .ini file and also provides translations.
|
||||||
|
* [Dapplo.HttpExtensions](https://github.com/dapplo/Dapplo.HttpExtensions) providing logic which is used for the cloud services like box, dropbox etc.
|
||||||
|
* [Dapplo.Jira](https://github.com/dapplo/Dapplo.Jira) Dapplo.Jira provides an .NET API for accessing Atlassian Jira
|
||||||
|
* [Dapplo.Log](https://github.com/dapplo/Dapplo.Log) provides a simple logger for applications, this was build out of necessity and I hope to be able to delete this soon!
|
||||||
|
* [Dapplo.Windows](https://github.com/dapplo/Dapplo.Windows) provides the low level APIs for Windows (Win32), which contain the logic to locate the windows and other information which Greenshot needs.
|
||||||
|
|
||||||
|
Together with these projects, and a lot of changes in the codebase, the code in Greenshot should be much easier to maintain, and I also hope that the project has become a lot friendlier for the community.
|
||||||
|
|
||||||
|
|
||||||
|
Greenshot goes dotnet core!
|
||||||
|
======================
|
||||||
|
|
||||||
|
Although Microsoft dotnet core technology, which saw the light in June 2016, is platform agnostic, it it has not been possible to use existing UI technologies in it. In May 2018, while working hard on getting things working, Microsoft had an interesting announcement on Build 2018 which you can find [here](https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows-desktop-applications/)
|
||||||
|
|
||||||
|
The announcement was just what we were waiting for! Microsoft demonstrated that with dotnet core 3.0 it will be possible to use the same UI technologies that Greenshot is currently using!
|
||||||
|
|
||||||
|
Why is this so exiting? Although most reasons are explained in a second blog about dotnet core 3.0 which can be found [here](https://blogs.msdn.microsoft.com/dotnet/2018/10/04/update-on-net-core-3-0-and-net-framework-4-8/) I will try to translate this for our users.
|
||||||
|
|
||||||
|
One of the challenges with Greenshot is picking the version of the .NET Framework to run on. The problem with the .NET Framework is that there is only one version on a Windows PC! So if we want to use the newest version, we force a lot of people to update and a lot of companies might not be able to do so with extensive testing their other applications. With dotnet core 3.0 this should be a thing of the past, we can provide our own version of dotnet core and other applications can use theirs side by side!
|
||||||
|
|
||||||
|
Although Greenshot is open source it needed the .NET Framework to run, but this isn't open source! Now with dotnet core which is maintained by the [.NET Foundation](https://dotnetfoundation.org), which is an independent organization which helps many open source .NET [projects](https://dotnetfoundation.org/projects), and one of them is dotnet core! When Greenshot can run on dotnet core, we would have the complete stack (well ~99%) run on Open Source technologies!
|
||||||
|
|
||||||
|
Another interesting fact is that the .NET Framework is used by billions of applications, this makes it __very__ hard for Microsoft to maintain backwards compatibility while adding new features. With dotnet core, which is written almost from scratch, a different approach is possible. By releasing more often and not having years of backwards compatibility, it's finally possible to introduce new features and maybe sometimes make breaking changes. One thing where this shows is that dotnet core has many performance enhancements, which will also be noticeable in Greenshot.
|
||||||
|
|
||||||
|
|
||||||
|
How and when
|
||||||
|
============
|
||||||
|
|
||||||
|
After the first major steps towards a new Greenshot, which I described before, I started the next journey "making Greenshot dotnet core compatible".
|
||||||
|
|
||||||
|
In May 2018 there wasn't much information, so I tried to reach out to Microsoft and managed to get a contact interested in June 2018, and we decided to try to use Greenshot as an early adopter of dotnet core 3.0!
|
||||||
|
|
||||||
|
Since than I had the pleasure to talk directly to many people at Microsoft about what of the .NET Framework Greenshot uses, and what challenges we have with providing Greenshot to our users.
|
||||||
|
|
||||||
|
We discussed many uses cases, some of them are still being worked on. In the mean time I started the first work of making everything, where possible, dotnet core or netstandard compatible. And than in September 2018 it finally happened, the first alpha/preview build of dotnet core 3.0 was available.
|
||||||
|
|
||||||
|
With this available I worked for the last 3 months to get the whole of Greenshot running with dotnet core 3.0, this would not have been easy without having contacts at Microsoft, for which I am really grateful. While it was a lot of work to make the program dotnet core compatible, the UI part of the application mostly just worked!! This last part is quite an amazing thing which the people at Microsoft did!
|
||||||
|
|
||||||
|
While writing this it's the first week of December 2018, the current state is that Greenshot is running on .NET Framework 4.7.1 and dotnet core 3.0 side by side! I would say that the dotnet core implementation has around 95% of the functionality which .NET Framework has, and this is mainly due to missing time as there are currently no show stoppers. Having things work side by side is very convenient, we can stay on the "stable" .NET Framework and release from there, but as soon as dotnet core 3.0 is available for the general audience we can also release for this.
|
||||||
|
|
||||||
|
Currently I expect that dotnet core 3.0 is quicker to release than I finish all the open ends on Greenshot, but we will might be able to start releasing alpha builds at the end of the first quarter of 2019.
|
||||||
|
|
||||||
|
|
||||||
|
*Best wishes from Robin and the rest of the Greenshot team! We hope to be have more news in the near future!*
|
Loading…
Add table
Add a link
Reference in a new issue