Skip to content

Instantly share code, notes, and snippets.

@phoe

phoe/analysis.md

Last active Jan 7, 2021
Embed
What would you like to do?
Analysis of Hexstream's public contributions to the Common Lisp ecosystem

This is a copy of the post from the locked issue https://github.com/cl-library-docs/common-lisp-libraries/issues/3#issuecomment-732563750 made available as a separate gist for clarity and posterity.


Phoe said I am not a Common Lisp expert. This is actually the single most batshit unhinged shit anyone has ever said to me on the internet, ever. What a fucking monster. He would do well to review my extensive contributions in depth before making self-discrediting pronouncements. - @Hexstream, https://twitter.com/HexstreamSoft/status/1331030226634219520

Hokay then.

Allow me to review your claims of having a huge positive impact on the Common Lisp community. My review is based on your CV, the current Quicklisp dist, and your public GitHub activity. I assume that your next tweet will link to this post as a proof that I have done exactly what you've asked of me, and so your fans can get to know the AFAIK first public analysis and independent piece of research into Hexstream's impact on the Common Lisp community.

Once again, I am doing this in my free time, since I consider this analysis to be important for the Common Lisp community as a whole.


You have been self-employed for fifteen years with no commercial success and no money earned until April 2020, when, according to a tweet of yours, you got your first GitHub Sponsors donation. Therefore, looking from the financial point of view, you have been unemployed for almost 15 years and this state of matters only changed seven months ago. Your above claims of having five years of commercial experience are therefore made void by your own words, as commercial experience implies commerce, which in turn implies some kind of currency exchange.


You have deleted the old code that you have created by proclaiming your projects unworthy of your attention; I have no reason to doubt your instinct on this and I will therefore consider this code unessential and therefore not contributing to your impact on the Common Lisp community.

You have 30+ micro-libraries on Quicklisp that are mentioned as "my newer, suitably engineered, documented, actually worthwhile projects" on your CV page, which contradicts your claim from up above that this library is old and almost unmaintained. These libraries, if we exclude their associated test systems, are used by no other Quicklisp projects whatsoever, which means that these libraries have no public impact whatsoever among Lisp programmers who push their own code to Quicklisp.

The below code snippet should allow anyone to reproduce my findings using the standard Quicklisp dist as well as verify individual steps of this computation for correctness.

CL-USER> (let* ((repositories '("abc.hexstream.xyz" "anaphoric-variants"
                                "bubble-operator-upwards" "cartesian-product-switch"
                                "cesdi" "chat.hexstreamsoft.com" "class-options"
                                "clhs" "clos-mop.hexstreamsoft.com"
                                "common-lispers.hexstreamsoft.com"
                                "common-lisp-format-reference"
                                "compatible-metaclasses" "cv.hexstream.expert"
                                "definitions-systems" "enhanced-boolean"
                                "enhanced-eval-when" "enhanced-find-class"
                                "enhanced-multiple-value-bind" "enhanced-typep"
                                "evaled-when" "fakenil" "first-time-value"
                                "getting-started-with-the-clhs" "gitdirs" ".github"
                                "global.hexstream.dev" "Hexstream"
                                "hexstream-project-template" "incognito-keywords"
                                "its" "macro-level" "map-bind"
                                "multiple-value-variants"
                                "notes-and-tips.hexstreamsoft.com"
                                "bigname" "complex-slots" "ensure-method-combination"
                                "evaluated-flet" "explicit-bind"
                                "first-class-lambda-lists" "hexstream-html-doc-mode"
                                "inherited-values" "lispy-format" "xcall"
                                "clhs-chrome-extension" "easy-backquote-nesting"
                                "hecss" "hextml" "loopless" "map-symbol-definitions"
                                "return-values-hints" "object-class"
                                "parse-number-range" "place-modifiers"
                                "place-utils" "positional-lambda"
                                "roadmap.hexstreamsoft.com" "simple-guess"
                                "status.abc.hexstream.xyz"
                                "status-quo.hexstream.expert" "symbol-namespaces"
                                "tarballs.hexstreamsoft.com"
                                "trivial-jumptables" "with-output-to-stream"
                                "with-shadowed-bindings" "www.hexstream.expert"
                                "www.hexstreamsoft.com"
                                "common-lisp-symbols-comparison"
                                "principles-and-intents" "stream-lisp"
                                "www.stream-lisp.org")) ;; list of all repos from GitHub
                (dependents (remove-duplicates (alexandria:mappend #'ql:who-depends-on repositories)
                                               :test #'string=))
                (real-dependents (set-difference dependents repositories :test #'string=))
                (test-system-p (lambda (x) (and (= (- (length x) 6) (search "_tests" x))
                                                (member (subseq x 0 (- (length x) 6))
                                                        repositories :test #'string=))))
                (dependents-without-test-systems (remove-if test-system-p real-dependents)))
           dependents-without-test-systems)
NIL

The issue/PR information of the aforementioned Common Lisp repositories (7 meaningful issues in total) shows very little information that can prove real-world usage of these libraries.

I will try to filter out issues that likely did not come from using this library

This leaves us with three issues in total.

This information alone is not statistically significant enough to state that there is some actual production use of these libraries.


You have created a list of annotated Common Lisp symbols with your personal notes, examples, and tips, which is in a mostly incomplete state, but has some nice notes.

You have created a rendering CLOS MOP specification that has several usability issues, mostly related to the presentation layer; the series of arrows and anchors in the corner is non-intuitive, a bit ugly, and has no way of being turned off. I suspect that this work would have been welcome into the ecosystem if not for the insistence, entitlement, and aggression with which you attempted to push it into the Common Lisp ecosystem and the later vulgarity that was thrown at some members of the Common Lisp community in retaliation for your contribution not being accepted due to the aforementioned aggression.

You have created a useful format cheatsheet that I consider to be your most important work so far since it duplicates no other known Lisp resource; I am not aware of any other, or better, tabular format reference. Still, it has suffered the same fate as above - an example of a fine resource sinking because of your aggressive personality and your blaming of the consequences of your own violence on Xach and the Common Lisp Mafia.

You have created a list of Common Lisp programmers that you still have not removed me from despite my repeated and explicit requests to do so, which is a strict net negative due to it basically erasing whatever trust I may have towards you as a member of the Common Lisp community.

I am explicitly skipping the EZ-Planck and TypeMatrix 2030 projects since these are mechanical keyboard projects and we are evaluating your impact on the Common Lisp community.


You have created 2786 commits on GitHub in your own repositories in the @Hexstream, @Hexstream-not-yet-ready, @Hexstream-not-yet-scavenged, and @StreamLisp organizations. I am explicitly counting only commits that GitHub shows as public.

You have 12 (11 official + 1 re-authored) commits in Lisp-related GitHub repositories that do not belong to you. I am explicitly skipping non-Lisp repositories since these are off-topic to evaluating your impact on the Common Lisp community.

Out of these 12 commits, 6 are related to adding crowdfunding links to the respective repositories, 5 are related to promoting your own work or groups you administer (HexStreamSoft, CLOS MOP, Keybase chat, updating tarballs on Quicklisp), and one is a typo fix.


You have opened 16 pull requests on Lisp-related repositories that you do not own. Counting out the 12 pull requests from above which were merged, this means that 4 of those are still open or have been closed:

2 of those PRs are related to adding crowdfunding links to the respective repositories, while 2 are rerelated to promoting your work (CLOS MOP).


You have opened 22 issues on your own GitHub repositories in the @Hexstream, @Hexstream-not-yet-ready, @Hexstream-not-yet-scavenged, and @StreamLisp organizations, and commented on 29 issues made by others in these repositories.

You have opened 40 issues on https://github.com/quicklisp/quicklisp-projects in order to maintain your libraries in the main Quicklisp dist, and commented on 23 issues made by others in this repository.

You have opened 3 issues on https://github.com/quicklisp/quicklisp-client related to various improvements in the Quicklisp client, and commented on 6 issues made by others in this repository.

You have opened 11 issues on https://github.com/ultralisp/ultralisp related to various improvements in Ultralisp, and commented on 12 issues made by others in this repository.

You have opened 48 issues in various other Lisp-related repositories and commented in that 42 issues made by others in various other Lisp-related repositories that I cannot be bothered to analyze since I have already spent too much on your time on these posts due to the effect of Brandolini's law.

I am not willing to analyze the contents of your issues or comments because I am too tired of reading your countless rants or to try and make any sense in them. If anyone else feels like having a go at it, please, go ahead; GitHub history is public.


There are many people in the Common Lisp ecosystem who create, maintain, and contribute to Common Lisp compilers and implementations, graphical toolkits, window managers, operating systems, game engines, computer algebra systems, database utilities, bindings to foreign libraries, knowledge-sharing, writing articles, writing books, organizing conferences, organizing meetups, answering technical and ecosystemic questions on online chats.

And there is you, with an amount of code equivalent to a single utility library of size comparable to perhaps Alexandria, except with zero of the popularity of Alexandria; a format cheatsheet that has a very nice idea but is a week's worth of net HTML work to redo from scratch; a MOP reference that is a duplicate of an already existing reference; absolutely zero interest in any codebase that is not of your own making; and, sadly but also most importantly of them all, a social apparatus that voids all of this merit by making their author impossible to tolerate.

You seem to abhor all foreign codebases. This stands out because your commits and pull requests, as few as they are, are only related to adding crowdfunding links and insistently promoting your work, with the exception of one pull request that is not even technical because it fixes a typo in a documentation file. This means that your expertise with codebases from other authors is an absolute and complete nil, and this is still before counting your unwillingness to work on them or even read their code whatsoever. This, in turn, means that your expertise with existing, real-life Common Lisp projects (which are naturally written by other people over various spans of time) is not just a nil, it's a net negative. A newbie will likely do better than you because of their lack of prejudice towards codebases written by other people or that follow different style guidelines.

At this point calling you a Common Lisp expert would be a slap in the face to all the various people I have mentioned three paragraphs above.


Let me summarize.

  • You have had no commercial success with Lisp throughout fourteen years of doing it, with this state of matter having slightly changed only earlier this year via a single donation.
  • All projects of yours that are not micro-utility libraries that were mostly single-handedly authored by you have been ineffective at making an impact in the Common Lisp community because you threw them in the trash bin.
  • All projects of yours that are micro-utility libraries that were mostly single-handedly authored by you have been ineffective at making an impact in the Common Lisp community because nothing in Quicklisp depends on them and I cannot see meaningful issue/PR information that would hint for them being used. I have no other data that I can base any other assumption on.
  • The two documentation projects (format cheatsheet + CLOS MOP) have been ineffective at making an impact in the Common Lisp community because of your obnoxious behavior making it impossible for many people to even think of accepting your contributions whatsoever.
  • You have never contributed a body of code to a codebase that is not of your own making and, based on your previous claims, I interpolate that you are not interested in doing this in the future.
  • Don't even get me started with the shitstorms you have started in GitHub issues.
  • Nor do I want to dive into your Twitter archives.
  • I do have to admit. You have been popularizing crowdfunding among Lispers and achieved visible success there. This is the one single thing that I can unambiguously consider a net positive coming from you.

Summarizing the summary? Given the fifteen years of experience that you claim to have, all of this is literally nothing. People are capable of creating really grand things in a tenth of time that is fifteen years. They are capable of learning Common Lisp and getting things done in it in a third of fifteen years. They are capable of making tens, if not hundreds, of meritorious PRs to various foreign codebases in a single year. Where's all that in your case? Where's a tenth of that in your case?

(Two paragraphs removed; they were getting personal, which is unnecessary in this context.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.