Comments (3)
Alright, upon further consideration here. Seeing that API 10 is just around the corner, I think this would be a good thing to bring in.
Let's define this such that we will allow loading a custom Lumina if a manifest field is set to a truthy value. We can then create documentation around this to indicate that multiple/many APIs provided by Dalamud will no longer function properly. We can also likely add a warning to our local plugin system indicating that this is enabled.
I think this satisfies any concerns about API safety while still allowing developers control over their dependencies. So long as the behavior is known and explicitly opt-in, I can't see many problems arising from this.
For the manifest field, I think it'd make sense to define a new K/V field:
...
FeatureGates:
AllowCustomCoreDependencies: true
SomeOtherFeatureGate: true
AnotherThing: true
...
We can expand on this to add extra features later on (e.g. the ability to opt in to [Experimental]
attributes on Plogon builds).
If anyone wants to PR this to the API 10 branch, let me know and I'll assign you to this Issue.
from dalamud.
As a personal note, I'm still not particularly in support of doing this as this feels like a massive footgun just waiting to happen.
While it is strange for us to pin Lumina (and only Lumina) like this, raw Lumina types are also part of our exposed API surface in many places. Any plugin bringing their own version of Lumina will have headaches with IDataManager
and various properties scattered all over our public API surface. Plugins shipping their own Lumina will not be able to use any of these API surfaces, and it's not particularly clear at a glance what would or wouldn't be broken especially to a novice developer.
Given that we have had plugins accidentally forget <Private>false</Private>
in their csproj files before or were otherwise shipping Lumina (sometimes intentionally?), it does seem like problems related to this are actually possible.
If we decide that we do want to go forward with this, I'd like to request that this be heavily documented somewhere easily accessible to developers so that everyone is well aware of this choice and how to resolve this problem if one inadvertently ships their own Lumina. I'm not sure I'd go as far as adding a manifest flag for AllowCustomLumina
, but I'm not strictly opposed to that either...
from dalamud.
Closing until such time as this becomes necessary again and someone wants to work on it.
from dalamud.
Related Issues (20)
- GetMapCoordinates() reports incorrect coordinates within housing ward subdivisions
- All Plugins menu shows incorrect source for third-party plugins duplicated over multiple sources
- GameObject wrapper classes fail to serialize in IPC HOT 1
- Holding Left Scroll Wheel in Plugin Installer Causes Content to Shake
- Recently requires launching twice to run HOT 9
- Change Log window is not drawn correctly
- Can't type in Dalamud anymore
- VirtualKey missing Reserved keys HOT 1
- Multi-monitor mode and Windows UI Scaling issues HOT 1
- `IPluginInterface.GetPluginConfig` causes `FileReadException` when the last saved config type was not defined by the calling assembly
- Dalamud not loading on startup HOT 10
- Object table add/remove events
- Plugin matching in collections broken across devices HOT 1
- FFXIV crashes randomly during Duties.
- IReadOnlyDtrBarEntry: fix nullable inconsistency
- Plugin Installer Showing Incorrect Changelogs for Certain Available Updates
- Access Violation: BattleChara.get_StatusList()
- Reshade 6.2.0 Addon Support - Compatibility issue
- Crashes during Duties HOT 1
- DirectChat + Special Keys trigger double taps in ImGui.Input
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dalamud.