Skip to content

Commit

Permalink
restrictions: mention windowing/lumina
Browse files Browse the repository at this point in the history
  • Loading branch information
philpax committed Mar 11, 2024
1 parent ea7de93 commit 04b379f
Showing 1 changed file with 54 additions and 33 deletions.
87 changes: 54 additions & 33 deletions docs/plugin-development/restrictions.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Please make sure that, as much as possible:
- your plugin does not interact with the game servers in a way that is:
- automatic, as in polling data or making requests without direct interaction
from the user
- outside of specification, as in allowing the player to do or submit things to
the server that would not be possible by normal means
- outside of specification, as in allowing the player to do or submit things
to the server that would not be possible by normal means
- your plugin does not augment, alter, or interfere with combat, unless it only
provides information about your own party or alliance members that is
otherwise available, but represents said information differently.
Expand All @@ -35,6 +35,21 @@ after you've already done the work!
Plugins that violate these rules will not be accepted into the Dalamud plugin
repository, and you will not receive support from the Dalamud community.

## Are there any technical decisions I should consider making?

There are many potential technical decisions that you should consider when
developing a plugin. Here are a few examples:

- For regular windows, like settings and utility windows, you should use the
[Dalamud Windowing API](https://dalamud.dev/api/Dalamud.Interface.Windowing/).
It enhances windows with a few nice features, like integration into the native
UI closing-order, pinning, and opacity controls. If it looks like a window, it
should use the windowing API.
- If interacting with game data, we strongly recommend using
[Lumina](https://github.com/NotAdam/Lumina) over XIVAPI. Lumina uses your
local game files, which will always be up-to-date and accurate, and is much
faster than making requests to XIVAPI.

## Why do you discourage certain types of plugins?

> Dalamud and XIVLauncher were made by me with the goal to do cool stuff with a
Expand Down Expand Up @@ -75,39 +90,45 @@ Discord and ask for more details if required.

## I don't like plugin X, can you block it or delete it?

While there are various plugins from custom repositories that do violate our rules,
there is very little we can do as a project to prevent this.
- If we were to introduce blocks or bans, they would be trivial to circumvent. It
would be minutes of effort to do so.
Dalamud is open source software - everything we do is public, there is no secret code
or private tools and everything can be reproduced. This has obvious drawbacks, but
it allows anyone to inspect what code runs on their machine, and this openness has
ultimately led to the ecosystem of amazing plugins and extensions we have today.
- In our official channels, we try to avoid helping anyone that tries to make plugins
that may violate our rules or ethics. This is not always possible, as we are not immune
to deception or politics.
- Most ready-to-use APIs offered by Dalamud itself are read-only and don't allow changing
the actual state of the game. Plugins run on your PC like any other program and are not
"sandboxed", so they have free reign to interact with the game in any way they please
with their own code.
- Limiting what plugins can do is a very difficult technical problem, and might lead to
a lot of very popular plugins not being able to do what they do anymore for the limitations
to be worthwhile.
We don't want to introduce artificial limitations that break existing plugins that have become
essential to the community that uses Dalamud.

If you have a problem with a plugin on the official repository, we recommend reading [our plugin submission guidelines](plugin-submission) to get some background
on how we decide if a plugin should be on the official repo.
If you still think that the plugin should not be there, feel free to reach out to a member of our team via Discord.
While there are various plugins from custom repositories that do violate our
rules, there is very little we can do as a project to prevent this.

- If we were to introduce blocks or bans, they would be trivial to circumvent.
It would be minutes of effort to do so. Dalamud is open source software -
everything we do is public, there is no secret code or private tools and
everything can be reproduced. This has obvious drawbacks, but it allows anyone
to inspect what code runs on their machine, and this openness has ultimately
led to the ecosystem of amazing plugins and extensions we have today.
- In our official channels, we try to avoid helping anyone that tries to make
plugins that may violate our rules or ethics. This is not always possible, as
we are not immune to deception or politics.
- Most ready-to-use APIs offered by Dalamud itself are read-only and don't allow
changing the actual state of the game. Plugins run on your PC like any other
program and are not "sandboxed", so they have free reign to interact with the
game in any way they please with their own code.
- Limiting what plugins can do is a very difficult technical problem, and might
lead to a lot of very popular plugins not being able to do what they do
anymore for the limitations to be worthwhile. We don't want to introduce
artificial limitations that break existing plugins that have become essential
to the community that uses Dalamud.

If you have a problem with a plugin on the official repository, we recommend
reading [our plugin submission guidelines](plugin-submission) to get some
background on how we decide if a plugin should be on the official repo. If you
still think that the plugin should not be there, feel free to reach out to a
member of our team via Discord.

## I like custom repo plugin X, why is it not on the official repo?

There are various reasons for why a plugin might not be on the official repo.

- It doesn't conform to our [rules and guidelines](plugin-submission).
- It only works in conjunction with another custom repo plugin. This doesn't necessarily mean
that the plugin in question, or the plugin it depends on, violate our rules and guidelines.
- The developer decided not to submit it to the official repo. We don't just "take" plugins and put
them there, plugin developers need to go out of their way to submit their work to our repository.
Some may prefer to run their own infrastructure, for various reasons - a main one being that updates
on the official repo may take a while to be processed, as they are code-reviewed by the plugin approval
team.
- It only works in conjunction with another custom repo plugin. This doesn't
necessarily mean that the plugin in question, or the plugin it depends on,
violate our rules and guidelines.
- The developer decided not to submit it to the official repo. We don't just
"take" plugins and put them there, plugin developers need to go out of their
way to submit their work to our repository. Some may prefer to run their own
infrastructure, for various reasons - a main one being that updates on the
official repo may take a while to be processed, as they are code-reviewed by
the plugin approval team.

0 comments on commit 04b379f

Please sign in to comment.