Arbeiten mit Wine – Teil 1 – Das Wine-Ökosystem (Deutsche Übersetzung)

Dieser Text wurde von CodeWeavers  unter einer freien Lizenz im offiziellen Blog veröffentlicht wobei ich mir die Freiheit genommen habe, diesen Text zu übersetzen und den Interessenten an Wine, sei es Linux oder macOS zur Verfügung zu stellen.

 Über diese Hilfen

Dies ist eine Serie von  Hilfen, die darauf abzielen, Softwareentwickler in das Wine-Ökosystem einzuführen. Es wird was Wine ist, wie man Wine benutzt, wie man Wine debugt, wie man Wine repariert und was man mit der Korrektur macht sobald man es geschafft hat.

Diese Handbücher werden im Laufe des Januars veröffentlicht werden.

  • Teil 1 beschreibt was Wine ist und bietet eine kurze Beschreibung verschiedener bekannter Forks von Wine.
  • Teil 2 beschreibt Wine’s Buildprozess.
  • Teil 3 beschreibt wie man Wine als Entwickler nutzt.
  • Teil 4 beschreibt wie man allgemein Wine debugt.
  • Teil 5 beschreibt Wines Quellbaum-Aufbaum und wie man die Quellen bearbeitet.
  • Teil 6 beschreibt wie man seine Arbeit “upstream” senden kann.

Was ist Wine?

Wine ist eine Open Source Reimplementierung von Microsofts Windows Betriebssystem auf Basis von verschiedenen Unix Betriebssystemen. Es zielt vorrangig auf Linux und macOS ab, kann aber auf anderen Systemen wie FreeBDS, NetBSD und Solaris laufen. Dies bedeutet für Benutzer, dass sie Software, die für Windows geschrieben wurde, auf anderen Systemen laufen lassen können. Wine beinhaltet keinen Microsoft-eigenen Code womit kein Bedarf an einer Windowslizenz zum Betrieb von Wine nötig ist. Stattdessen haben die Wine-Entwickler Komponenten des Windows-Betriebssystems neu geschrieben. So denkt die Software, dass sie auf Windows läuft obwohl sie tatsächlich auf Linux beispielsweise betrieben wird.

Als ein einfaches Beispiel betrachten wir die Windows CreateFile API. Auf Windows könnte der Aufruf einer Anwendung wie folgt aussehen:

    CreateFileA(
        "C:\some_file.txt",   //lpFileName
        GENERIC_WRITE,         //dwDesiredAccess
        0,                     //dwShareMode
        NULL,                  //lpSecurityAttributes
        CREATE_ALWAYS,         //dwCreationDisposition
        FILE_ATTRIBUTE_NORMAL, //dwFlagsAndAttributes
        NULL                   //hTemplateFile
    );

Wine übernimmt diesenCreateFileA Aufruf und übersetzt diesen in einen Unix open Aufruf:

    open(
        "/home/aeikum/.wine/drive_c/some_file.txt", //path
        O_WRONLY | O_CREAT,                         //oflag
        0644                                        //creation mode
    );

Das Filehandle wird der Anwendung zurück gemeldet, welche dann in die Dateie mit einer ähnlichen Implemtierung schreiben kann. Beispielsweise wäre dies WriteFile auf Unix’s write. Natürlich ist die tatsächliche Implementierung von CreateFileA in Wine weit, weit komplizierter als dies (siehe Konvertierung von Pfaden beispielsweise) aber dies vermittelt einen Eindruck, was Wine macht.

Wine Forks

Da Wine ein Open Source Projekt ist, steht es jedem offen, Kopien zu erstellen und diese zu modifizieren um den Bedürfnissen der jeweiligen Benutzer zu entsprechen. Es gibt Hunderte von Wine-Forks aber einige davon wurden sehr bekannt und werden hier beschrieben.

“Upstream” Wine

Webseite: https://www.winehq.org/
Dies ist die reine Version von Wine von der alle anderen Forks abgeleitet werden. Wenn sich jemand auf “Upstream Wine” beruft, spricht er von diesem Projekt. Wine fokussiert primär auf Richtigkeit. Wine beinhaltet extensive Unittests, welche das Verhalten von Windows zeigen und verlangt von den meisten Patches, dass sie Tests liefern. Alle Patches müssen die bestehenden Tests erfolgreich durchlaufen damit sie akzeptiert werden. Es gibt ebenso eine starke Fokussierung auf Code-Qualität. Wine ist ein sehr großes Projekt (eigentlich ein ganzes Betriebssystem inkl. GUI) wobei Technische Schulden stark vermieden werden damit das Projekt wartbar im Laufe der Zeit bleibt.

Wine Staging

Webseite: https://wiki.winehq.org/Wine-Staging
Dennoch bedeutet Wines strenge Akzeptanz von Patches, dass viele ungetestete, falsche oder gefährliche Patches in privaten Forks oder im Bugtracken sich sammeln würden. Diese könnten aber für heutige Nutzer durch aus nützlich sein. Das Wine Staging Projekt (auch “wine-staging” genannt) ist ein Versuch, diese nützlichen Patches zu sammeln so dass Nutzer leicht Vorteile darauf ziehen können. Die Wine Staging Community arbeitet daran, diese Patches in Wine zu bringen damit der Nutzen für alle Winenutzer und Forks zu Gute komme wobei gleichzeitig Wine Stagings eigene Wartung sinkt. Es kann auch als “Bewährungsfeld” für Patches dienen die eine schwere Bewährung haben bevor sie Upstream akzeptiert werden.

CrossOver

Webseite: https://www.codeweavers.com/
CrossOver ist ein kommerzieller Fork von Wine, welcher von der Firma CodeWeavers verkauft wird. Es beinhaltet viele anwendungs-spezifische Hacks, die nicht zum Einbinden in Upstream geeignet sind.CodeWeavers unterhält ebenso eine Anwendungs-Kompatibilitäts-Datenbank welche einige Softwarekomponenten vorab installiert und die Wineumgebung entsprechend modifiziert. Dennoch zieht es CodeWeavers stark vor, Features richtig zu implementieren und sendet die Arbeit an “Upstream Wine”. CodeWeavers Mitarbeiter leisten einen bedeutenden Beitrag bei der Arbeit an Wine.

Proton

Webseite: https://github.com/ValveSoftware/Proton/

Proton ist ein Fork, welcher von der Firma Valve erstellt wurde und in ihre Steam Software, eine bedeutende Videospiel und Programm-Plattform, integriert ist. Proton fokussiert sich darauf, ein angenehmes Erlebnis für Steamnutzer beim Betrieb von Windowstiteln auf Linux zu bieten. Wie auch bei CrossOver, werden die meisten der Beiträge auch an “Upstream Wine” geschickt.

Andere Forks

Es gibt sehr, sehr viele andere Forks von Wine. Manche werden mit kommerzieller Software paketiert und als macOS und Linux-Software verkauft. Manche sind einmalige Forks, die von Benutzern für eine einzelne Anwendung erstellt  wurden.

Entwickeln für Wine

Wine ist nicht perfekt und es ist wahrscheinlich, dass man auf einen Mangel oder Bug im Tagesbetrieb von Wine stößt. Vielleicht sind Sie interessiert daran, Wine zu verbessern damit es ihre Anwendung oder Spiel in Betrieb nimmt oder vielleicht will ihr Arbeitgeber Wine verwenden und Sie bezahlen, es zu beheben. Dieses Handbuch wird Sie darin unterstützen wie man Wine kompilieren, Debuggen und beheben kann und wie man diese Fixes upstream sendet.

Creative Commons License
The text of this blog post is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

CrossOver-Übersetzung wieder auf dem neuesten Stand

Gestern erreichte mich eine Email des CrossOver-Lokalisierungsprojektleiters, dass einige Änderungen in der Lokalisierung von CrossOver wieder anstehen. Insbesondere freute es mich auch, zu hören, dass nun auch Tschechisch unterstützt wird. Es ist schön, dass CrossOver nach und nach immer mehr Sprachen unterstützt.

Ich habe die Aktualisierungen für Deutsch eben durchgeführt und die Übersetzungen sind nun auf dem neuesten Stand und vollständig.

Projekt: Corel Installationsroutinen unter wine

Ich beschäftige mich schon seit einigen Jahren damit, die Corelprodukte CorelDraw als auch Paint Shop Pro unter Linux zum Laufen zu bekommen. Bei einigen älteren Versionen funktioniert das auch.

Mittlerweile bin ich jedoch auf die Problematik gestoßen, dass Corel eine neue Installationsroutine für ihre Software verwendet, die den Download des Hauptprogrammes und Installation erledigen soll.

Leider funktionieren diese Installationsroutinen nicht sonderlich. Ich würde allerdings sehr gerne erfahren, wie es sich mit den Programmen an sich verhält.

Anbei sind zwei Bugs, die ich im Laufe der Zeit gefunden und gemeldet habe:

Bei Codeweavers habe ich bereits angefragt wie teuer das Beheben des Bugs wäre. Sie teilten mir folgendes mit:

Thank you for your support of CrossOver. 
We provide customized development at a 
rate of $150/hour, which we sell in blocks of 10 hours.

So, without knowing the exact issue with Corel at 
this moment, it is hard to give an accurate estimate. 
We would have a better idea after the initial 
10 hours, though.

If this is something you are interested in pursuing, yes, 
you would have access to the developer that is assigned
to this project.  Let me know if you have any further 
questions and how you would like to proceed.


Also würde der Spaß wohl mindestens 1500 US-Dollar kosten. Ich selbst habe das Geld leider nicht, würde mich aber einem eventuellen Crowdfunding anschließen.

Möchtet ihr weitere wine-Reviews? Sofern es mir möglich ist, teste ich gerne gegen eine kleine Spende über PayPal für euch mit der neuesten Entwicklerversion. Bitte schreibt eure Wünsche in die Kommentare und gebt nach Möglichkeit auch Download-Links zu eventuellen Demoversionen zum Test. Vertrauliche Informationen können an info@linuxandlanguages.com gesendet werden.

In der AppDB für Lieblingsanwendungen abstimmen

Eine weitgehend unbekannte Tatsache bei der Nutzung von wine und CrossOver ist, dass man angeben kann, auf welche Applikationen und Spiele sich die wine-Entwickler fokussieren soll.

Und das geht im Falle von wine in der AppDB wie folgt:

  • Ihr benötigt ein Konto (Account) für die AppDB und loggt euch mit Benutzername und Passwort ein.
  • Über die Suchfunktion sucht ihr die von euch gewünschte Anwendung heraus und navigiert zu der entsprechenden Seite.
  •  Im Falle von StarCraft II sieht die Projektseite wie oben abgebildet aus. 
  • Auf der rechten Seite unter “Application Details” findet ihr den Button “Vote” worüber ihr bis zu drei Stimmen auf diese Anwendung oder das entsprechende Spiel kumulieren könnt. 
  • Es erfolgt keine Aufforderung, nach einer gewissen Zeit, die Stimmen neu zu verteilen. Dies ist insbesondere schade, da Spiele wie Counterstrike Source mittlerweile auch für Linux und Macintosh zu haben sind und manche Teilnehmer ihre Wahl und Verteilung ihrer Stimmen vielleicht doch nochmals überdenken und neu verteilen.
  • Derzeit ist “Final Fantasy XI” das mit Abstand meistgewählte Spiel. Persönlich kenne ich aber niemanden, der diesen Titel spielt oder gespielt hat.

Für welche Spiele stimmt ihr ab oder habt ihr abgestimmt? Welche Programme unter wine wären euch wichtig? Bitte lasst es mich in den Kommentaren wissen…

Steuererklärung mit Aldi Steuer 2017 unter wine 3.0-rc2

Hallo zusammen,

bislang mache ich meine Steuererklärung über das ELSTER-Onlineportal, welches im Gegensatz zu einer Steuersoftware, jedoch keinen geführten Dialog hat.

Sowohl Steuerjahr und auch gleichzeitig das Kalenderjahr nähern sich nun dem Ende und die Discounter machen sich daran, vergünstigte Steuersoftware anzubieten.

Steuern ist für viele zwar ein dröges Thema und der alljährliche Akt des Formularausfüllens kann durchaus nervig werden. Hinzu kam in den letzten Jahren auch noch das Testen unter wine und im ubuntuusers.de Forum werden wahrscheinlich auch weitere Fragen zum Thema Steuern unter Linux aufschlagen.

Vorgestern wurde ich auf ein Posting im ubuntuusers.de Forum aufmerksam, in dem Probleme bei der Eingabe einer Seriennummer der Aldi Software Steuer 2017 gemeldet wurden. Ich erklärte mich bereit, diesen Sachverhalt angesichts der Tatsache, dass wine vor dem 3.0 Release steht, zu prüfen.

Meine Hochschule, die Hochschule Harz, legt großen Wert auf Nachhaltigkeit und ich überlegte daher die Software als Download zu erwerben um auf die Verpackung zu verzichten.

Jedoch ist Aldi halt nicht softwareload.de und so musste ich mich letztendlich doch aufs Fahrrad schwingen und zu Aldi Brome (Aldi Nord) radeln. Dort fand ich nach einer kurzen Suche im Mittelgang das begehrte Objekt und gab die 4,99 Euro dann auch aus.

Insgesamt gelang es mir die Software “Steuer 2017” dann unter wine 3.0-rc2 unter openSUSE “Tumbleweed” zu installieren und ich verwendete dafür ein frisches Prefix. Mit der Eingabe seiner Seriennummer (findet man auf der Rückseite des Hefts in der DVD-Box) auf der Seite www.steuer-support.de ein Archiv für die Installation auswählen. Optische Laufwerke werden durch die wachsende Kapazität von USB-Medien ja immer seltener.

Sowohl über CD-ROM als auch im Downloadpaket befinden sich die nötigen Microsoft-Bibliotheken/Runtimes, die für die Ausführung des Programms nötig sind.  Den Installationsassistent konnte ich in einem frischen Prefix in beiden Fällen nach Eingabe der Seriennummer einwandfrei durchklicken.

Die Webseite steuer-support.de benötigt man zwingend um Updates in Form von .exe-Dateien zu
beziehen, die man dann über die bestehende Installation von “Steuer
2017” installiert.

Wichtige Anmerkung zu den Updates: Bitte achtet darauf, dass ihr euch dazu im entsprechenden wine-Prefix befindet, sprich die Umgebungsvariable WINEPREFIX muss halt auch auf den entsprechenden Pfad des Prefix zeigen.

Worauf sie jeweils zeigt könnt ihr mit “echo $WINEPREFIX” prüfen.

Anbei auch ein Auszug meinem history-file unter openSUSE “Tumbleweed” mit wine3.0-rc3. Es wird davon ausgegangen, dass ihr die entsprechenden Installationsdateien im Ordner Downloads eures Homedirectory habt.

mkdir -p /home/mwagner/.Wineapps/Steuer2017
WINEPREFIX=/home/mwagner/.Wineapps/Steuer2017/
wine /run/media/mwagner/Steuer2017/start.exe echo $WINEPREFIXcd Downloads/
wine Steuer2017.exe
wine steuersoftware2018update.exe

Insgesamt sieht “Steuer 2017” von Aldi ganz vielversprechend aus und ich sehe der kommenden elektronischen Steuererklärung ganz positiv entgegen, dass ich jetzt auch mal einen elektronisch geführten Dialog führen kann statt “nur” das Formular auszufüllen.

Insgesamt überlege ich auch die Anwendung in der AppDB von wine einzureichen und den Maintainer für diese Version zu machen.

CrossOver 17 erschienen

Hallo zusammen,

da ich selbst an der Vervollständigung des deutschen Sprachpakets von CrossOver 17 mitgewirkt habe, freue ich mich mitteilen zu können, dass nun eine neue Version von CrossOver ab heute zu haben ist.

Highlights aus dem Newsletter:

  • CrossOver 17 supports Microsoft Office 2016: the latest and greatest Microsoft Office suite. You can install Office 2016 Home and Office 2016 Business from your Office 365 account and use the full featured versions of these products.
  • CrossOver 17 also supports Quicken 2017 for your home financial needs.
  • On Linux, CrossOver 17 will run the popular game League of Legends.
  • You will benefit from a full upgrade of our Wine compatibility layer, giving CrossOver 17 thousands of improvements in our core technology over our previous version.
  • CrossOver 17 also brings functional improvements to Microsoft Office 2010 and Microsoft Office 2013, and many of your other favorite Windows applications.

Als Einführungsangebot bietet Codeweavers mit dem Couponcode CX1745 satte 45% Rabatt auf das 1-Jahr-Abo.

CrossOver 17 in der Betaphase – Omniscient Rang geknackt!

Als Teilnehmer der “closed betas” von CrossOver nehme ich aktuell an der Betaphase für CrossOver 17 teil, wobei das fertige Produkt in den kommenden Wochen erscheinen wird.

Weiterhin wurde das deutsche Sprachpaket der Software vervollständigt und CrossOver 17 wird somit komplett auf Deutsch verfügbar sein.

Codeweavers, die Firma hinter CrossOver bietet bei den Tests ein sogenanntes Gamificationsystem an, wobei man Erfahrungspunkte für abgegebene Reports, Kommentare, Screenshots etc. sammeln kann. Insbesondere bei den Betareports kann man ganz gut Experiencepoints abräumen und so gelang es mir, den Rang des:

Omniscient Mystical Exalted Nigh-invincible Supreme Raging Atomic Dragon Turbo Chief Senior Advocate

zu erreichen. Dieser stellt in der regulären Entwicklung den höchsten Rang dar. Später werden dann noch Rank 2, Rank 3 etc. dem Titel hinzugefügt.
Damit bekomme ich nun das “Work Shirt” von Codeweavers und einen Aufkleber, den ich auf mein Sammelposter in meinem Zimmer kleben werde.
Weiterhin freue ich mich mitteilen zu können, dass ich meinen 2015 gehaltenen Vortrag über wine zur ubucon in Wolfsburg wieder ins Rennen geschickt habe und mich derzeit für einen Vortrag bewerbe. 
Großer Dank geht hier insbesondere an Michael von der FSFE Wolfsburg/WOBLUG dafür, dass er diese Veranstaltung nach Wolfsburg geholt hat.

Release- und Developmentbranches in Wine und CrossOver

Kürzlich erschien im offiziellen CodeWeavers-Blog eine Erläuterung, wie wine und CrossOver zusammen hängen. Mit der Erlaubnis von Josh DuBois habe ich diesen Artikel übersetzt:

Hier bei CodeWeavers fragen die Kunden oft wie CrossOver hergestellt wird. Wir bekommen Anfragen, die von ziemlich einfach bis extrem technisch reichen. Beteiligte und neugierige Nutzer sind unter den Freuden, dass wir unser Produkt auf einem Open-Source Projekt basieren.

Jetzt wo CrossOver 16.2 erscheint, denke ich, dass es eine gute Zeit ist, darüber zu sprechen wie wir Entwicklungs- und Releasezweige für CrossOver verwalten. Im Spektrum dieser Dinge, die man über Wine sagen könnte, ist dieses Thema nur bedingt technisch. Es ist eine häufige Frage von unseren Benutzern, sowohl in unseren Webforen und in unserem Livesupport-Kanal.

Grundlegend: CrossOvers Fähigkeit, Windowsanwendungen laufen zu lassen kommt aus Wine. Wine ist ein Open-Source Softwareprojekt mit einer über zwanzigjähigen Geschichte. Der interessante Teil, unsere internen Sourcecode Zweige zu verwalten ist, wie diese mit Wine integriert werden. Um unseren Releasezyklus zu verstehen, muss man Wines Entwicklungszyklus verstehen.

Der Entwicklungszyklus von wine

Wines Haupt git-repository befindet sich unter

 git://source.winehq.org/git/wine.git
 
  

Mitwirkende schicken täglich Patches an wine und jeden Tage committet Alexandre Juillard, unser furchloser Leiter, akzeptierte Patchen in Wine’s Hauptrepository. Hier bei CodeWeavers ist unser grundlegender Arbeitsprozess, dass unsere eigenen Wineentwickler ihre Arbeit an wine über den regulären Einreichungsprozess einbringen (und hoffen, dass es akzeptiert wird!). Standardmäßig geht also der Code, den wir scheiben zuerst in das Open Source Repository bevor es in unsere eigenen git-Zweige kommt.

Wine erfährt alle zwei Woche eine nummerierte Entwicklungsveröffentlichung, zu wechselnden Freitagen. Diese Veröffentlichungen erhalten ein Tag und werden gebaut und weit in der Open Source Gemeinschaft verwendet. Es wird keine Magie bei den Entwicklungsversionen angewendet – keine speziellen Tests werden durchgeführt und keine Meilensteine für diese Entwicklung erreicht. Es sind einfach und praktisch nummerierte Schnappschüsse der Wine-Entwicklung innerhalb regulärer Zeitintervalle.

Bei CodeWeavers nennen wir unseren Haupt-git-Zweig den ‘crossover’ Zweig. Sofort nach jeder Wineentwicklungsveröffentlichung verbindet Alexandre Wine’s Hauptzweig in unseren internen CrossOver Zweig. So bekommen wir neue Arbeit von Upstream in die Codebasis, die wir nutzen um CrossOver zu bauen. Dies bedeutet, dass für unseren “Standardprozess” ist der zweiwöchige Winemerge das erste Mal einem bestimmten Teil von Wineentwicklungsarbeit – selbst Arbeit von unseren eigenen Entwicklern – unser internes Quellenrepository betritt. [1]

Entwicklungsveröffentlichungen sind spannend, da sie all die neuesten Änderungen beinhalten. Allerdings bedeutet diese Spannung, dass sie instabil sein können. Um dies zu verwalten, ist es nicht überraschend, dass wir einen Releasezweig verwenden.

Release-Zweige

Wir veröffentlichen eine Major-Version von CrossOver einmal im Jahr, irgendwann im Herbst. Etwa zwei Monate vor unserem Veröffentlichungsdatum machen wir einen neuen Zweig basierend auf unserem “crossover” Hauptzweig. Dieser Zweig widmet sich unserer kommenden Veröffentlichung. Unsere Releasezweige starten ihr Leben somit wie es jede Entwicklungsveröffentlichung von Wine tun würde – einfach ein Schnappschuss der Wineentwicklung, die zu einem bestimmten Zeitpunkt gemacht wird.

Wir machen unsere Releasezweige stabiler indem wir durchgehend testen. Wir testen, testen und testen, beheben Bugs und testen noch mehr. Wir testen einige Wochen bei uns und starten eine Beta wobei über zweihundert engagierte Betatester auf CrossOver herumhammern und Probleme berichten. Am Ende unserer Betyzyklen wurde der Code zuverlässiger und vorhersehbar.

Normalerweise machen wir keine weiteren Merges von Wine entlang eines Major-Releases von CrossOver. Somit kann man sagen, üblicherweise hat eine bestimmte Version von CrossOver immer die Version von Wine, die sie hatte, als wir zuerst den Releasezweig von Wine für diese Version erstellten.

Natürlich beheben wir Bugs während der Lebenszeit einer Version aber wir halten diese Behebungen gezielt so dass wir bezüglich ihrer Sicherheit sicher sein können.

Einige Veröffentlichungen sind außergewöhnlich und wir manchen gelegentlich eine vollständige Einbeziehung zwischen Major-Releases. Dies passiert selten. CrossOver 16.2 ist eine dieser Ereignisse! Dies macht es etwas zu einem besonderen Fall. Wenn wir wirklich einen wine-Merge machen, tendieren wir dazu, eine weitere Runde von Betatests zu machen (obwohl diese etwas kürzer als die erste sind).

Hacks

Wine hat sehr hohe Standards bezüglich welches Code in das Masterrepository kommt. Als kommerzielles Produkt weichen CrossOvers Bedürfnisse oft aus pragmatischen Gründen ab. Normalerweise bedeutet dies, dass ein Entwickler ein Problem sieht und kann sagen, dass die elegante Lösung einige Monate Arbeit braucht oder höchst destabilisierend wirkt. Dann bitte ich um eine Lösung, die in der Praxis funktioniert, selbst wenn sie unsauber ist oder das Problem nur in begrenzter Weise löst. Wine wird im Allgemeinen solche Lösungen nicht akzeptieren aber diese verbessern die Lage für unsere Kunde. Wir halten diese Lösungen in unserem eigenen Sourcerepository und nennen diese “Hacks”.

Hacks sind ein Problem, da sie dafür sorgen, dass unsere Quellen von Wines Masterrepository abweichen. Dies macht das Leben für Alexander schwierig denn es ist schwierig Wines Master-Sourcecode in unseren Zweig zu integrieren wenn es Unterschiede dieser Art gibt. Die Unterschiede, die durch unsere “Hacks” entstehen verursachen Konflikte während der Zusammenführung und Alexandre muss jederzeit um diese herumarbeiten wenn eine neue Zusammenführung gemacht wird. Dies ist anstrendend, fehleranfällig und unangenehm.
Aus diesen Gründen war es so, dass wir es vorzogen unsere Hacks in Releasezweig zu bringen. Wir fingen bei CrossOver 16 damit an von unserem Haupt “crossover” Zweig zu branchen und dann zogen wir sofort alle Hacks aus CrossOver 15 herein. Auf diese Art versuchten wir, Hacks in unserem Master ‘crossover’ Zweig zu verhinden in dem Alexandre alle zwei Wochen Merges macht. Die Vermeidung von Hacks auf diesem Zweig machte sein Leben einfacher (und verhinderte eine potentielle Fehlerquelle).

Es gab jedoch Probleme mit diesem Ansatz. Hacks tendierten dazu, von einer Veröffentlichung zur nächsten, zu verschwinden. Somit könnten wir einen Bug mit einem Hack von CrossOver 15 beheben aber wenn wir vergessen würden, den Hack auf unser neues CrossOver 16 anzuwenden, würde der Bug wieder auftreten. Ebenso bedeutete es, dass wir gewisse Windowsprogramme mit unserem Haupt ‘crossover’ Zweig nicht testen konnten, da manche von diesen Hacks zur Funktion benötigten (und diese Hacks waren nur in Releasezweigen vorhanden). Diese Dinge konnten ohne Tests lange Zeit bestehen und wir könnten die Fehlfunktionen nur innerhalb eines Betazyklus für eine neue Veröffentlichung feststellen. Aus diesen Gründen begannen wir fast alle unsere Hacks im crossover Masterbranch zu halten. Dies macht es schwieriger, die zweiwöchigen Merges zu machen aber verhindert andere Probleme.

Trotzdem gibt es immer noch Ausnahmen. Einige “hacks” oder diffs vom upstream wine, sind tatsächlich enorme Massen an Arbeit, die in Hunderte von individuellen Patches enden und viele, viele Datein berühren. Momentan ist der “Command Stream” von wine3d das Hauptbeispiel für einen so großen “Hack”. Es ist nicht realistisch so etwas in unserem Master ‘crossover’ Zweig zu halten da Merges danach wirklich zu schwierig wären, um diese alle zwei Wochen durchzuführen. Somit liegt so etwas nur in den Releasezweigen und wird von einem Releasezweig auf den nächsten bei jedem Zyklus portiert. Es ist schwer und insbesondere mit dem Command Strem versuchen wir, dies upstream zu bringen damit wir diesen nicht mehr weiter verwalten müssen. Zum Glück tendieren wir dazu nicht zu viele solcher enormen “Hacks” zu einem bestimmten Zeitpunkt zu haben. Wenn dies der Fall ist, kann dies Dinge enorm kompliziert oder teuer machen. Somit versuchen wir den Rahmen unserer “Hacks” klein zu halten oder sie upstream zu bringen.

Zusammenfassung

Grundlegendes:

  • CrossOver hat eine Version von Wine für jedes Majorrelease mit seltenen aber wichtigen Ausnahmen. Wir testen diese Versionen rigoros um diese zu stabilisieren.
  • Unser allgemeiner Arbeitsprozess ist, dass Entwickler Patches an Upstream Wine senden bevor diese unsere interne Repositories erreichen. Somit ist die meiste unserer Arbeit öffentlich verfügbar bevor wir diese selbst nutzen. (Natürlich finden wir einen Weg dies zu bekommen wenn wir in Eile sind und es schnell gehen muss)
  • Benutzer mit Privilegien unsere Nightly Builds zu nutzen werden feststellen, dass ein Winemerge alle zwei Wochen stattfindet, da die Nightly Builds im Allgemeinen von unserem Haupt ‘crossover’ Zweig kommen. Diese Build werden den wine3d Command Stream nicht enthalten.

Wenn dich Wine interessiert, kannst Du www.winehq.org besuchen oder den Quelltext unter

git://source.winehq.org/git/wine.git
 

auschecken… und es selbst bauen. Patches sind Willkommen! 

1. Natürlich brauchen wir mache Dinge manchmal schneller und lassen nicht zu, dass unser ‘Standard-Arbeitsprozess’ uns zurückhält. Wenn wir in Eile für eine bestimmte Arbeit sind, können wir uns immer die Rosinen heraus suchen  oder es direkt an wenden.

Über Josh DuBois
Josh DuBois ist ein Ingenieur und Produktmanager für CrossOver.

Über CodeWeavers

Im Jahre 1996 als allgemeine Softwareberatung gegründet, konzentriert sich CodeWeavers auf die Entwicklung von Wine – die Kerntechnologie, die sich in allen CrossOver Produkten befindet. Das Ziel des Unternehmens ist es, erweiterte Marktchancen für Windowssoftwareentwickler zu bieten indem die Portierung von Windows-Software auf Mac und Linux einfacher, schneller und schmerzloser gemacht wird. CodeWeavers gilt als führend in der Open Source Windows Portierungstechnologie und unterhält Entwicklungsbüros in Minnesota, im Vereinigten Königreich und rund um die Welt. Die Firma befindet sich im Privatbesitz.

CrossOver 15.2 erschienen – Rabattcode / metasfresh-Mitarbeit

Codeweavers hat eine neue Version von CrossOver mit der Versionsnummer 15.2 veröffentlicht.

Zur Einführung dieser neuen Version gibt es mal wieder einen Rabattcode, der diesmal ganze 40% wert ist: UPDATE152

In den kommenden Tagen werde ich dann auch mal wieder meine “Advocated Applications” unter die Lupe nehmen.

Weiterhin habe ich einige Demos mit dem aktuellen Staging-Patchset getestet und zumindest ein Bug konnte nun als “FIXED” markiert und damit geschlossen werden.

Weiterhin freue ich mich mitteilen zu können, dass ich nun freiberuflich einige Übersetzungen für ein Open Source ERP-Projekt machen kann. Es handelt sich um die Firma “metas GmbH”, die mit “metasfresh” eine eigene Version basierend auf dem ERP “ADempiere” herausgibt.

Ich habe die Firma metas GmbH bei der ADempiere World Conference im Jahre 2011 kennen gelernt. Auf der diesjährigen CeBIT konnte ich diesen Kontakt auffrischen und arbeite nun an der Übersetzung der sogenannten HOWTO-Collection.

Es geht insbesondere darum, eine Onlinehilfe für die Benutzung von metasfresh zu erstellen. Meine commits erscheinen dabei auf github.com wo ich nun auch als Mitglied von metasfresh gelistet bin.

Weiterhin werden einige Übersetzungen von mir in openSUSEs YaST für OpenStack Cloud und SUSE Enterprise Storage ausgerollt.