Pegjs: Wie definiere ich eine Regel, die in PEG.js mehrmals mit einem Muster übereinstimmt?

Erstellt am 25. Jan. 2020  ·  22Kommentare  ·  Quelle: pegjs/pegjs

Problemtyp

  • Fehlerbericht:
  • Featureanfrage:
  • Frage: ja
  • Kein Problem:

Voraussetzungen

  • Können Sie das Problem reproduzieren?: Ja
  • Haben Sie die Repository-Probleme durchsucht?: Bis zu einem gewissen Grad
  • Haben Sie die Foren überprüft?: Nein
  • Haben Sie eine Websuche durchgeführt (Google, Yahoo usw.)?: Ja

Beschreibung


Ich versuche, eine Datei zu analysieren, in der das Muster möglicherweise mehrmals angezeigt wird:

G04 hello world*
G04 foo bar*

Die entsprechende PEG.js-Grammatik lautet:

  = "G04" _ content:String* _ EOL
  {
    return content
  }

_ "whitespace"
  = [ \t\n\r]*

String
  = value:[a-zA-Z0-9.(): _-]+
  {
    return value.join('') 
  }

EOL
  = [*] _ 

Erwartetes Verhalten:

Ich würde erwarten, dass PEG.js ein Array mit 2 Elementen für jede G04 -Zeile erzeugt.

Tatsächliches Verhalten:

Der folgende Fehler wird geworfen:

Zeile 2, Spalte 1: Erwartetes Ende der Eingabe, aber "G" gefunden.

Software

  • PEG.js: Online-Version
  • Node.js:
  • NPM oder Garn:
  • Browser:
  • Betriebssystem:
  • Editor:

Alle 22 Kommentare

Bitte lesen Sie die Peg-Beispielgrammatiken. Hier liegt kein Fehler vor. Issue Tracker sind nicht für Hilfeanfragen gedacht. Eine der Beispielgrammatiken ist genau das, wonach Sie fragen.

Der geeignete Ort für Hilfeanfragen ist StackOverflow. Problem-Tracker sind das, was die Entwickler verwenden, um zu verfolgen, was kaputt ist, und was Paket-Repositories verwenden, um die Projektqualität zu messen.

Document
  = ClassRow+

ClassID
  = "G04"

ClassTitle
  = title:[^\n]+ { return title.join(''); }

ClassRow = 
  id:ClassID title:ClassTitle '\n'? { return { id, title }; }

Sobald Sie dies gesehen haben, schließen Sie bitte dieses Problem. Danke.

image

Der Schlüssel ist, zu lernen, PEG-Grammatiken zu lesen. Das sagt:

  1. "Ein Document ist ein oder mehrere ClassRow s."
  2. "Ein ClassID ist die feste Zeichenfolge "G04" ."
  3. "Ein ClassTitle ist ein beliebiger Text bis zum nächsten Zeilenumbruch, aber nicht darunter. Sie nennen das "Titel". Geben Sie den Titel als Zeichenfolge zurück, nicht als Array von Zeichen."
  4. "Ein ClassRow ist ein ClassID gefolgt von einem ClassRow .

Da ClassRow mit einem Zeilenumbruch endet, beginnt ein Zeilenumbruch effektiv die neue Zeile.

Ich werde StackOverflow für meine weiteren Fragen verwenden, danke für die Antwort und die Erklärungen.

Es gibt jedoch einige Dinge, die ich zum Ausdruck bringen möchte:

  1. Der Teil "Problemtyp: Frage: [ja/nein]" ist in Bezug auf die von Ihnen erwähnte Richtlinie etwas irreführend. Ich interpretierte diesen Abschnitt als "Der Issue-Tracker ist der richtige Ort, um Fragen zu stellen".
  2. "Beispiele": Ich kann 4 Beispielgrammatiken im Ordner examples/ sehen. Allerdings ist meiner Meinung nach keiner von ihnen (einfach genug) für Anfänger (wie ich oder für mich) geeignet, mit Ausnahme von "arithmetics.pegjs". Ich verstehe, dass sich PEG.js in der (starken?) Entwicklung befindet, daher ist es durchaus verständlich, dass Sie sich möglicherweise mehr auf komplexe Probleme/Szenarien der realen Welt konzentrieren. Ich habe nur Schritt-für-Schritt-Beispiele von einfachen bis zu komplexen Grammatiken erwartet.

Betrachten Sie das bitte als Newcomer-Feedback.

Der Teil "Problemtyp: Frage: [ja/nein]" ist in Bezug auf die von Ihnen erwähnte Richtlinie etwas irreführend. Ich interpretierte diesen Abschnitt als "Der Issue-Tracker ist der richtige Ort, um Fragen zu stellen".

Ich stimme zu. Ich möchte diesen Text entfernen und habe 2017 darum gebeten.

Der Grund, warum Text vorhanden ist, liegt darin, dass David, der diese Bibliothek nicht mehr betreibt, es leid war, dass Leute sagten „das ist ein Fehler“, ohne sich um Probleme zu kümmern und die andere Person zu finden, die dachte, dass es einen Fehler gab, und es gab keinen

Diese Ausgabe hat zum Beispiel ein halbes Dutzend Klone

.

„Beispiele“: Ich sehe 4 Beispielgrammatiken im Ordner „examples/“. Allerdings ist meiner Meinung nach keiner von ihnen (einfach genug) für Anfänger (wie ich oder für mich) geeignet, mit Ausnahme von "arithmetics.pegjs".

Ich stimme zu. Ich möchte viele davon schreiben.

.

Ich verstehe, dass sich PEG.js in der (starken?) Entwicklung befindet

Das ist es ganz sicher nicht.

Der ursprüngliche Autor hatte es ein Jahr lang ruhen lassen, also bat er um neue Betreuer.

Der neue Betreuer, der im Mai 2017 übernommen hat, hat kein einziges Byte Code für den Master-Zweig freigegeben.

Ich habe damit begonnen, mich für eine Übernahme einzusetzen, weil die Nutzung der Bibliothek zurückgeht, die Bibliothek seit 2014 kein Javascript mehr unterstützt, es seit fast drei Jahren keine readme auf NPM gibt, AST-Korrekturen für einzelne Zeichen schon ein Jahr lang in Ausgaben unbeantwortet, und der neue Betreuer hat beschlossen, 2,5 Jahre eines Feature-Zweigs wegzuwerfen, den er als das Schließen einer Menge Ausgaben gekennzeichnet hat, und die gesamte Bibliothek durch etwas Neues zu ersetzen, das er selbst in einer anderen Sprache geschrieben hat

.

Es ist durchaus verständlich, dass Sie sich möglicherweise mehr auf komplexe Probleme/Szenarien der realen Welt konzentrieren. Ich habe nur Schritt-für-Schritt-Beispiele von einfachen bis zu komplexen Grammatiken erwartet.

Ich glaube, dass das Onboarding von Benutzern derzeit wahrscheinlich das wichtigste Problem in der realen Welt ist, nachdem diese Bibliothek wieder in Ordnung gebracht wurde

Aus Gründen der Klarheit, ich bin nicht der ursprüngliche Autor. @dmajda ist.

Aus Gründen der Klarheit, ich bin nicht der Betreuer. Es gibt keinen Betreuer.

Der Teil "Problemtyp: Frage: [ja/nein]" ist in Bezug auf die von Ihnen erwähnte Richtlinie etwas irreführend. Ich interpretierte diesen Abschnitt als "Der Issue-Tracker ist der richtige Ort, um Fragen zu stellen".

@ceremcem , du hast alles richtig gemacht (außer, dass du dir die Beschreibung von PEG auf Wikipedia nicht angesehen hast und nicht versucht hast, deine Grammatik manuell zu analysieren, wonach deine Frage, IMHO, gelöst würde). Sie können nicht wissen, dass Ihre Frage einfach eine Frage oder eine Beschreibung eines Fehlers in der Bibliothek ist. Dies kann nur der Entwickler entscheiden. Daher gibt es bei GitHub keine Regel nur für Bugs . Thema ist Thema, sogar in Afrika

Im Allgemeinen ist ein Issue-Tracker für Probleme gedacht, nicht für Fragen

Ceremcem hätte innerhalb von Stunden eine Antwort auf Stackoverflow erhalten. hier hat er neun tage gewartet, und wenn ich mich nicht gemeldet hätte, hätte er wohl keine antwort bekommen.

viele ähnliche Fragen wie diese bleiben hier nach einem Jahr oder länger unbeantwortet. es gibt ein halbes Dutzend, die acht Jahre alt sind.

.

Sie können nicht wissen, dass Ihre Frage einfach eine Frage oder eine Beschreibung eines Fehlers in der Bibliothek ist.

Ja, er kann. Er fragte: "Wie mache ich das?"

Wenn er nicht glaubt, dass der Parser dies nicht kann, ist das niemals ein Fehler.

Es ist im Grunde das einfachste, was in einem Parser möglich ist, und ich glaube, dass peg immer noch der am häufigsten verwendete Javascript-Parser ist, obwohl das schnell aufhört, wahr zu sein, und er scheint intelligent zu sein, also denke ich nicht er glaubte, dass ein Parser-Generator eine Regel nicht mehr als einmal verwenden könne

In seinem besten Interesse ist es ideal, ihn an eine Ressource zu verweisen, die für Fragen konzipiert ist, und nicht für die Bibliotheksreparatur, insbesondere wenn die Fragenressource sehr aktiv ist und die Bibliotheksreparaturressource gerade angekündigt hat, dass sie drei Jahre Arbeit versenkt und ignoriert generell Fragen wie diese

Es ist kein Zufall, dass dies unbeantwortet blieb, bis ich anfing, Leute zu taggen, wie bisher ein halbes Dutzend anderer Fragen

Es werden keine Entscheidungen getroffen. Ich gab ihm Ratschläge.

Außerdem habe ich seine Frage beantwortet .

Normalerweise bekomme ich in StackOverflow innerhalb weniger Stunden eine Antwort, also bin ich ein regelmäßiger Benutzer davon. Es gab jedoch keine Aktivitäten zu meiner SO-Frage , also kam ich und fragte hier. Grundsätzlich sind die Reaktionszeiten nahezu identisch.

Ich habe jede Kombination von Issue-Tracker-Nutzung gesehen:

  • Nur für Fehlerberichte, wenn ein separates Forum oder eine E-Mail-Gruppe bereitgestellt wird (z. B. PaperJS),
  • Sowohl für Fragen als auch für Fehlerberichte (RactiveJS <3, FreeCAD_Assembly3 <3)
  • Für etwas, das ich eigentlich nicht verstehe, zusammen mit einem separaten Forum, in dem die üblichen Verdächtigen übernommen haben und im Namen von Projektbesitzern sprechen, was mehr Frustration als alles andere verursacht (wie KiCAD (grrr))
  • Für nichts (Espruino, AFAIR). Jedes Problem wird sofort geschlossen und Sie sind gezwungen, einen entsprechenden Thread in ihrem Forum zu eröffnen.

Dafür gibt es keine einzige beste Wahl (niemand passt in jeden Fall), aber ich verwende den Issue-Tracker gerne für alles.

Sie können nicht wissen, dass Ihre Frage einfach eine Frage oder eine Beschreibung eines Fehlers in der Bibliothek ist.

Wir haben dies viele Male in der FreeCAD_Assembly3-Bibliothek gesehen. Viele meiner einfachen, dummen Fragen deckten einen oder mehrere Fehler auf. Das passiert, habe ich gesehen.

Ich stimme zu. Ich möchte viele davon schreiben.

Ich mag Ihre Herangehensweise an diese Bibliothek. Sie scheinen sich sehr darum zu kümmern.

Ich glaube also nicht, dass er glaubte, dass ein Parser-Generator eine Regel nicht mehr als einmal verwenden konnte

Richtig. Meine Absicht war kein Fehlerbericht. Ich habe einfach keinen Ausweg gefunden, dieselbe Regel für mehrere Zeilen wiederzuverwenden.

Es gab jedoch keine Aktivitäten zu meiner SO-Frage, also kam ich und fragte hier.

Oh Mann, ist die Peg-Community dort auch gestorben?

Das ist so traurig ☹️

Okay, wenn Sie bereits einen SO-Beitrag erstellt haben, dann sind Sie an diesem Punkt zu 100% richtig, wenn Sie hierher kommen

.

Ich habe jede Kombination von Issue-Tracker-Nutzung gesehen:

Ja, Menschen verletzen ständig Gemeinschaftsnormen

.

Ich stimme zu. Ich möchte viele davon schreiben.

Ich mag Ihre Herangehensweise an diese Bibliothek. Sie scheinen sich sehr darum zu kümmern.

Sehr viel. Ich wollte am Eigentümerwechsel 2017 beteiligt sein, aber jemand gab einen Plan mit 17 Hauptversionen vor, und der alte Eigentümer glaubte ihnen

Diese Person gab ihre erste kleinere Veröffentlichung drei Jahre später auf.

Die Wahrheit ist, dass öffentliche Software wirklich schwer zu schreiben ist. Fast jeder, den ich kenne, einschließlich mir selbst, neigt dazu zu sagen: „Diese Veröffentlichung ist nicht fertig, bis X, Y und Z fertig sind.“

Und als Y fertig ist, stellen Sie fest, dass Sie auch V und W brauchen.

Und als Z fertig ist, stellen Sie fest, dass Sie auch S, T und U brauchen.

Und dann, als V fertig ist ...

So begann 0.11.0 2017 mit einem halben Dutzend Funktionen und starb 2020 mit hundert Zusammenführungen, die im Tracker fälschlicherweise als geschlossen markiert wurden

Teil der Disziplin öffentlicher Software sind häufige, kleine Releases. Das war bei Peg immer ein Problem, aber die Qualität der Software war so hoch, dass wir es trotzdem in Kauf genommen haben.

Dann ging dmajda, und alles hörte einfach auf.

Und wir haben geduldig lange gewartet.

Aber der Neue nennt das jetzt sein Hobbyprojekt und sagt, er habe das Ganze zugunsten von etwas Neuem und Inkompatiblem, das er geschrieben habe, verschrottet. Und selbst wenn es denselben AST und denselben Funktionsumfang und mehr hätte, stünden keine zehn Jahre Community-Debugging dahinter, und ich könnte nicht wechseln

Und wissen Sie, wenn er einen neuen, leistungsfähigeren PEG-Parser schreiben will, gut, großartig, machen Sie weiter.

Aber er kann diesen hier nicht töten, indem er vorgibt, ein Betreuer zu sein, ihn dann aber nie pflegt, dann die Bibliotheksgemeinschaft und Position dieses einen übernimmt und seine eigene, niemals veröffentlichte Software an ihre Stelle setzt

Es ist an der Zeit, dass ein gesunder Prozess wieder die Oberhand gewinnt. Der neue Betreuer hat eine Mikro-Community von Junior-Entwicklern aufgebaut, und sie plädieren tatsächlich dafür, die Bibliothek tot zu halten, anstatt sie zu retten

Es ist klar, dass Veränderungen dringend erforderlich sind

.

Ich habe einfach keinen Ausweg gefunden, dieselbe Regel für mehrere Zeilen wiederzuverwenden.

Wenn Sie wieder Probleme haben, Antworten zu finden, können Sie mich gerne persönlich markieren

Das heißt, im Allgemeinen google ich nach Beispielen, und weil diese Bibliothek einst so beliebt und stark genutzt war (und es wieder werden kann, wenn die aktuellen Bibliotheksmörder nur Platz für eine andere Person auf der Bank machen, um zu helfen), gibt es mehr als genug Beispiele da draußen, um die Dinge abzudecken, die Sie finden müssen

Im Allgemeinen hätte ich mir jedoch gewünscht, dass mir jemand gesagt hätte, als ich neu war, das, was ich unter dem Kommentar gesagt habe, der mit „Der Schlüssel ist, PEG-Grammatiken lesen zu lernen“ beginnt.

Sobald Sie lernen, PEG-Grammatiken in dieser Diskussionsform zu lesen, wird es auch sehr einfach, darüber nachzudenken, und an diesem Punkt sind sie plötzlich trivial einfach zu schreiben

Es ist wie ein Lichtschalter. Keine Rampe. Direkt von unmöglich zu einfach

Es ist wie ein Lichtschalter. Keine Rampe. Direkt von unmöglich zu einfach

Du hast mich ermutigt! :) Ich sollte mich also nicht so dumm fühlen, wenn ich nur ein paar "Kauderwelsch"-Regelsätze sehen konnte :)

Wenn Sie wieder Probleme haben, Antworten zu finden, können Sie mich gerne persönlich markieren

Ich möchte das nicht missbrauchen, also wird es jedes Mal schwer zu entscheiden, ob es sich lohnt zu fragen oder ob ich noch etwas im Internet suchen soll. Das war ein großzügiges Angebot, danke.

Es ist klar, dass Veränderungen dringend erforderlich sind

Ich sehe, dass Sie den Abschnitt "Probleme" in Ihrem Fork aktiviert haben. Das ist immer ein gutes Zeichen dafür, dass man versucht, ein Verkehrsflugzeug zu fliegen, indem man ins Cockpit eilt, während man nur ein Passagier war. Das ist gut.

Wenn es eine lebendige Wasserquelle gibt, wird sie immer ihren Weg finden, um zu fließen, egal was Sie auf den Weg bringen. Wenn es keinen Fluss gibt, weil seine Quelle entleert ist, gibt es nichts zu tun. Quelle ist die Nachfrage. Ihre Haltung zeigt, dass die Quelle des Wassers sehr lebendig ist.

Also bin ich neugierig, warum übernimmst du nicht einfach? Das habe ich für die Ladebalkenbibliothek getan. Mir wurde klar, dass die Entwicklung ins Stocken geraten ist, also habe ich übernommen, indem ich die Probleme angegangen bin, angefangen bei meinen eigenen, und Pull-Requests für jeden Branch erstellt habe. Einige Zeit später beschloss der ursprüngliche Autor, seine Arbeit fortzusetzen, und wir konnten loslegen. Halten Sie das für eine praktikable Lösung?

Du hast mich ermutigt! :)

Ich bin froh.

.

Es ist wie ein Lichtschalter. Keine Rampe. Direkt von unmöglich zu einfach

Ich sollte mich also nicht so dumm fühlen, wenn ich nur ein paar "Kauderwelsch"-Regelsätze sehen konnte :)

Nö. Parser sind ein extremer Fall von "es ist einfach lächerlich und dann ist es plötzlich einfach".

Hier ist der Kicker – vergleichsweise einfach ist Peg ziemlich einfach. Die anderen sind oft einfach brutal.

Es gibt meiner Meinung nach vier große Probleme beim Lernen von Peg.

  1. Es gibt kein wirklich gut strukturiertes Einführungsmaterial
  2. Es gibt viele Beispiele auf mittlerem Niveau, aber Sie müssen gut bei Google sein, um sie zu finden
  3. Da gibt es auch schlechte Beispiele und es braucht Erfahrung, um sie identifizieren zu können
  4. Man muss „so denken“ können, und das geht nicht sofort

Ich habe überlegt, ein paar Video-Tutorials zu machen. Sie würden das _weit_ leichter verständlich machen, glaube ich.

.

Ich möchte das nicht missbrauchen, also wird es jedes Mal schwierig sein, zu fragen, ob es sich lohnt zu fragen

Einmal die Woche ist in Ordnung. Verstehen Sie, dass ich manchmal langsam reagiere

.

Ich sehe, dass Sie den Abschnitt "Probleme" in Ihrem Fork aktiviert haben. Das ist immer ein gutes Zeichen dafür, dass man versucht, ein Verkehrsflugzeug zu fliegen, indem man ins Cockpit eilt, während man nur ein Passagier war. Das ist gut.

Ich habe kaum angefangen. Zuerst möchte ich sehen, ob das echte Repo gerade gerettet werden kann

Dies von einer Fork aus zu tun, wäre obszön schwieriger. Ich würde alle PRs und alle Querverweise und das gesamte geschlossene, nicht zusammengeführte oder geschlossene gelöschte Material verlieren, von denen einige sehr wertvoll sind

.

Also bin ich neugierig, warum übernimmst du nicht einfach?

Ich möchte gerne.

Zu diesem Zeitpunkt liegen die relevanten Passwörter und die Authentifizierung in den Händen einer Person, die noch antworten muss.

Wir werden sehen.

.

Mir wurde klar, dass die Entwicklung ins Stocken geraten ist, also habe ich übernommen, indem ich die Probleme angegangen bin, angefangen bei meinen eigenen, und Pull-Requests für jeden Branch erstellt habe

Dies ist ein Sonderfall

Was veröffentlicht wird, ist 0.10.0

Der neue Betreuer ließ den 0.11.0 -Zweig drei Jahre lang unbegrenzt wachsen und entschied dann, dass er zugunsten eines 0.12.0 $-Zweigs, den er isoliert von Grund auf neu schreibt, eingestellt wurde

Es gibt nichts, was man PRs zumuten könnte. Was in npm steht, stammt aus dem Jahr 2017, und was in github unter dem neuen Betreuer steht, wird nach drei Jahren, ohne jemals veröffentlicht zu werden, gestrichen

.

Einige Zeit später beschloss der ursprüngliche Autor, seine Arbeit fortzusetzen, und wir konnten loslegen. Halten Sie das für eine praktikable Lösung?

Wenn der Ersatzbetreuer bereit ist, dies zuzulassen, ist dies ungefähr genau das, was ich will.

Ich bezweifle irgendwie, dass David zurückkommen wird, aber wenn er es tut, wäre das fantastisch

Als solches möchte ich daraus wieder ein Standard-Open-Source-Projekt machen

Was sind Ihrer Meinung nach die 3 wichtigsten Themen hier?

Ich denke, es ist ein wenig gefährlich zu sagen, was für mich die wichtigsten Themen sind, denn es gibt hier eine ganze Reihe von Leuten mit mehr Erfahrung als ich in peg , und wenn sie sagen: "Eigentlich ist es diese andere Sache, „Wahrscheinlich höre ich zu.

Zu diesem Zweck möchte ich darauf hinweisen, dass ich zwar gerne hier entwickle, mein Interesse hier aber als Betreuer gilt .

Das ist, glaube ich, etwas, was viele Leute nicht verstehen: Entwicklungs- und Wartungscode sind wirklich, wirklich unterschiedlich.

  • Development coding will große neue Ideen, neue Funktionen, neue auffällige Ideen.
  • Maintenance coding möchte kleine Probleme beheben, bevor sie sich ansammeln und etwas Gutes unbrauchbar machen.

Ich bin gerne bereit, Entwicklungscode zu übernehmen - vielleicht freue ich mich sogar darauf -, aber es gibt hier andere Leute, die dafür besser geeignet sind. Und deshalb möchte ich klarstellen: Mein eigentliches Ziel ist es, dass sie wieder wie früher PRs beisteuern können.


Das heißt, um zu zeigen, was meine persönliche Sichtweise ist:

1. Eine regelmäßige Release-Kadenz zurückbekommen

peg.js darf nie wieder einen magischen Zweig haben. Es ist wie der verdammte Eine Ring. Es klingt großartig und kraftvoll, aber es funktioniert verdammt noch mal nicht, und am Ende bist du Gollum. Das ist nicht svn . In der Stimme von Steve Ballmer feature branches , feature branches , feature branches , feature branches .

Eine Version sollte das Ergebnis eines Features sein, kein Sammelpunkt für einen Funktionsplan. Wir sind kein Unternehmen aus den 1980er Jahren und wir sollten auch nicht wie eines planen.

Die einzige Zeit, in der mehr als ein Feature gleichzeitig integriert werden sollte, ist, wenn es unvermeidlich ist, wie z. B. als Ergebnis des Patchens von Features zur Bewältigung eines externen Upgrades oder von Dingen, die wirklich nicht getrennt werden können. Oh, du denkst, das hängt mit einer anderen Funktion zusammen? Großartig, geben Sie es in 2.31.0 ein, wir müssen 2.29.0 rausholen und das andere Ding da drüben ist wahrscheinlich 30 .

Die Leute haben Minderjährige behandelt, als wären sie Majors. Deshalb kam der Minderjährige nie heraus: Er wurde in die gleiche Verhaltensfalle gehängt, die Majors aufhängt. Tu das einfach nicht verdammt noch mal ™.

Um genau zu sein,

  • Die Menschen haben, glaube ich, weitgehend den Glauben verloren, dass diese Bibliothek noch existiert.
  • Drei Monate lang wöchentliche Veröffentlichungen würden die Leute dazu bringen, ihm eine weitere Chance zu geben.

    • Drei Monate wöchentliche Veröffentlichungen wären eigentlich super einfach zu erreichen

  • Wenn wir nicht nur 0.12.0 herausbekommen würden, sondern auch 0.13.0 – und bemerken, dass ich nicht sage, was drin ist, und ich denke, es spielt keine Rolle – dann würden wir es tun haben Sie eine echte Chance auf 1.0.0
  • Wenn man hier nur die offenen und geschlossenen PRs durchgeht, gibt es eine riesige Menge an Kraft und Schönheit, mit einem Kommentar aus dem Jahr 2015 oder so wie „Ich werde mich später darum kümmern“. Eine großzügige Person zu sein und Raum zu finden, Autorität zu teilen, würde peg helfen, nicht nur zum Leben zu erwachen, sondern aufzublühen
  • Insofern möchte ich nicht der Künstler sein. Ich möchte Kuratorin werden.

2. Bringen Sie die Dokumentation und das Testen an einen akzeptablen Ort

Alle reden darüber, aber meine Hobby-Zustandsmaschine hat derzeit 3500 Unit-Tests und 100% Dokumentationsabdeckung, also nimm mich ernster.

Ich glaube wirklich fest ans Testen.

Es gibt eine andere Bibliothek, die ich geschrieben habe und die halb so groß und deutlich weniger komplex ist als die Zustandsmaschine. Es ist viel einfacher, umfassende Sprachänderungen an der Zustandsmaschine vorzunehmen als kleine Änderungen am Netzwerkhandler, da der Netzwerkhandler schlecht getestet ist und Sie sich wirklich anstrengen müssen, um sicherzustellen, dass etwas richtig ist.

Der FSM? Nein, die Tests sind großartig, sie werden dich erwischen

Dieser spezifische Kontrast erinnert mich jedes Mal, wenn ich einen von ihnen berühre, in brutaler Klarheit daran, wie wichtig Tests tatsächlich sind, damit etwas, zumindest für mich, vertrauenswürdig ist.

Ich denke, ein wirklich großer Teil des Problems bei der Arbeit an peg.js ist, dass das Testen und die Dokumentation in Trümmern liegen. Ich denke, es ist an der Zeit, dass sich das ändert.


3. Entfernen des Hipster-Unsinns.

  • Ich bin kein Ruby-Mensch, aber die Ruby-Leute haben einen echten Punkt in Bezug auf die Konfiguration nach Konvention. Ich kenne Ruby überhaupt nicht, aber ich kann mich trotzdem hinsetzen und wissen, wie ein Projekt funktioniert, weil sie alle so funktionieren, und wenn ich etwas nicht bekomme, kann ich jemanden fragen, und sie brauchen keinen Zugriff, weil so funktionieren sie alle
  • peg steht in dieser Hinsicht vor vier Problemen

    1. peg ist eine extrem frühe javascript -Bibliothek, die eine ganze Reihe grundlegender Entscheidungen getroffen hat, bevor es Gemeinschaftsnormen gab. Tatsächlich sind mehrere Gemeinschaftsnormen auf David zurückzuführen; Vor Peg dachten viele Leute, Multipacking sei schwierig, und jetzt, wo einer der Vorreiter in dieser Hinsicht problematisch in der gleichen Hinsicht zurückliegt, ist es irgendwie herzzerreißend. Das heißt, zusätzlich zu den brillanten Dingen, die David vor der Zeit richtig gemacht hat, hat er einige Dinge falsch gemacht, und einige Dinge, die damals richtig waren, sind es nicht mehr. Viele kleine Änderungen würden zu einer radikalen Änderung der Entwicklererfahrung führen.

    2. Gemeinschaftsnormen sollten wieder eingeführt werden.



      1. Es gibt nur bestimmte Möglichkeiten, wie ein node -Projekt funktionieren soll. Dazu gehört auch die Erstellung browserspezifischer Ausgaben, und daher ist ein Node-Projekt eindeutig die richtige moderne Arbeitsweise


      2. Dies ist immer noch ein Browser-Projekt mit handgemachter Automatisierung. Das sollte sich ändern


      3. Es ist eine erhebliche Lernherausforderung, in die Lage zu kommen, die README korrekt zu bearbeiten. Nach drei Jahren hat der aktuelle Betreuer es immer noch nicht geschafft (!), und der ursprüngliche Entwickler in den letzten beiden Versionen auch nicht





        • Das ist albern. Teile des Projekts, die trivial sein sollten, gehen kaputt, weil sie nicht auf die einfache, normale Weise durchgeführt werden. Sie sollten auf einfache, normale Weise erledigt werden, aber das erfordert jemanden, der Node kennt und bereit ist, langweilige Arbeit zu erledigen.






    3. peg ist sowohl Nutznießer als auch Opfer extremer Automatisierung.



      • Es ist wahrscheinlich, dass dmajda ohne ihn nicht so weit gekommen wäre. Ich kann auf keinen Fall meine Sachen anziehen.


      • Dies ist jedoch die Automatisierung von 2011, nicht die Automatisierung von 2020


      • Es ist auch die Automatisierung von 2013, 2014, 2016 und 2018. Dieses Zeug ist über Zeit, Now, Github-Seiten, ein persönliches Yahoo-Konto, Gitlab, mehrere seltsame Tracking- und Auto-Deploy-Dienste und wahrscheinlich eine Menge Dinge verteilt, die ich noch nicht gefunden habe


      • Es ist nur Werkzeugvernichtung, um entweder einen Zusammenbruch zu überleben oder mit dem heißen neuen Ding zu spielen. Sorgfältige Werkzeugauswahl führt zu Beständigkeit durch Design. Der eigentliche repl ist jetzt fast zehn Jahre haltbar. Alles andere kann es auch sein, wenn "ooh shine" als rote Fahne behandelt wird.


      • Dies sollte nach gh pages und gh actions verschoben werden, was jeder versteht, und für immer in Ruhe gelassen werden



    4. Der neue Maintainer entschied sich dafür, tief in ungewöhnliche Tools und marginalisierte Strategien einzutauchen. Infolgedessen müssen Sie einen neuen Paketmanager installieren , um Fehlerkorrekturen beizusteuern, und ein ungewöhnliches Quelllayout lernen, das auf verwirrende Weise mit einem nicht verwandten Quellsatz koexistiert, der im regulären Quelllayout das echte Produkt zu sein scheint.



      • Als ein Dritter einen Fix beisteuerte, der es dem Standard-Sprachpaketmanager ermöglichte, auch zu funktionieren, lehnte er ihn ab.


      • Diese Art von Verhalten ist, ehrlich gesagt, in einem Gemeinschaftsprojekt inakzeptabel. Es macht es viel schwieriger, zu der Bibliothek beizutragen.


      • Einige dieser extremistischen Werkzeuge wurden durch andere extremistische Werkzeuge ersetzt, also greift er nicht nach Dingen, die er kennt; er probiert dinge aus. In der Zwischenzeit warten wir drei Jahre lang auf Grundlagen wie Rechtschreibfehler im AST, wie die Behebung von readme auf npm oder die Zusammenführung es6 modules .


      • Ehrlich gesagt, bei einem 0.12.0 -Rebake würden Dinge wie das Modul in Modul-Garn-Zeug einfach herauskommen. Davids Build-Zeug funktioniert seit 2011. Das neue Zeug von 2018 ist bereits 2020 kaputt. Keine Dilettanten-Technik mehr.



  • UND KANN ICH BITTE EINEN ES6-EXPORT ERHALTEN?

aber Sie werden feststellen, dass es bei keinem davon wirklich um die Software an sich geht

Ich glaube nicht, dass die Software hier das Problem ist

Ich denke, der Prozess ist, und in geringerem Maße, das Projekt

Das werde ich beheben, wenn @futagoza es zulässt

Diese Bibliothek kann in 30 Tagen wieder zum Leben erweckt werden, wenn wir unseren Stolz herunterschlucken und die Bedürfnisse der großen Community der Bibliothek über unsere Hobbyprojektinteressen stellen

Lassen Sie das Hobby neu schreiben die Gabel sein

Lassen Sie einen Betreuer mit der Wartung beginnen

@StoneCypher Ich mag deine Energie :-) Ich habe in der Vergangenheit (zu Zeiten von dmajda) Pegjs verwendet und es hat mir sehr gut gefallen.

Gabeln Sie es einfach und kämpfen Sie nicht. Die Dinge können und werden sich später beruhigen. Wenn Ihnen die Community folgt, müssen Sie sich nicht um vorhandene "Schlüsselhalter" oder ähnliches kümmern. Der Aufbau von Reputation braucht Zeit, ist aber notwendig. Verschwenden Sie keine Zeit mehr mit Streiten.

Acht, deine Gabel wird es irgendwann in der Zukunft "zurück in den Ursprung" schaffen oder sie wird ein Eigenleben haben. Beide Optionen sind gültig und fein IMO.

Bitte hör auf mit dem "Make a Fork"-Bullshit. Es gibt vier von ihnen und Sie wissen nicht, was sie sind. Ein Fork rettet keinen der bestehenden Downstream-Konsumenten, rettet nicht die PRs, rettet die Issues nicht, trägt die Community nicht und ist nicht sichtbar.

Das versuchen die Leute seit drei Jahren. ES FUNKTIONIERT NICHT.

Geben Sie diesen Rat nicht weiter.

@futagoza - alle haben aufgegeben, dass du das Richtige tust. Fünf Leute haben mir gesagt, ich soll die Bibliothek forken, weil sie erwarten, dass Sie die Reparatur verweigern und die Kontrolle über die Bibliothek behalten, die Sie töten.

Ich glaube, der Grund, warum sie das erwarten, ist, dass ich mehr als ein Dutzend Leute gefunden habe, die dir Hilfe anbieten, um das zu tun, was du versprochen und nie getan hast, und jedes Mal, wenn du sagst: „Nein, ich werde es bald tun. "

Tun Sie, was Sie 2018 hätten tun sollen, und geben Sie die Wartung an jemanden weiter, der das Projekt tatsächlich aufrechterhalten wird. Hören Sie auf, diese Bibliothek zu töten, hören Sie auf, diese Community zu töten, und gehen Sie aus dem Weg.

@StoneCypher John, als ich vorschlug, einen Fork zu erstellen, meinte ich es wirklich so. Das Forken eines Projekts ist eine großartige Option, die Ihnen Open Source bietet, insbesondere wenn Sie das Gefühl haben, dass Änderungen erforderlich sind oder es stirbt. Und nein, ich habe kein Problem, du musst mir keine DM schreiben, nur um mir diese Frage zu stellen.

Als ich sagte "Gib diesen Rat nicht noch einmal", habe ich es auch wirklich so gemeint.

Ich liebe dieses Gespräch.

@StoneCypher Ich muss dir hier widersprechen, weil ich genau das Gegenteil gesehen habe:

  1. Ich beschloss, FreeCAD zu lernen. Allerdings gab es ein Problem: Das „Montagemodul“ war nicht vollständig, sodass wir kaum komplexe Baugruppen erstellen konnten, was es für professionelles Arbeiten unbrauchbar macht.
  2. Ein Typ, realthunder hat beschlossen, dieses Problem zu lösen. Er musste einige Kerneigenschaften ändern, um das Ziel zu erreichen, was wiederum dazu führte, dass sein Fork mit der Mainstream-Branche inkompatibel wurde. Er verlor alle Benutzer, fast die gesamte Community. Außer ein paar Leuten hatte er keine Unterstützer (so sehe ich das). Soweit ich verstanden habe, hatte er auch keine aktiven Benutzer.
  3. Ich habe mir seine Dokumentation angesehen ¹ und trotz des Jahrs des Stillstands in der Entwicklung (das war, was ich damals gesehen habe) habe ich nachgerechnet (eine interessante Rechnung) und beschlossen, es zu versuchen.
  4. Ich stellte viele, viele Fragen¹ und er beantwortete sie geduldig. In der Zwischenzeit habe ich mir Notizen zu dem gemacht, was ich gelernt habe , und so ein gutes Einführungsmaterial erstellt.
  5. Die Leute rieten ¹ davon ab, seinen Zweig zu verwenden, indem sie behaupteten, er sei der einsame Autor und Betreuer und seiner Arbeit sollte in Bezug auf Nachhaltigkeit nicht vertraut werden. Ich habe sie einfach ignoriert.
  6. Seine Pull-Anfrage wurde lange Zeit (ungefähr ein Jahr oder so) nicht mehr zusammengeführt.

In letzter Zeit wurde seine PR überprüft. Es wurde viel Arbeit geleistet und endlich werden seine Branche und der Mainstream kompatibel. Ich glaube, dass sein Zweig in der nächsten Veröffentlichung in den Mainstream integriert wird.

Inzwischen gab es ein ernstes finanzielles Problem. Er war der einzige Betreuer und Spenden von ein paar Benutzern konnten ihn nicht überleben lassen. Ich beschloss, FreeCAD/Assembly3 hier in der Türkei zu unterrichten und den Support zu verkaufen, um die Finanzierung zu unterstützen. Ich habe ihn vorgeschlagen und dies wird angenommen. Ich habe alle notwendigen Anträge gestellt, um Trainer in einer hoch angesehenen Stiftung zu werden, die kürzlich angenommen wurde.

Manchmal reicht 1 Person aus, um ein Feuer zu entzünden.

und aus dem Weg gehen

Verschiedener Meinung sein. Lass sie auf dem Weg bleiben. Eine gute Motivation findet immer ihren Weg. Wenn nicht, dann weil es nicht so gut war.

Ich hole ausdrücklich und eindeutig keine Ratschläge zu diesem Thema ein.

Diese Bibliothek muss wiederbelebt werden. Es tut mir leid, wenn ich es nicht ausreichend erkläre, aber die Antworten, die ich erhalte, gehen nicht auf die geäußerten praktischen Bedenken ein.

Das Leben und die Arbeitsplätze der Menschen hängen davon ab.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen