Package: pgn4people-poc
pgn4people: A better way to view PGN chess games (proof-of-concept demo)TL;DRA chess game’s PGN can be very difficult for humans to read, parse, navigate, and edit. It can be a messy maze that is easy to get lost in, particularly when there are long and/or deeply nested variations, subvariations, sub-subvarations, etc. And common chess interfaces don’t help enough.pgn4peopleprovides an alternative paradigm that embracesjust-in-time complexity: show the user only as much of the mess as is relevant to herright that moment.pgn4peopleis especially useful for opening repertoires. Currently, players break their repertoires into many (even hundreds) of separate PGN files simply because it’s not feasible to navigate the lines of an entire repertoire from within a single PGN. But that’s due to aninterface failure, not the inherent complexity of chess. Withpgn4people, displaying and navigating through the entire repertoire represented by theEncyclopædia of Chess Openings (ECO)or   Nick De Firmian’s equally encyclopedicModern Chess Openings (MCO)would appear no more complicated to the user than would displaying a single annotated game with variations only one level deep.Currently,pgn4people-pocis just a demo, just a proof of concept. (That’s what the “-poc” in pgn4people-poc stands for.) Andpgn4people-pocis not intended to ever replace any current chess website or application software. Instead, the hope is thatpgn4people-pocwill inspire the developers of current chess websites and applications to add—as an option—pgn4people’s approach to displaying PGN. (Of course, please excuse the crude command-line interface. That isnotan intended part ofpgn4people, it’s just an artifact of this quickly coded demonstration project,pgn4people-poc.)OverviewIn contrast to most repositories, this README will focus much more on thewhyandwhatbut much less on thehow:pgn4peopleproposes a radically different interface for viewing and navigating through PGN. Any proposal for radical change should be accompanied by a clear, comprehensive, and compelling critique of the status quo to be replaced. Thus I spend a lot of time here on thewhy.Thewhattells you what using this new interface is like. This is an important consideration. Whether to preferpgn4peopleover the status quo is almost solely a question of whether you see the value in thiswhat.Thehowofpgn4people’s implementation is of less relevance. I wrotepgn4peoplefrom scratch in Python for this proof of concept, but its interface paradigm would be relevant to any chess app/site regardless of its frontend or backend technologies.pgn4peopleisn’t meant to inspire primailynewapps or websites, it was motivated by wanting to inspire developers ofalready existingapps and websites toaddpgn4peopleas an electable feature.Existing apps and websites differ greatly in the details of how they implement their PGN-display/navigation features; I can’t give any useful guidance on incorporatingpgn4peopleinto any particular app or website. But there’s no need: After seeing thewhat, any particular developer will see almost instantly how to implementpgn4peoplein their product. Doing so requires combining only tools and techniques already present in their code.The next section of this README isContext, which provides thewhy. It discusses:Portable Game Notation (PGN). Since you’re reading this in the first place, you might well know enough about PGN to skip that discussion.The problem addressed: PGN was designed to be read by computers, not people. Unless you’re already convinced that traditional PGN interfaces kind of suck for navigating complex game trees, I recommend looking at this section.Survey of the better existing interfaces. In particular, the example of Lichess’s Study facility attempting to display meaningfully a test PGN file is good to keep in mind before you see inthe following sectionhow very differentlypgn4peoplepresents the same file.The next section after Context is thewhat:The pgn4people interface approach. If you’re already familiar with status quo PGN interfaces and their frustrations, feel free to jump here directly.After you read this section, and consider the example of usingpgn4peopleit gives, you’ll understand what thepgn4peopleparadigm is all about. You don’t need to actually install and run the code to fully understandpgn4people.However, if you do want to play with the program, everything you need to know is atPlaying around withpgn4people-poc.Then what? If you wish that your favorite FILL IN THE ___ chess software or website offeredpgn4people’s paradigm for navigating PGN:If you’re the developer, implement it! I bet that, once you’ve seen the examples here, you’ll know exactly how to implement it in your own code. But of course feel free toask me questions.If you’re not the developer, email them and point them towardthis README file. Lobby them to implementpgn4peoplein their application/website. Let them know how helpful you’d find it.If you have any remaining questions, see theFAQs:Why do some rows of the variations table have only a White move or only a Black move, but some rows have both a White move and a Black move?What does the color coding of the halfmoves in the output ofpgn4people-pocsignify?Why is it important/helpful to promote the chosen alternative to be the new (temporary) main line?What about text comments (annotations)? Aren’t they just as much a usability disaster as deeply nested variations? Butpgn4people-pocdoesn’t even consider them?!How can I substitute my own PGN file for the default PGN file?How doespgn4peoplecompare to ChessTempo’s PGN Viewer?How doespgn4peoplecompare to a standard “Opening Explorer” interface?If the FAQs don’t cover it,contact me.ContextPortable Game Notation (PGN)The moves of a chess game are recorded and published usingPortable Game Notation(PGN). In order to specify and/or discuss moves different from those actually played in the game, the PGN standard is enhanced withRecursive Annotated Variations(RAV), which permits the insertion of alternative strings of moves, possibly nested many levels deep, inside parenthetical strings. Essentially all chess websites (e.g.,Chess.comandlichess) and apps (e.g.,HIARCS Chess Explorer,Scid vs. PC/Mac, andChessBase) allow a user to import PGN for a game or to export PGN from a game.Chess players do not always deal entirely directly with raw PGN but rather through an interface that hides or suppresses the raw PGN. In many cases, users wanting towatch a live gameorplay through a previously played game—even possibly explore its alternative sidelines—can do so without ever interacting directly with the PGN itself by using a graphical interface of the chessboard.However, when a chess player wants toanalyze andannotateher game, she needs to be able to understand and navigate through the PGN in order to add text-comment annotations and to enter variations. Another important use case isdeveloping an opening repertoire, whereby a player specifies her chosen responses to potential moves of opponents in the opening.Traditional interfacestypically combine both (a) a graphical representation of a chessboard, where the pieces move to reflect progressing through the PGN and on which the user can move the pieces to effect changes to the PGN, and (b) a large-ish text field through which the user views, scrolls, and interacts with the PGN itself. (See graphic immediately below.)The problem addressed: PGN was designed to be read by computers, not peoplePGN was developed, first and foremost, fordata interchange, primarily between nonhumans, in order to address compatibility problems between computer programs. As thePGN standardnoted in 1994:Computer usage among chessplayers has become quite common in recent years and a variety of different programs, both commercial and public domain, are used to generate, access, and propagate chess game data. … Unfortunately, many programs have had serious problems with several aspects of the external representation of chess game data. Sometimes these problems become more visible when a user attempts to move significant quantities of data from one program to another; if there has been no real effort to ensure portability of data, then the chances for a successful transfer are small at best.Thus:PGN is proposed as a universal portable representation for data interchange. The idea is to allow the construction of a family of chess applications that can quickly and easily process chess game data using PGN for import and export among themselves.(OK, saying that “PGN was designed to be read by computers, not people” isn’t quite fair, because I’m cherry picking a little 😉, but it does capture a reality, particularly when the PGN of a game is deeply nested with long variations. ThePGN standarddoes allege that “PGN is structured for easy reading and writingby human usersand for easy parsing and generation by computer programs.” However, as I illustrate below, readability by humans was a lower priority that is sometimes sacrificed. And that’s OK, because as the standard also states: “PGN is not intended to be a general purpose standard that is suitable for every possible use; no such standard could fill all conceivable requirements.”)Annotated chess games, and particularly opening repertoires, can be structurally very complex (in a game-tree sense) in that the variations become deeply nested: play at some position can branch off with multiple possible moves and each of those moves may branch off into multiple replies, … , and so on, almostad infinitum. PGN encodes any variation as aninterruptionof the line from which it sprung. These interruptions can separate—by a great distance in the PGN code—two moves that in a chess sense are actually adjacent. For example, in a Black repertoire where the main line started with the Sicilian Defense, 1.e4 c5, all of the repertoire’s analysis against both 1.d4 and 1.c4 would interrupt the two first halfmoves that in a chess sense are adjacent: 1.e4 1…c5. (See graphic immediately below.)This separation can be yawningly cavernous. See, for example, the next graphic, which is taken from an example PGN that is supplied withpgn4people-poc, where the analysis of 1.d4 and 1.c4 separates these two moves by about80 linesin a text file. In traditional interfaces, the user would have to navigate through all of those irrelevant variations just to follow the main line.The usability of traditional interfaces doesn‘t scale well with increases in structural complexity. When the variations, subvariations, and subsubvariations, … are highly nested, it can be very difficult for the user to follow the game, for example:To get an overall sense of where a particular move lies in the game treeTo figure out where in the PGN the resumption of a given line is, when that line is interrupted by one or more—potentially quite long—variations and their subvariationsTo figure out how to find a particular different line that branched off earlierTo figure out how to get to a particular different variationTo figure out what the alternative moves are at any pointTo figure out what the path of choices were that led to the current positionThe deep-nesting problem is particularly severe when developing an opening repertoire—so much so that players reflexively break what should be a single “game” for a Black repertoire or a White repertoire into numerous—even hundreds of—individual PGN files, just because it would be intractable—withcurrenttools—to work with an entire reportoire housed in a single PGN file. I submit, however—and this is the premise ofpgn4people—that this is aninterfaceproblem, not an inevitable result of the inherent complexity of the game of chess.Survey of the better existing interfacesSome of the better interfaces, such asHIARCS Chess Explorer Pro,Scid vs. PC/Mac, andLichess.org’s ‘Study’ facility, admirably try to deal with the complexity of deeply nested variations by (a) displaying the main line of White’s and Black’s moves as two columns and (b) organizing the nesting of variations with successive levels of indentation. But indentation, while helpful at low levels of hierarchical depth, doesn’t scale well with increased levels of nesting. Each level of indentation squeezes the text into a narrower and narrower column on the right side of the window. Eventually, there’s no room for an additional level of nesting. (See the graphic immediately below showing an example using Lichess’s Study facility.) See also the FAQ“How doespgn4peoplecompare to ChessTempo’s PGN Viewer?”.Thepgn4peopleinterface approachIn favorable contrast to even the best traditional interfaces, the usability ofpgn4peoplescales essentially perfectly with increased levels of nesting. In fact, the interface for displaying the entire repertoire represented by theEncyclopædia of Chess Openings (ECO)or Nick De Firmian’s equally encyclopedicModern Chess Openings (MCO)would appear no more complicated to the user than would displaying a single annotated game with variations only one level deep.The problem with traditional interfaces arises in part because they insist on presenting to the reader the full complexity of the entire game all at once, rather than only that part of the complexity that is relevant to the user at any particular moment, and that unneeded complexity obfuscates the immediately relevant structure of the game. In opposition to that approach,pgn4peoplecan be said to adopt a policy ofjust-in-time complexity.When the user first opens a new game inpgn4people, she sees primarily themain linearranged in two columns (for White’s and Black’s moves, respectively), possibly supplemented at any halfmove by a horizontal list of halfmove alternatives, each representing the beginning of a single variation branching off the main line at that point. (See graphic immediately below highlighting the alternatives White has at her sixth move to the mainline choice 5.Bg5, including the third alternative “c: Bc4”.)If she wants to explore off the main line at any given point, she simply clicks on one of the halfmoves available at that point. (In this command-line interface implementation, rather than clicking on one of the halfmove alternatives, the user selects the alternative with a command-line instruction. In the example in the above graphic, that command is “6 W c”, corresponding to the 6th move by White and choice of the third alternative labeled “c”. (See §Interacting withpgn4peoplebelow.) In response (see graphic immediately below):The alternative halfmove on which she clicked is temporarily promoted (for purposes of the visualization) to be the mainline move, and the previously mainline halfmove is demoted to the first alternative (and the others are shuffled as necessary, otherwise maintaining their original ordering with respect to all other halfmoves other than the original mainline halfmove and the user-selected halfmove alternative). (See the FAQWhy is it important/helpful to promote the chosen alternative to be the new (temporary) main line?.)It‘s important to emphasize that this promotion istemporaryand easily reversible or supercedable; it does not affect the game’s PGN or the application’s internal representation of the original game.pgn4peoplealways retains the original specification of which move is the main line and the order of alternatives to that mainline move.The contents of the two columns of mainline moves above that point remains unchanged, because that path remains the mainline path to that point.The contents of the two columnsbelowthat point are replaced with a new main line, that accepts the user’s click as in effect promoting an originally non-mainline move to be the new main line. For each of the new halfmoves thereby presented,pgn4peopleagain creates the horizontal display of alternative halfmoves when they exist.See the graphic immediately below for an example where the user chooses to eschew the mainline 6.Bg5 against the Najdorf and explore instead 6.Bc4 (theFischer-Sozin Attack) at that point.See also the FAQWhat does the color coding of the halfmoves in the output ofpgn4peoplesignify?, which presents another, more-extended example of howpgn4peopleworks.Goal ofpgn4peoplepgn4people-pocisnotmeant to replace any existing software or even to be used by any player for any serious chess work. Existing websites and applications have highly developed functionalities thatpgn4people-pochas no interest in trying to replicate.Instead,pgn4people-pocis offered as a demonstration project—a feasibility study—of what an alternative interface could be that would provide greater usability to chess players when studying and analyzing chess games or developing repertoires.pgn4people-pocis offered in hopes that existing developers will incorporate the underlying interface idea into their existing interfaces.Limitationspgn4people-pocis ademonstration, orproof of concept. It is not a mature product able to fulfill any chess-analysis need.There is essentially zero chess-specific logic inpgn4people-poc. The PGN is not analyzed from a chess point of view. E.g., the “movetext” “Nf3” means no more topgn4people-pocthan would “xq5r”.Instead, the logic ofpgn4people-pocis, more abstractly, an alternative method for visualizing complex trees.There is no graphical user interface forpgn4people-poc. Instead,pgn4people-pocis configured as a command-line program to:Display its output to the terminalReceive instructions from the user typing into the command line.Thus references above like “she simply clicks on one of the halfmoves available at that point” are aspirational. The ability to click on a move is not currently implemented.Any text annotations in the PGN file are ignored.Only the first game of a multi-game PGN file is considered.Playing around withpgn4people-pocThe main point ofpgn4people-pocis to serve as a demo of a new paradigm that might well be instantly grasped once the above description is read. (I had to codepgn4people-pocin order to prepare the examples, but now that that is done, the examples themselves do the explaining.) But if you’d like to actually play around with the program, using it to navigate either the included sample PGN file or a PGN file of your own, feel free! This section is for you.InstallationInstall or upgrade Python as necessarypgn4people-pocwill run on just about anything withPythoninstalled—Mac, Linux, Windows. It does require a very recent version of Python, viz., Python 3.9 or greater. If you want to (a) check whether you already have Python installed, (b) check what version you have, or (c) install or upgrade your Python, see the very clear and well-organized “Install Python 3” from Real Python.Installpgn4people_pocfrom the Python Package Index (PyPI)pgn4people_pocis “open source software” and distributed under the very permissiveMIT License. You can install it for free from thePython Package Index(PyPI) usingpip, aka the Python Package Installer.To installpgn4people_poc, you’ll need to use a Terminal or Console application. What command you type in to installpgn4people_poccan vary depending on your operating system, how everything is configured, etc. However, there’s a good chance that  one of the following four incantations will do the trick.pip install pgnpeople-poc
pip3 install pgnpeople-poc
python -m pip install pgnpeople-poc
python3 -m pip install pgnpeople-pocFor more information aboutpipand installing Python packages from PyPI, see (a) “Installing Packages,” from the PyPA’s Python Packaging User Guide and (b) “Getting Started Withpip,” from Real Python’s “Using Python's pip to Manage Your Projects' Dependencies.”Runpgn4peopleUsing the built-in sample PGN fileNow that you’ve installedpgn4people, to run it just enter the following in the Terminal or Console application:pgn4peopleThis will runpgn4peopleon a built-in sample PGN file that is very robust and designed to putpgn4peoplethrough its paces. It has over 600 distinct lines (some reflecting up to 8 departures from the main line) and over 3000 positions. It’s meant to suggest what having an entire repertoire in a single PGN file would be like.You can also get a little bit of usage information by:pgn4people --help(Note: If there’s any ambiguity, those aretwoconsecutive hyphens.)Using your own PGN fileOr, if you’d like to supply your own PGN file, it helps if the file is very well behaved, becausepgn4peopleisn’t known for being very tolerant. The PGN file should be consistent with the more-exacting “export format” of PGN. The best way to get it into export format is to import the PGN into another chess website/application  (if it’s not already resident in one) and then export the PGN from there.Then use the path ("in quotes") to that file as an additional argument. For examplepgn4people "/Macintosh HD/Users/some user/Desktop/my_game.pgn"The two easiest ways to get the path to your own file into that argument are:In your Terminal program, use thecdcommand (“change directory”) to move to the directory your PGN file is already in. Then you can callpgn4peoplewith simply thenameof your file (i.e., without any more path information) like this:cd /path/to/directory/of/my/PGN/file
pgn4people "my pgnfile.pgn"(The quotes around the file name are crucial if the file name has any embedded spaces.)At least on a Mac: After you typepgn4people, and one more space, butbeforeyou hit RETURN, drag the file icon of your PGN file from Finder onto the Terminal window. The path to the file will then be entered for you. See “Drag items into a Terminal window on Mac,” Apple Support.(More generally, on a Mac, see “How to find the path of a file in macOS,” Macworld, August 13, 2021.)Interacting withpgn4peopleIf you runpgn4peoplefrom the command line without providing the path to your own PGN file,pgn4peoplewill use a built-in sample PGN file. If you supply a path to your own PGN file,pgn4peoplewill use that one instead.pgn4peoplewill read whichever file and then output to the terminal/console the game’s main line and, for each halfmove with alternatives, a horizontal list of those alternatives, each of which is labeled by a lowercase letter (e.g., “a”, “b”, etc.). (See any of the graphics in the sectionThe pgn4people interface approach.)Then you can specify one of those alternative moves by typing on a single line a space-separated triple ofmove numberplayer color (“W”, “B”). (Any of “W”, “w”, “white”, “White”, “wHiTE”, and equivalently for Black, works.)the letter of the desired alternative move. For example, for the third alternative to Black's second move, type2 B c.You can keep changing the main line you look at in this way. If you want to reset the main line to the original main line, i.e., as if you were starting over, type “reset” instead of a triple.When you’re done perusing, simply type “stop”.You have other—rather relatively more geeky—options, too:Enterreportto get a statistical summary of the PGN file, including the number of lines, the number of positions, and information about how “deep” the lines are (where the depth of a line is the number of deviations from mainline continuations required to arrive that line’s terminal position).Enternodereportto get a (potentially very long) output ofpgn4people’s internal representation of the game tree, describing each node of the game tree, how many moves (“edges”) lead away from that node, etc.FAQsWhy do some rows of the variations table have only a White move or only a Black move, but some rows have both a White move and a Black move?What does the color coding of the halfmoves in the output ofpgn4peoplesignify?Why is it important/helpful to promote the chosen alternative to be the new (temporary) main line?What about text comments (annotations)? Aren’t they just as much a usability disaster as deeply nested variations? Butpgn4peopledoesn’t even consider them?!How can I substitute my own PGN file for the default PGN file?How doespgn4peoplecompare to ChessTempo's PGN Viewer?How doespgn4peoplecompare to a standard “Opening Explorer” interface?Why do some rows of the variations table have only a White move or only a Black move, but some rows have both a White move and a Black move?At any position where White is to move, and White has alternatives to the main line, the following mainline move by Black is deferred to the next row. That way, the user can read directly horizontally rightward across from White’s mainline move to see the alternatives for White. Only when White has no alternatives (other than the mainline move) are both players’ mainline moves (for a given move number) displayed on the same row.On any row that has a move for Black, the alternatives on that row are all moves for Black. This is reinforced by prefacing each alternative with an ellipsis (…). See graphic immediately below.What does the color coding of the halfmoves in the output ofpgn4peoplesignify?Based on the original PGN, each halfmove is assigned a color depending on how highly it is ranked as an alternative in its position. If the halfmove is the default (mainline) move from that predecessor position, it is colored black. If the halfmove is the first alternative, it is colored red. If it is the second alternative, it is colored green, etc. These original color assignments stick to the halfmove throughout the analysis and are not changed when the user selects a halfmove to be temporarily promoted.Thus one can, for example, tell the original hierarchical position of a halfmove in one of the two mainline columns by inspecting its color.See the graphic immediately below for an extended example:Why is it important/helpful to promote the chosen alternative to be the new (temporary) main line?The temporary (and reversible and/or supersedable) promotion of the chosen alternative serves two important purposes:This feature is precisely what givespgn4peoplethe important characteristic of scaling essentially perfectly with increased levels of nesting. Without this temporary promotion of the chosen alternative, each deviation from the original main line would result in an incrementally higher level of nesting of variations and therefore of visual complexity and a reduction in ease of use.This feature makes it much easier for a user, when she’s reached a position after multiple deviations from the original main line, to determine what sequence of moves led her to that position. She can simply look at the moves in the two White/Black mainline moves columns, because those reflect the moves that got her where she is now. In contrast, in a traditional interface, she can traverse the tree backward but there’s no easy way to go forward again along that same path: At every node that requires a choice other than the mainline move, she would once again have to recall and then replicate the choice she made before. Thepgn4peopleapproach  makes it easy for the user to replicate that sequence. Because that sequence is the main line, using the up arrow (⬆️) and down arrow (⬇️) keys allows her to traverse forward and backward along that sequence.What about text comments (annotations)? Aren’t they just as much a usability disaster as deeply nested variations? Butpgn4peopledoesn’t even consider them?!Annotations in the form of text commentsarea usability disaster when they are displayed inline with the PGN, as done by almost all traditional interfaces. Like variations and subvariations, text annotations are interruptions between moves that in a chess sense should be adjacent. The longer the comment is, the greater the problem this is.Moreover, inline display of annotations creates a problem for users who want to step through a game using the “VCR controls” (right arrow (▶️) and left arrow (◀️) keys). Even though this user doesn’t otherwise want to refer to the PGN itself, the user needs to constantly scan the PGN with each move to determine whether there is a comment and, if so, to read it.However, because this is a problem even with traditional interfaces (and because demonstrating its solution is highly specific to each implementation),pgn4peopledoes not deal with it.That said, this problem has been solved—though its solution is almost never adopted. Text annotations should also follow the principle of just-in-time complexity by being displayedcontextually. The annotation for a move should (a) appear only when that move is being considered by the user and (b) appear only under, over, or otherwise near the chessboard itself, so that a user isn’t required to divert attention away from the board when advancing through a game.RedHotPawn.com‘sPGN viewerdoesadhere to both of these principles for the display of annotations. (See the graphic immediately below.)Textual annotations appear in a text box underneath both the chessboard and the move log.When a halfmove has an associated comment, the movetext (e.g., “7.d3”) is styled differently in the move log from halfmoves that do not have a comment. (The background color of halfmoves with comments is “Serenade” (RGB = 251, 231, 209). The background color for halfmoves without a comment is white.) This allows a user to know at a glance which halfmoves have comments and which don’t.When the game advances to a halfmove with a comment, that comment is displayed in the comment text box beneath the board/move log. When the game advances to a halfmove without a comment, that text box is cleared.WATCH THE VIDEO to see this in action:https://user-images.githubusercontent.com/8410716/174521380-0f83d043-8b25-4e67-bce3-39853818beb9.movThis method would be easily adapted topgn4people.How can I substitute my own PGN file for the default PGN file?SeeUsing your own PGN file.How doespgn4peoplecompare to ChessTempo's PGN Viewer?Of special note, among the better traditional interfaces, isChessTempo.com’s PGN Viewerwhich is the only existing interface I’m aware of that adopts one ofpgn4people‘s elements—showing by default only the first halfmove of a variation. (See graphic immediately below.) In effect, ChessTempo brings the concept ofcode foldingto the display of PGN.Unlikepgn4people, however, ChessTempo’s PGN Viewer doesn’t promote the chosen variation to be the temporarily new main line. (SeeWhy is it important/helpful to promote the chosen alternative to be the new (temporary) main line?.)And ChessTempo’s PGN Viewer displays the list of alternatives vertically, rather than horizontally aspgn4peopledoes, greatly spreading out vertically the display of the moves, decreasing how many mainline moves can be displayed for a given vertical size of the viewport.How doespgn4peoplecompare to a standard “Opening Explorer” interface?Many chess sites have some version of an “Opening Explorer” that allows the user to step through opening possibilities, one halfmove at a time, choosing at each halfmove from among a set of common, or not so common, alternatives. For example, seeLichess’s Opening ExplorerandChess.com’s Opening Explorer.The Opening Explorer interface has something in common with bothpgn4peopleand withChessTempo’s PGN Viewer: alternatives are displayed initially only one halfmove deep. Opening Explorers are similar to ChessTempo’s PGN Viewer as well in deploying the alternative halfmoves vertically downward rather than horizontally to the right likepgn4people.The Opening Explorer interface shares another important characteric withpgn4people: When the user clicks on a move to choose it, that move is effectively promoted to be the new main line. (SeeWhy is it important/helpful to promote the chosen alternative to be the new (temporary) main line?.)In contrast to bothpgn4peopleand ChessTempo’s PGN Viewer, however, an Opening Explorer is extremely myopic about the main line. On any one screen, you can’t see deeper into the main line than one additional halfmove. Instead, to discover the main line, the user would need to move from screen to screen, each time manually clicking on the top-most (i.e., more popular and therefore mainline) alternative.(While this is certainly a downside to the Opening Explorer interface, Opening Explorers do have a countervailing benefit with respect topgn4people’s horizontal display of alternatives: An Opening Explorer has the horizontal space to display various statistics for each alternative, such as frequency with which it’s played, the success rate (or W-L-D percentages) for White, the average performance rating of players that choose that move, etc.)When the focus is more on the moves themselves, rather than these associated statistics,pgn4peoplewould be a desirable alternative to an Opening Explorer interface.Version History1.0 6/19/2022LicenseThis project is licensed under the MIT License - see the LICENSE.md file for details.