Beta-Tester für C++11 UML State Machine Framework yasmine gesucht



  • Hallo zusammen,

    ich und mein kleines Team haben ein C++11 UML State Machine Framework geschrieben. Es würde mich freuen, wenn sich ein paar Leute finden, die es einmal ausprobieren.
    Jegliches Feedback über API, Bugs und auch Feature-Requests sind willkommen.

    Zu finden ist das Ganze unter http://yasmine.seadex.de

    Warum haben wir überhaupt ein eigene Implementierung gemacht? Das hat verschiedene Gründe.
    Der wichtigste: Wir brauchen eigentlich in jedem Projekt, in dem wir mitwirken, mehr oder weniger komplexeState Machines.
    Und es ist schon oft passiert, dass das passende Rad noch nicht erfunden wurde, z.B.
    - weil keine Boost-Abhängigkeit gewünscht wird
    - weil bei einem Medical Embedded System alles selbst geschrieben sein soll oder 3rd party Libs so übersichtlich sein sollen, dass man den Code-Reviewen kann (muss dann natürlich auch quelloffen sein)
    - weil man kein Geld für ein kommerzielle Lösung ausgeben willkommen
    - weil der Code wie ein Fremdkörper wirkt, weil er nicht in ein OO-System passt
    - weil es Lizenz-Probleme/-Bedenken gibt
    - weil das State Machine-Projekt kaum oder nicht mehr gepflegt wird
    - ...

    Deswegen haben wir oft eingene, kleine Minimalimplementierungen gemacht. Dem wollten wir jetzt gerne eine Ende setzen und hoffen, dass yasmine sonst auch noch jemandem nützlich sein wird.

    Zur Lizenz: Das Framework ist kostenfrei nutzbar. Es steht unter einer sehr liberalen Lizenz. Wesentliche Einschränkung ist, dass die Bibliothek selbst nicht durch 3. kommerziell vertrieben werden darf.

    Detaillierte Infos und Dokumentation findet Ihr, wenn Ihr dem oben genannten Link folgt.


  • Mod

    So sieht das übrigens bei eurer Seite aus, wenn man ihr nicht pauschal gestattet, irgendwelchen Code aktiv auf Clientseite auszuführen. Tut das Not?



  • Schau ich mir an. Kann sein, dass das von der doofen Cookie-Warnungsanzeige kommt...



  • Sehr kreative, absurde Formatierung teilweise:

    i_event_processing_callback&
    	operator=
    	(
    		const i_event_processing_callback&
    	) = delete;
    
    i_state*
    t_region::get_state
    (
    	const std::string& p_name
    )	const
    

    Benennung mit t_ , i_ und l_ ist auch sehr unschön.

    const auto l_deferred_events = m_deferred_events;
    	m_deferred_events.clear();
    
    	auto l_terminate_pseudostate_has_been_reached = false;
    	t_transition_controller transition_controller;
    	for( const auto l_deferred_event : l_deferred_events )
    	{
    

    Always Auto macht den Code nicht gerade leichter verständlich.

    void* schrieb:

    Zur Lizenz: Das Framework ist kostenfrei nutzbar. Es steht unter einer leicht modifizierten MIT-Lizenz. Wesentlicher Unterschied ist, dass die Bibliothek selbst nicht durch 3.
    kommerziell vertrieben werden darf.

    Open Source muss schon sein bei so einer allgemeinen Bibliothek. Warum sollte man sich an ein Unternehmen binden, das es in einem Jahr wahrscheinlich nicht mehr geben wird?

    Wo sind überhaupt die Tests? Die sind anscheinend nicht in "0.1.0 (Beta 0)" dabei.

    Es gibt verdächtig viele Log-Statements. Sind die APIs vielleicht zu kompliziert, um ohne das Log nachzuvollziehen, was passiert?



  • Hallo TyRoXx,

    TyRoXx schrieb:

    Sehr kreative, absurde Formatierung teilweise:

    wir schreiben öffnende und schließende Klammern immer untereinander, wenn es nicht einzeilig wird. Egal ob (), {}, <>.
    Ist zugegeben gewöhnungsbedürftig, wir haben uns aus Gründen der Gleichmäßigkeit dafür entschieden.
    Absurd find ich jetzt ein bisserl hart... 😃

    TyRoXx schrieb:

    Benennung mit t_ , i_ und l_ ist auch sehr unschön.

    Die l_s sind eigentlich nur dazu da, Mehrdeutigkeiten aufzulösen. Ein Kollege hat sie dann aber sehr gewissenhaft verteilt.

    Die t_s und i_s markieren eben Typen. Ich habe mich auch schon gefragt, ob ein Postfix anstatt Präfix netter wäre. Oder ganz weglassen, aber mir gefällt es irgendwie, das man Typen im Code auf den ersten Blick erkennen kann.

    TyRoXx schrieb:

    Always Auto macht den Code nicht gerade leichter verständlich.

    Dieses Projekt dient für mich auch dazu Herb Sutter's AAA-Ideen zu testen. Dazu wollte ich das mal in einem geschlossenen Projekt komplett durchziehen.

    Hast Du ein Beispiel für eine Stelle, wo Du es störend/unklar findest?

    TyRoXx schrieb:

    Open Source muss schon sein bei so einer allgemeinen Bibliothek. Warum sollte man sich an ein Unternehmen binden, das es in einem Jahr wahrscheinlich nicht mehr geben wird?

    Was ist Dir nicht Open Source genug? Man darf die Bibliothek gratis einsetzen,
    Du darfst die Bibliothek verändern, Du darfst eigentlich alles damit machen. Die Quellen sind offen. Du darfst nur die Bibliothek selbst nicht als Bibliothek verkaufen. Z.B. Eingebaut in ein Binary darfst Du damit ja alles machen. Du kannst Sie auch Branchen und weiterentwickeln, aber eben nur nicht selbst als Produkt verticken.

    Wodurch würdest Du Dich "an eine Firma gebunden fühlen"? Welcher Freiheitsgrad fehlt Dir?

    Und uns gibt es nun immerhin seit 6 Jahren und hoffentlich noch viel länger. 😃

    TyRoXx schrieb:

    Wo sind überhaupt die Tests? Die sind anscheinend nicht in "0.1.0 (Beta 0)" dabei.

    Die basieren zum Teil auf einer kleinen Testbibliothek (die u.a. Testergebnisse mit Referenzen vergleicht). Dieser Code war mir noch zu Cowboy-mässig für eine Veröffentlichung. Die Tests werden in einem der folgenden Releases dabei sein.

    TyRoXx schrieb:

    Es gibt verdächtig viele Log-Statements. Sind die APIs vielleicht zu kompliziert, um ohne das Log nachzuvollziehen, was passiert?

    Die Logs stammen zum Großteil aus der Entwicklung der Transitionslogik. Außerdem sollen sie dazu dienen ein im Feld bestehndes Problem nachvollziehen zu können, z.B. wenn man keinen Core-Dump hat. Dann kann man das Log-Level erhöhen und eine entsprechend detaillierte Ausgabe erhalten.



  • Hallo SeppJ,

    SeppJ schrieb:

    So sieht das übrigens bei eurer Seite aus, wenn man ihr nicht pauschal gestattet, irgendwelchen Code aktiv auf Clientseite auszuführen. Tut das Not?

    das liegt/lag wohl an einem CSS-Problem. Jetzt wird die Seite auch ohne JavaScript geladen. Allerdings ist die Navigation ohne JavaScript (linke Seite) noch eingeschränkt, da das Ausklappen so nicht funktioniert. Wir arbeiten an einer Alternative.

    Update:
    Jetzt klappt es auch mit der Navigation, die nun (ohne JavaScript) immer komplett ausgeklappt ist.

    Danke für den Hinweis SeppJ!



  • Es ist schon ein Kunststück, wenn stringent formatierter Code unlesbar wird.

    Ist zugegeben gewöhnungsbedürftig, wir haben uns aus Gründen der Gleichmäßigkeit dafür entschieden.

    Ihr macht da Dinge gleichmäßig, bei denen es keinen Sinn ergibt, dass sie gleichmäßig sind. "Lesbarkeit" wäre ein vernünftiges Kriterium, denn "gleichmäßig" wäre es auch, wenn man z.B. einfach alle Einrückungen weglassen würde.


  • Mod

    void* schrieb:

    Update:
    Jetzt klappt es auch mit der Navigation, die nun (ohne JavaScript) immer komplett ausgeklappt ist.

    Danke für den Hinweis SeppJ!

    Jetzt wird man übrigens weitergeleitet, auf eine Seite, die dann auch leer ist.



  • Hallo Mr X,

    Mr X schrieb:

    Ihr macht da Dinge gleichmäßig, bei denen es keinen Sinn ergibt, dass sie gleichmäßig sind. "Lesbarkeit" wäre ein vernünftiges Kriterium, denn "gleichmäßig" wäre es auch, wenn man z.B. einfach alle Einrückungen weglassen würde.

    Naja, es ist auch ein kleiner Unterschied, ob man Code zusammenstaucht oder entzerrt. Und diese Art der Klammerung entzerrt. Aber Lesbarkeit ist auch subjektiv.
    Ich habe auch nicht gesagt, dass die Gleichmässigkeit das einzige Kriterium ist. Lesbarkeit gehört auch dazu. Automatisierbarkeit ebenso.

    Du aber drückst quasi aus, Lesbarkeit sei ein Kriterium, Gleichmässigkeit aber nicht.
    Man kann eine if-else-Konstruktion bestimmt auf viele Arten so formatieren, dass das jeweils Viele leserlich finden. Es ergibt aber auch IMHO keinen Sinn, in einem Stück Source-Code 7 verschiedene Varianten zu verwenden, die alle für sich leserlich sind, aber untereinander sehr unterschiedlich. Das würde Dir wahrscheinlich auch nicht gefallen. Also ist Gleichmässigkeit doch irgendwie ein Kriterium, oder?

    Noch ein Beispiel:

    void foo(
            type1 value1,
            const type2& value2,
            type3*** value3,
            type004 value004,
            const type005& value005,
            type006*** value006) const;
    
    void foo(
            type1 value1, const type2& value2, type3*** value3,
            type004 value004, const type005& value005, typ006*** value006
        ) const;
    
    void
        foo
        (
            type1 value1,
            const type2& value2,
            type3*** value3,
            type004 value004,
            const type005& value005,
            type006*** value006
        ) const;
    
    void foo(type1 value1, const type2& value2, type3*** value3, type004 value004, const type005& value005, typ006*** value006) const;
    

    Ich persönlich empfinde Variante 3 als sehr leserlich. Ich kann Parameteranzahl, Typen und Variablen klar erkennen.

    Aber lasst uns jetzt bitte hier keinen Flamewar über Code-Formatierung anzetteln. Ich habe verstanden, dass die Formatierung von Funktionsdeklarationen und -definitionen keinen Anklang findet.
    Aber das lässt sich mit Uncrustify auch in 5 Minuten regeln.
    Wir können das auch gerne in einem anderen Thread weiterdiskutieren, aber lasst uns hier nicht offtopic werden.



  • SeppJ schrieb:

    Jetzt wird man übrigens weitergeleitet, auf eine Seite, die dann auch leer ist.

    Mit welchem Browser? Mit Firefox, Internet Explorer und Chrome funktioniert es bei mir.
    Hängt vielleicht noch die alte Version im Cache?


  • Mod

    void* schrieb:

    Hängt vielleicht noch die alter Version im Cache?

    Stimmt, das war es. 'Tschuldigung für die Falschmeldung.



  • Wie bitte verträgt sich das da:
    http://yasmine.seadex.de/license/Lizenz_und_Nutzungsbedingungen_geschaeftliche_Nutzung_Fassung_20160429.pdf
    mit der MIT Lizenz?
    In der MIT Lizenz steht z.B. nix davon dass man sich registrieren muss oder sich verpflichten diversen "Pflichten" nachzukommen (die ich nebenbei erwähnt reichlich drollig finde, da könnt ihr ja gleich noch die 10 Gebote mit reinschreiben).
    Und noch einiges mehr.

    Vorzugeben dass ihr ne "leicht modifizierte" MIT Lizenz verwendet finde ich also schon reichlich krass.



  • TyRoXx schrieb:

    Sehr kreative, absurde Formatierung teilweise:

    i_state*
    t_region::get_state
    (
    	const std::string& p_name
    )	const
    

    Jo, daß die beiden "const" da so militärisch genau untereinander stehen, ist absurd.

    Deswegen sehe ich davon ab, das Projekt ernst zu nehmen, obwohl wir evtl. bald genao sowas brauchen könnten.



  • volkard schrieb:

    TyRoXx schrieb:

    Sehr kreative, absurde Formatierung teilweise:

    i_state*
    t_region::get_state
    (
    	const std::string& p_name
    )	const
    

    Jo, daß die beiden "const" da so militärisch genau untereinander stehen, ist absurd.

    Steht das tatsächlich so im Code? 😃
    Ja, das ist absurd und es ist keine Absicht. Das mit dem 2. const ist ein Unfall.

    volkard schrieb:

    Deswegen sehe ich davon ab, das Projekt ernst zu nehmen, obwohl wir evtl. bald genao sowas brauchen könnten.

    @volkard:
    Ist das Dein Ernst? 😞

    Leute, soll ich echt am Montag ein Umformatieren anstoßen, damit wir uns auf Inhalte fokusieren können? 😮
    Also gut, aber nur weil volkard, schon vor 15 Jahren erklärt hat, dass er in Windows den Mülleimer abschaltet ("nichts geht über gescheites Backup-Wesen", oder so) 😃 ...ok, und weil sich so viele daran stoßen. 😃

    Also:**
    Nächste Woche gibt es eine 0.1.1 mit umformatierten Funktionsdeklarationen und -definitionen.**



  • Hallo hustbaer,

    hustbaer schrieb:

    Wie bitte verträgt sich das da:
    http://yasmine.seadex.de/license/Lizenz_und_Nutzungsbedingungen_geschaeftliche_Nutzung_Fassung_20160429.pdf
    mit der MIT Lizenz?
    In der MIT Lizenz steht z.B. nix davon dass man sich registrieren muss oder sich verpflichten diversen "Pflichten" nachzukommen (die ich nebenbei erwähnt reichlich drollig finde, da könnt ihr ja gleich noch die 10 Gebote mit reinschreiben).
    Und noch einiges mehr.

    Vorzugeben dass ihr ne "leicht modifizierte" MIT Lizenz verwendet finde ich also schon reichlich krass.

    Willkommen im deutschen Rechtssystem. 😃

    1. Die Registrierung gilt nur für die kommerzielle Lizenz. Hätte ich auch erwähnen sollen. Da es hier aber um eine Beta-Test ging, war ich eher von privaten Nutzern ausgegangen. Mein Fehler, sorry.
    2. Bezieht sich Dein

    hustbaer schrieb:

    diversen "Pflichten" nachzukommen (die ich nebenbei erwähnt reichlich drollig finde, da könnt ihr ja gleich noch die 10 Gebote mit reinschreiben).

    auf § 6 Pflichten des Nutzers?
    Da steht doch nun wirklich nichts drin, was eine "normale" Nutzung irgendwie behindert, oder?

    Zugegeben manche von den Punkten sind etwas drollig. Aber da war mir echt meine Zeit und Geld zu wertvill, um mit dem Anwalt da über einzelne Punkte zu diskutieren, die man ggf. rausnehmen könnte.

    hustbaer schrieb:

    Vorzugeben dass ihr ne "leicht modifizierte" MIT Lizenz verwendet finde ich also schon reichlich krass.

    Das allermeiste in diesem Lizenztext (und der für die private Nutzung ist noch eine deutliche Ecke kürzer) ist doch wirklich nur ein rechtlicher Rahmen (Geltungsbereich, Haftungsausschluss, Datenschutz, Gerichtsstand, ...).
    Das steht doch in jeden AGBs so drin.

    Der regulierende Teil beinhaltet
    - die Registrierung bei einer kommerziellen Lizenz und
    - das Verbot des Vertriebs der Lizenz selbst

    Also ja, das halte ich für leicht modifiziert!
    Und mit leicht modifiziert meine ich den Inhalt und die Rechte für den Nutzer. Wenn Du auf den Umfang des Texts abzielst, hast Du natürlich recht, der ist viel länger.

    Zu sagen, "ja, ich benutze etwas von Euch, das ich umsonst bekommen habe" (als Unternehmen) und dass man die Bibliothek selbst nicht verkaufen darf, halte ich wirklich für eine kleine Modifikation einer so freizügigen Lizenz.

    Ich hätte auch lieber einen Copy-und-Paste-3-Zeiler der alles abhandelt. Aber das geht halt nicht. Diese Riesenrechtstexte bringen mir auch keine Freude. Wirklich nicht. Aber als Unternehmen nach deutschem Recht ist man "per default" vielen rechtlichen Risiken ausgesetzt. Das muss man durch die richtige Form kanalisieren. Dazu dient das Ganze.



  • SeppJ schrieb:

    void* schrieb:

    Hängt vielleicht noch die alter Version im Cache?

    Stimmt, das war es. 'Tschuldigung für die Falschmeldung.

    Alle klar und np. Ich bin froh, dass Du das ursprüngliche Problem gefunden und gemeldet hast.



  • void* schrieb:

    2. Bezieht sich Dein

    hustbaer schrieb:

    diversen "Pflichten" nachzukommen (die ich nebenbei erwähnt reichlich drollig finde, da könnt ihr ja gleich noch die 10 Gebote mit reinschreiben).

    auf § 6 Pflichten des Nutzers?

    Ja

    void* schrieb:

    Da steht doch nun wirklich nichts drin, was eine "normale" Nutzung irgendwie behindert, oder?

    Darum geht es nicht. Es geht darum dass es vollkommen bekloppt ist.

    void* schrieb:

    Zugegeben manche von den Punkten sind etwas drollig. Aber

    Aber gar nix. An der Stelle (in den Lizenzbestimmungen) hör' ich auf zu lesen, weil ich weiss was ich wissen muss: die ham se nimmer alle. Wenn du meinst du brauchst mehr als so ziemlich alle anderen Firmen die Open Source Libs anbieten, bitte. Aber dann such dir einen Anwalt der weniger komisch drauf ist.

    void* schrieb:

    Der regulierende Teil beinhaltet
    - die Registrierung bei einer kommerziellen Lizenz und
    - das Verbot des Vertriebs der Lizenz selbst

    Also ja, das halte ich für leicht modifiziert!
    Und mit leicht modifiziert meine ich den Inhalt und die Rechte für den Nutzer. Wenn Du auf den Umfang des Texts abzielst, hast Du natürlich recht, der ist viel länger.

    Lol, OK.
    Die Registrierung reicht eigentlich schon. Das ist ne riesen Sache, auch wenn du das runterspielst. Mit der MIT Lizenz hat das auf jeden Fall effektiv, vom Freiheitsgrad her *nichts* mehr zu tun.



  • hustbaer schrieb:

    Aber gar nix. An der Stelle (in den Lizenzbestimmungen) hör' ich auf zu lesen, weil ich weiss was ich wissen muss: die ham se nimmer alle.

    Das steht Dir vollkommen frei. Da es jetzt grenzwertig persönlich/beleidigend wird, beende ich die Diskussion über diesen Punkt.

    hustbaer schrieb:

    Die Registrierung reicht eigentlich schon. Das ist ne riesen Sache, auch wenn du das runterspielst. Mit der MIT Lizenz hat das auf jeden Fall effektiv, vom Freiheitsgrad her *nichts* mehr zu tun.

    Auch diese Meinung steht Dir frei. Ich sehe das anders.
    Dafür, dass eine Firma gratis etwas nutzen darf, in das eine andere einige Kreativität, Engagement und auch Geld investiert hat, eine Registrierung zu verlangen, halte ich für eine geringe Hürde.

    Die Sache ist aber auch so, dass die Registrierung mehr oder weniger eine Idee war, um Feedback zu bekommen, ob die Bibliothek in "der Industrie" überhaupt irgendwann genutzt wird, um ein Gefühl dafür zu gewinnen, ob es sich lohnt Entwicklungsaufwand in ergänzende Tools zu stecken.
    Wenn sich die Stimmen häufen, dass das so schlimm ist, könnte man das Ganze natürlich auf einen "wäre nett sich zu registrieren"-Modus (freiwillig, auf Lady/Gentleman Höflichkeit hoffend ändern).
    Mir geht es nicht um irgendwelche Werbedaten oder Ähnliches, sondern um festzustellen, ob das Projekt ankommt. Deswegen gibt es für die private Nutzung ja auch keinerlei Registrierungszwang.



  • (11) Unbeschadet sonstiger Rechte von Seadex erlischt die gewährte Lizenz automatisch, sofern der Nutzer gegen die Bestimmungen dieser Bedingungen verstößt. In einem solchen Fall ist er verpflichtet, sämtliche Kopien der Bibliothek und alle ihre Komponenten zu vernichten.

    (12) Ferner behält sich Seadex das Recht auf eine entsprechende Vergütung für den Fall vor, dass die Nutzung entgegen den Bestimmungen dieser Bedingungen erfolgt.

    Bevor ich die Bibliothek ausprobiere, müsste ich erst einmal mit der Rechtsabteilung klären, ob das so in Frage kommt. Mal abgesehen davon, dass es nicht vorgesehen ist, dass Teile der Backups gelöscht werden. Ich spare kurzfristig viel Zeit und Nerven, wenn ich die Bibliothek einfach nicht ausprobiere.



  • void* schrieb:

    hustbaer schrieb:

    Aber gar nix. An der Stelle (in den Lizenzbestimmungen) hör' ich auf zu lesen, weil ich weiss was ich wissen muss: die ham se nimmer alle.

    Das steht Dir vollkommen frei. Da es jetzt grenzwertig persönlich/beleidigend wird, beende ich die Diskussion über diesen Punkt.

    Ich will dich nicht beleidigen. Ich will dir nur klar und unmisverständlich vermitteln wie "komisch" das rüberkommt. Ich meine, in Lizenzbestimmungen zu einer Open Source Library reinzuschreiben dass man nicht fies zu Kindern sein darf und sich benehmen muss...? Echt jetzt? Ich kann mir schon vorstellen warum euer Anwalt meint das wäre ne gute Idee. Nur ich halte es für vollkommen übertrieben, kontraproduktiv und alles in allem eben ne ziemlich schlechte Idee.

    ----

    Und was die Registrierung angeht...
    Ich denke Leute die das abschreckt werden euch auch keine Mail schreiben um sich zu beschweren. Ich würde es nicht tun. Von daher mMn. auch nicht sinnvoll auf Gegenwind zu warten, denn es wird keiner kommen. Es wird statt dessen einfach nur das Interesse geringer ausfallen.

    Und um mitzubekommen wie hoch das Interesse überhaupt ist, sollte es doch reichen das Projekt z.B. auf Github/CodePlex/... zu stellen. Die Anzahl an Downloads und Forks sollte da ein guter Indikator sein.


Anmelden zum Antworten