CFW: Problem mit ftrobopy-Apps im Store beim Release

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 26 Dez 2016, 18:45

Hallo zusammen,

mit unserem nächsten Release haben wir mit einigen Apps im CFW-Store ein Problem. Genauer: Alle Apps, die ftrobopy benutzen, sind in der aktuell im Store vorhandenen Version nicht mit dem nächsten Release kompatibel, und die Änderungen, die sie kompatibel zum nächsten Release machen würden, sind wiederum nicht mit 0.9.2 kompatibel.

Hintergrund: Version 0.9.2 (und alle ftrobopy-Apps im Release) benutzen noch eine Version von ftrobopy, die die TXT-Hardware über TxtControlMain (d.h. die Original-Applikation von Fischertechnik) steuert. Das nächste Release bringt eine neue Version von ftrobopy mit, die die TXT-Hardware direkt ansteuern kann, und lässt als Konsequenz TxtControlMain nicht mehr immer im Hintergrund mitlaufen. Das bedeutet aber, dass die aktuellen Versionen der Apps (die sich mit TxtControlMain verbinden wollen) nicht mehr tun.

Der Fix ist eigentlich recht simpel: FTRobopy muss statt wie bisher mit "ftrobopy.ftrobopy(txt_ip, 65000)" mit "ftrobopy.ftrobopy('auto')" initialisiert werden (dann findet es selbst heraus, ob es die TXT-Hardware direkt oder per Netz ansprechen soll). Das Problem dabei: Die Version von ftrobopy in Version 0.9.2 kennt diese Initialisierungs-Art noch nicht, d.h. die umgestellten Apps sind dann mit Version 0.9.2 inkompatibel.

Mein Vorschlag, um den Versionswechsel trotzdem vernünftig hinzubekommen:
  • Wir definieren die Bedeutung des (bisher nicht wirklich genutzten) Felds "firmware" im App-Manifest um in "Eine Spezifikation der Firmware-Versionen, die mit der App kompatibel sind"
  • Die Store-App wird erweitert, so dass sie nur noch die Apps auflistet, die mit der aktuell laufenden Firmware-Version kompatibel sind
  • Ausserdem schaut der erweiterte Store nicht nur im "master"-Branch nach Apps, sondern auch in einem Branch "v${version}", wobei "${version}" die (Haupt-)Version der Firmware ist (also z.B. "v0.9.2"). Falls beide Branches kompatible Versionen derselben App enthalten, dann gewinnt die neuere App-Version
  • Alle problematischen Apps im "master"-Branch bekommen einen passenden Firmware-String, der die nächste Version aussschließt. Das ist dem "alten" Store aus 0.9.2 egal (der wertet "firmware" nicht aus), und der "neue" Store aus der nächsten Version zeigt die inkompatiblen Versionen nicht an.
  • Anpassungen für die nächste Firmware-Version finden im passenden Branch statt, und der "firmware"-String in den angepassten Apps schliesst dann die alten Firmware-Version (0.9.2 und kleiner) aus.
  • Eine Weile nach dem Release (wenn alle genug Zeit hatten ihren TXT auf die neueste CFW-Version upzudaten) können wir den "v${version}"-Branch wieder nach "master" mergen und löschen.
Was haltet ihr davon?

Liebe Grüße,

Richard

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 26 Dez 2016, 19:52

Das Problem iat mir vor einigen Tagen auch aufgefallen. Ich würde mich morgen an den Umbau wagen.
Der Branch ist ja schnell erstellt. Auch würde mal ftrobosbap entfernen und mal mein Telegram-atest auf start-stop-deamon umbauen.

Wie soll ich die Branch nennen? v0.9.2?
Wie könnte man denn im Store ordentlich erkennen, welches Branch jetzt zu wählen ist?
Eine Liste aller Branches kann man sich ja über die API holen:

Code: Alles auswählen

GET /repos/:owner/:repo/branches
Raphael

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 26 Dez 2016, 20:28

ski7777 hat geschrieben:Das Problem iat mir vor einigen Tagen auch aufgefallen. Ich würde mich morgen an den Umbau wagen.
Der Branch ist ja schnell erstellt. Auch würde mal ftrobosbap entfernen und mal mein Telegram-atest auf start-stop-deamon umbauen.
Den Umbau am Shop kann ich auch machen (da weiß ich schon ziemlich genau, wie man das am einfachsten hinbekommt). Und auch die neuen Versions-Specs in "firmware" in master würde ich einbauen (da weiß ich auch wie sie aussehen sollen).
ski7777 hat geschrieben:Wie soll ich die Branch nennen? v0.9.2?
Nein, "v0.9.3". Ist ja schließlich der Branch für das nächste Release, nicht für das aktuelle.
ski7777 hat geschrieben:Wie könnte man denn im Store ordentlich erkennen, welches Branch jetzt zu wählen ist?
Das ist immer der Anfang des Inhalts von /etc/fw-ver.txt (bis zum ersten "-" bzw. ab Commit 821346f bis zum "+"), mit vorangestelltem "v".
ski7777 hat geschrieben:Eine Liste aller Branches kann man sich ja über die API holen
Brauchen wir gar nicht - die Namenskonvention tut da auch schon.

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 00:43

richard.kunze hat geschrieben:
ski7777 hat geschrieben:Wie soll ich die Branch nennen? v0.9.2?
Nein, "v0.9.3". Ist ja schließlich der Branch für das nächste Release, nicht für das aktuelle.
Da war ich wohl zu schnell.

Ich fange dann einfach mal an.

Raphael

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 27 Dez 2016, 01:43

ski7777 hat geschrieben: Ich fange dann einfach mal an.
Um den Store brauchst Du dich nicht kümmern, dem bringe ich gerade schon den Umgang mit verschiedenen Firmware-Versionen bei (ist auch schon halb fertig, der Rest kommt nachher wenn es wieder hell ist :P).

Den v0.9.3-Branch in ftcommunity-apps kannst Du gerne anlegen. Und wenn Du schon dabei bist, kannst Du auch gleich die "firmware"-Einträge in den App-Manifests in master (!) so ändern, dass der neue Code im Shop dann auch was damit anfangen kann.

Diese Einträge sind in Zukunft Strings, die von semantic_version.Spec() verstanden werden. In der Praxis brauchen wir da aktuell zwei verschiedene Einträge, und zwar
  • ">=0.9.0" für Apps, die unverändert mit der 0.9.3er-Firmware kompatibel sind (z.B. "CPU-Load", "Radio", ...) und
  • ">=0.9.0, <0.9.3" für Apps, die für die 0.9.3er-Firmware angepasst werden müssen
Im Branch gehört da dann (nach Anpassung der App natürlich, und dabei die Anpassung der Versionsnummer der App nicht vergessen) der Wert ">=0.9.3" rein.

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 01:49

Ich steh irgendwie auf dem Schlauch.

Ich habe jetzt von allen Apps die Versionsnummer auf 0.9.0 bzw. 0.9.3 gesetzt und die ftrobopy Sachen geändert. Wohin jetzt mit was?

Raphael

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 27 Dez 2016, 02:12

ski7777 hat geschrieben:Ich steh irgendwie auf dem Schlauch.

Ich habe jetzt von allen Apps die Versionsnummer auf 0.9.0 bzw. 0.9.3 gesetzt und die ftrobopy Sachen geändert. Wohin jetzt mit was?
Die Apps mit angepasstem ftrobopy-Aufruf müssen in den Branch v0.9.3. In 'master' bleiben die unangpassten Versionen dieser Apps (damit sie der "alte" Store in der aktuellen Firmware da weiterhin findet).

Was Du mit "Versionsnummer" meinst weiß ich nicht so genau - das kann entweder der 'firmware'- oder der 'version'-Eintrag im App-Manifest sein. Aber in beiden Fällen ist sowohl '0.9.0' als auch '0.9.3' da falsch. Was da reingehört ist:
  • in 'version' im 'master'-Branch: Das was da bisher auch drinstand (Beispiel: bei app_tutorial_3 der Wert "1.0")
  • in 'version' im 'v0.9.3'-Branch: Bei angepassten Apps die jeweilige App-Version um eins in der letzten Stelle erhöht (Beispiel: app_tutorial_3 der Wert "1.1")
  • in 'firmware' im 'master'-Branch: Bei unveränderten Apps ">=0.9.0", bei anzupassenden Apps ">=0.9.0, <0.9.3"
  • in 'firmware' im 'v0.9.3'-Branch: Bei unveränderten Apps ">=0.9.0", bei angepassten Apps ">=0.9.3"
Das sorgt dann dafür, dass der "alte" Store (aus der 0.9.2er-Firmware) wie bisher einfach die Apps aus dem 'master'-Branch anzeigt und installiert (der kennt nämlich nur den 'master'-Branch, und ignoriert was in 'firmware' drinsteht). Der "neue" Store (an dem ich gerade arbeite) liest beide Branches und entscheidet dann auf Basis von 'firmware' und 'version', welche Version der App er anzeigt - und das ist dann bei den anzupassenden Apps eben genau die Version aus dem Branch, weil nur da die Spezifikation in 'firmware' mit dem Wert für das nächste Release (seit dem letzen Commit '0.9.3-rc' bzw. '0.9.3-rc+irgendeinebuildnummer') kompatibel ist.

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 03:17

Trommelwirbel, ....., Tada!
Fertig!

Ich hoffe, dass das alles so passt: https://github.com/ftCommunity/ftcommunity-apps

Raphael

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 27 Dez 2016, 12:23

ski7777 hat geschrieben:Trommelwirbel, ....., Tada! Fertig!
Ich hoffe, dass das alles so passt: https://github.com/ftCommunity/ftcommunity-apps
Sieht auf den ersten Blick gut aus - danke!

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 15:42

Dann ist ja alles gut.

Noch eine Idee von mir:
Ein Web-Store. So könnte man auch im Webbrowser die Apps verwalten. Vielleicht könntest du die wichtigsten Routinen vom Store in einer Datei sammeln, sodass ich aufbauen darauf ein Webinterface gestalten kann.

Raphael

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von MasterOfGizmo » 27 Dez 2016, 16:07

richard.kunze hat geschrieben: Hintergrund: Version 0.9.2 (und alle ftrobopy-Apps im Release) benutzen noch eine Version von ftrobopy, die die TXT-Hardware über TxtControlMain (d.h. die Original-Applikation von Fischertechnik) steuert. Das nächste Release bringt eine neue Version von ftrobopy mit, die die TXT-Hardware direkt ansteuern kann, und lässt als Konsequenz TxtControlMain nicht mehr immer im Hintergrund mitlaufen. Das bedeutet aber, dass die aktuellen Versionen der Apps (die sich mit TxtControlMain verbinden wollen) nicht mehr tun.
Spricht was dagegen, ftrobopy mit ein wenig zusätzlicher Intelligenz auszustatten? Also wenn es auf einem TXT läuft (arm CPU) und wenn es via "locahost" angespochen wird und wenn die Verbindung zu Port 65000 nicht klappt, dann könnte es selbstständig den direct-Modus versuchen. Das würde für eine Übergangszeit Rückwärtskompatibilität erzeugen und die User wären beim Update nicht gezwungen, alle Apps zu aktualisieren. Und etwas später z.B. beim Release von 0.9.4 schaltet man den Automatismus wieder ab, wenn in Ruhe alles Apps aktualisiert wurden. Dann könnte man das ganze Versions-geändere herauszögern und für die Umstellung der Apps hätte man alle Zeit der Welt und "alte Apps" würden bis inkl. 0.9.3 noch laufen, "neue Apps" ab inkl 0.9.3. Dann könnte man auch auf das Trennen in zwei App-Repositories verzichten und die Entwickler müssten in der Übergangszeit nicht zwei Versionen ihrer Apps pflegen.

Oder verstehe ich da was falsch?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von MasterOfGizmo » 27 Dez 2016, 16:11

ski7777 hat geschrieben: Noch eine Idee von mir:
Ein Web-Store. So könnte man auch im Webbrowser die Apps verwalten. Vielleicht könntest du die wichtigsten Routinen vom Store in einer Datei sammeln, sodass ich aufbauen darauf ein Webinterface gestalten kann.
Die Idee kam hier im Forum schon mehrfach auf. Da Apps eh schon ein Web-Interface haben können (siehe die About-App, die Websocket-Demo oder Brickly) brauchst Du doch nur der Store-App ein Web-Interface zu verpassen. Das hätte den Vorteil, dass man die Store-Routinen nicht doppelt pflegen müsste.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von MasterOfGizmo » 27 Dez 2016, 16:14

richard.kunze hat geschrieben: Sieht auf den ersten Blick gut aus - danke!
Das waren jetzt keine 24 Stunden von "wir müssen da mal was überdenken" zu "ich habe das halbe Repository umgebaut". Da hätte ich etwas mehr Zeit, um das zu klären, ganz hilfreich gefiunden.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von MasterOfGizmo » 27 Dez 2016, 16:20

Wie muss der Aufruf bei einer App aussehen, die sowohl auf der alten aus auch auf der neue Firmware laufen soll? Also irgendwas der Art:

Code: Alles auswählen

try:
     self.txt = ftrobopy.ftrobopy('txt_ip, 65000)
except:
    try:
        self.txt = ftrobopy.ftrobopy('auto')
   except:
        print("Kann TXT nicht ansprechen")
Sowas werde ich generell in alle meine Apps einbauen.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 16:29

Es geht hier nicht nur um ftrobopy sondern um alles, was in der nächsten Version anders sein wird.

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von MasterOfGizmo » 27 Dez 2016, 16:36

Nee, ich rede nur von ftrobopy. Meine Apps würde ich gerne so umstellen, dass sie unabhängig von Euren Änderungen funktionieren.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

raspberrypi
Beiträge: 16
Registriert: 05 Dez 2016, 17:11

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von raspberrypi » 27 Dez 2016, 16:39

Ich finde das komische System jetzt irgendwie unübersichtlich vor allem wen man wie ich noch nicht so erfahren mit Github ist.

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von ski7777 » 27 Dez 2016, 16:40

Als Nutzer musst du gar nichts beachten. Du kannst einfach alles weiter so machen wie immer.
Das neue System dient nur zur internen Verwaltung.

Raphael

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 27 Dez 2016, 16:47

MasterOfGizmo hat geschrieben: Spricht was dagegen, ftrobopy mit ein wenig zusätzlicher Intelligenz auszustatten? Also wenn es auf einem TXT läuft (arm CPU) und wenn es via "locahost" angespochen wird und wenn die Verbindung zu Port 65000 nicht klappt, dann könnte es selbstständig den direct-Modus versuchen.
Prinzipiell nicht, auch wenn es etwas hacky ist und es eigentlich genau für den Fall schon den 'auto'-Mode gibt (der halt einen anderen Initialisierungsparameter braucht).

Das würde dann halt aber auch nur das eine Spezialproblem lösen, und bei der nächsten Inkompatibilität irgendwo (für die es dann eventuell halt keine einfache Lösung gibt) stehen wir wieder bei Schritt 1.
MasterOfGizmo hat geschrieben: Das würde für eine Übergangszeit Rückwärtskompatibilität erzeugen und die User wären beim Update nicht gezwungen, alle Apps zu aktualisieren. Und etwas später z.B. beim Release von 0.9.4 schaltet man den Automatismus wieder ab, wenn in Ruhe alles Apps aktualisiert wurden. Dann könnte man das ganze Versions-geändere herauszögern und für die Umstellung der Apps hätte man alle Zeit der Welt und "alte Apps" würden bis inkl. 0.9.3 noch laufen, "neue Apps" ab inkl 0.9.3.
Das "ganze Version-geändere" brauchen wir jetzt einmal wegen der Neuinterpretation des bisher unbenutzten 'firmware'-eintrags im Manifest als Spezifikation der kompatiblen Firmware-Versionen. Und wir bekommen dafür einen Mechanismus, mit dem wir tatsächlich genau angeben können, mit welchen Firmware-Versionen eine App funktioniert - das hatten wir bisher nämlich nicht.
MasterOfGizmo hat geschrieben: Dann könnte man auch auf das Trennen in zwei App-Repositories verzichten und die Entwickler müssten in der Übergangszeit nicht zwei Versionen ihrer Apps pflegen.
Einen zusätzlicher Branch für die Unterscheidung zwischen "stable" und "bleeding edge" würde ich jetzt nicht wirklich als "Trennen in zwei App-Repositories" bezeichnen. Das ist eigentlich sogar eher die normale Vorgehensweise.

Das einzig ungewöhnliche daran ist lediglich, dass aktuell "master" der "Stable"-Branch ist, während "v0.9.3" der "Bleeding Edge"-Branch ist - das ist normalerweise umgekehrt. Das ist aber eine Sondersituation für dieses Release (weil der "alte" Store nur "master" kennt), in Zukunft kann man auch wie üblich die Release-spezifischen Branches (wenn sie denn nötig sind) als "stable" hernehmen.

Und doppelt pflegen muss man die Apps auch nicht - man kann sie genausogut auch einfach in einem Branch als "inkompatibel" markieren und die Anpassungen im anderen Branch machen (und später dann wieder mergen). Also im Prinzip genau das, was wir hier jetzt gemacht haben.

Und man kann bei Bedarf mehrere Versionen pflegen (und zwar so wie das in Git-Projekten üblich ist, als Branches) wenn man will, und der Store kommt damit klar und bietet die jeweils am besten passende Variante einer App an. Das hatten wir vorher auch nicht.

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: CFW: Problem mit ftrobopy-Apps im Store beim Release

Beitrag von richard.kunze » 27 Dez 2016, 17:04

MasterOfGizmo hat geschrieben:
richard.kunze hat geschrieben: Das waren jetzt keine 24 Stunden von "wir müssen da mal was überdenken" zu "ich habe das halbe Repository umgebaut". Da hätte ich etwas mehr Zeit, um das zu klären, ganz hilfreich gefiunden.
So arg viel umgebaut ist das gar nicht - das sieht nur so aus, weil halt für alle Apps der 'firmware'-Eintrag angepasst wurde. Und der zeigt jetzt - im Gegenteil zu bisher - auch tatsächlich (und auswertbar) an, mit welchen Firmware-Versionen die App kompatibel ist. Das ist ein echter Mehrwert, finde ich.

Der Rest ist ein Branch (business as usual in Git-Projekten), und ein paar Anpassungen an die neue ftrobopy-Version, die eh früher oder später fällig gewesen wären.

Antworten