Playnite 11 development update
Added 2022-10-05 17:03:27 +0000 UTCHello everyone!
First of all, what I'm currently working on:
The first thing is next Playnite 10 update, which should fix some left over issues introduced with P10 release and add minor enhancements. Next I finally decided to work on long delayed rework of IGDB integration, which should solve various search and game matching issues we currently have. After that, I'll start work on Playnite 11.
Playnite 11 plans:
TL;DR version:
Playnite 11 will be a release that will move Playnite from an old version of application framework we use currently (.NET Framework) to a new, more modern and better version. This will require quite a lot of work and changes, therefore:
- it will be a breaking release, all addons will need to updated to work in P11
- there will be no feature voting for this release due to huge amount of work needed for this release
- Windows 7 and 8 will no longer be supported, as well as all 32 bit versions of Windows
Long version:
Playnite is developed using .NET programming framework, which was developed by Microsoft and was always close source, Windows only and made with emphasis on backwards compatibility rather than feature evolution. However, couple years back Microsoft started open sourcing the entire ecosystem and creating modern .NET framework which is open source, multi platform and adopts more agile type of development. The original closed source version of .NET (version that Playnite is using) is now basically in a maintenance mode and won't receive any major feature updates and improvements, therefore it's important for Playnite to move to the new modern .NET implementation. This migration is not going to be simple for couple reasons:
- modern .NET framework contain some breaking changes compared to the old framework
- all 3rd party dependencies we use will need to be updated or replaced
- using modern .NET also means access to newer version of C# programming language and I will want to make use of it, meaning partial refactoring of the code base
- complete re-testing of the entire code base
I'm also planning to finally address huge technical debt that we have in terms of automated test coverage. Only very small percentage of Playnite code is currently covered by automated tests and although I tried to fix that in past releases somewhat, I never got it to the state it needs to be in.
Since this migration updates underlining technology Playnite is built on, it also means breaking changes to the SDK, which means that existing addons will need to be updated to support new versions of Playnite. Since breaking change is inevitable, I plan to do other breaking changes to the SDK, to make it more future proof and address some usability issues. Themes will need some update as well, but to lesser extend compared to extensions.
Again, because of general need to break the SDK, I will be making other changes to Playnite as well, which would otherwise lead to SDK breaking anyways, for example:
- game merging support and proper duplicate handling
- separation of data related to local system (like installation status, paths etc.) from other general library data
- emulation support partially separated from core Playnite and updateable independently
- automatic metadata renaming and update rules
- filtering rework
- features originally planned for Playnite 10 which turned out to require breaking SDK changes and therefore had to be removed from P10 release
All of that together will mean a lot of work, so I don't plan to do feature priority voting for Playnite 11 and adding additional features on top what is currently planned. The next vote will be for Playnite 12, which will be more of a standard non breaking release.
Lastly, this release will no longer support Windows 7 and 8, and will not support any 32bit Windows versions. While modern .NET technically supports these platforms, for now, it no longer makes sense from Playnite's point of view, as a gaming focused application, to support them. Especially Windows 7 has been causing me some headaches in the past when it comes to making sure Playnite works on it. As far as 32-bit support, virtually nobody uses Playnite on 32bit versions of Windows and not having to support and test both 32 and 64 bit versions is only a plus.
Note about multi platform support on modern .NET:
Despite the fact that modern .NET is multi platform and runs on Linux, macOS and other platforms, it doesn't mean that Playnite will be able to run on those platforms as well after the migration. Crucially, the UI library from .NET that we currently use, called WPF, is still Windows only (even in modern .NET versions) and will never be ported to other systems. WPF is now also basically in a maintenance mode, so the other big migration I plan to do is to move Playnite to a different UI library, called Avalonia. This also doesn't mean that Playnite will be automatically available for Linux, but it means that we will no longer have any big Windows only dependencies and native Linux version will be a real possibility in future.
To summarize, this is the current long term plan for future Playnite releases:
- Playnite 11: move to modern .NET, breaking changes to the addon SDK
- Playnite 12: standard release, no breaking changes to addons
- Playnite 13: move to Avalonia UI framework, breaking changes to the addon SDK
- Playnite 14: standard release, no breaking changes to addons
- Playnite 15: who knows..., hopefully no breaking releases for a while
As always thank you very much for continued support!
Josef
Comments
Good stuff! Thanks for all you do. :)
‘Leigh
2022-10-07 18:45:03 +0000 UTCSounds awesome!
Maxwell Patterson
2022-10-06 11:19:12 +0000 UTC