Was sind APIs?

  • Könnte mir das jemand bitte (anschaulich) erklären?
    Viele der Programmierer die ihre Erweiterungen nach Webextensionen umprogrammieren, schreiben von fehlenden APIs (siehe Google Datenblatt).
    Sind damit Schnittstellen gemeint, die Firefox erst freigeben muss, damit die Programmierer in ihn "hineinprogrammieren" können?

    Klingt nicht gerade professionell formuliert, aber ich bin ja auch kein Profi ... :-??

    Firefox 106.0 Standardbrowser & Portabler.
    Windows 10/64 Pro 22H2, 19045.2193, Malwarebytes Premium, Adwcleaner, Thunderbird, Windows Firewall. Keine Tuningsoftware.

  • API ist Englisch für Application Programming Interface, also auf Deutsch Anwendungsprogrammierschnittstelle. Erweiterungen können nicht einfach alles an Firefox ändern, was sie gerne ändern würden. Damit Erweiterungen Firefox verändern können, muss zunächst Mozilla passende Schnittstellen entwickeln, welche von den Erweiterungen genutzt werden können, um Firefox zu verändern.


  • Sind damit Schnittstellen gemeint, die Firefox erst freigeben muss, damit die Programmierer in ihn "hineinprogrammieren" können?

    Als Nicht-Profi hast du das doch gut erkannt :klasse::)

  • Danke euch dreien!
    Ab sofort ernenne ich mich zum Programmierspezialisten! :-O


    Damit Erweiterungen Firefox verändern können, muss zunächst Mozilla passende Schnittstellen entwickeln, welche von den Erweiterungen genutzt werden können, um Firefox zu verändern.


    Da müsste sich Mozilla aber langsam beeilen ...

    Firefox 106.0 Standardbrowser & Portabler.
    Windows 10/64 Pro 22H2, 19045.2193, Malwarebytes Premium, Adwcleaner, Thunderbird, Windows Firewall. Keine Tuningsoftware.

  • sie haben doch schon einiges frei gegeben, wenn ich mich nicht irre und ich glaube manche Erweiterungen brauchen auch gar keine Freigabe von irgendwelchen APIs.
    Aber dazu kann Sören bestimmt gesichertere Aussagen machen.

    Hilfe auch im deutschsprachigen Matrix-Chat möglich oder im IRC-Chat
    Meine Anleitungstexte dürfen gerne "geklaut" und weiter verwendet/kopiert werden ;)

  • Natürlich sind schon viele API's geschrieben worden und die allermeisten Erweiterungen können damit auch schon umgesetzt werden. Was in vielen Fällen fehlt sind API's um die Oberfläche oder die Art wie Firefox arbeitet zu modifizieren. Dies liegt aber nicht daran dass Mozilla diese nicht anbieten könnte; es ist eine (gute) politische Entscheidung dies zu unterlassen.
    Es gibt sicherlich aber noch in einigen Fällen Aufholbedarf oder ein Wunsch zur Innovation; sprich die Quantität und Qualität der API's wird sicher noch wachsen.

  • Mir gefällt die Wahl des Begriffes "Freigabe" nicht, denn freigegeben kann nur werden, was bereits existiert. Aber APIs existieren nicht automatisch auf magische Weise. Auch APIs müssen erst programmiert werden, was einen Ressourcen-Aufwand bedeutet. Mozilla beeilt sich durchaus, aber die Entwickler können sich auch nicht teilen und für Firefox 57 haben es daher auch nicht alle APIs geschafft, die Mozilla grundsätzlich schon gerne anbieten würde. Aber die Entwicklung hört ja auch nicht mit Firefox 57 auf, die Entwicklung wird immer weiter gehen und Mozilla wird solange neue APIs zu Firefox hinzufügen, bis es keine guten Ideen mehr gibt.

    Es ist dabei auch wichtig zu verstehen, dass es beim Hinzufügen von APIs nicht nur um die Entwicklung geht, ansonsten würde einiges schneller gehen. An WebExtension-APIs sind Erwartungen verknüpft. Dass wie in der Vergangenheit bei jedem Firefox-Update die Sorge bestehen muss, dass irgendwelche Erweiterungen nicht mehr existieren, ist keine Option in der WebExtension-Welt. Wenn beispielsweise eine Firefox-Einstellung via WebExtensions verändert werden soll, ist immer eine der ersten und grundlegenden Fragen: was ist überhaupt die Zukunft dieser Firefox-Einstellung? Wird die Einstellung in den nächsten Jahren noch exisitieren? Und auch die API selbst benötigt eine Design-Phase, in welcher ganz genau überlegt wird, wie die API aussehen kann, damit diese sicher vor Veränderungen ist, welche Add-ons in einem zukünftigen Update inkompatibel machen. Beispielsweise muss man sich überlegen, was für Features in Zukunft zu dieser API hinzugefügt werden könnten und dann muss man die API so gestalten, dass das möglich ist, ohne dass das, was jetzt implementiert wird, wahrscheinlich eine Änderung in der Zukunft braucht. Diese Planung dauert häufig länger als die Entwicklung selbst.