What does HackerNews think of anarki?

Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.

Language: Arc

#6 in Linux
Hackernews was released as free / open source some years back. There's a community managed fork: https://github.com/arclanguage/anarki/
>Where is the HN source code right now? Free and Open?

Yes and no.

HN itself is running a proprietary fork of Arc Lisp, which you can find here[0]. The Arc maintainters don't take public PRs or feature requests, and HN itself has numerous changes to the codebase which aren't public for business reasons.

There is a public fork of Arc called Anarki[1] which has no direct connection to HN or Arc Lisp, and for which the community and development is... well... anarchic.

And given the general culture here around minimalism and stasis (not wanting to introduce new features for fear of entropy that would negatively affect the signal to noise ratio and push the site towards Eternal September) chances are any large, publicly visible changes to the codebase aren't going to happen. People here riot if they change the stylesheets just a bit too much. Heaven help us if something imports content from beyond the AT field that Hacker News keeps between itself and the unwashed masses.

But dang's email is at the bottom of the page if you want to ask him.

Honestly, as with most such questions regarding HN, the preferred answer is probably to just write a third party client that uses the HN API and let HN stay what it is.



The original version was open sourced (Perl artistic License) http://arclanguage.org/ There is an active fork in https://github.com/arclanguage/anarki but it's totally independent and the current conde in HN can be (very) different.

My guess is that it's very difficult to keep all the details of the secret sauce hidden. They change the details very often. For example the front page is ordered by points/time^1.6, but the 1.6 changes from time to time without notice (I think it was 1.8 for some time, perhaps it's 1.8 or something else now. Some people have analyzed the front page and got compatible results, but I don't remember the exponent they found and I'm too lazy to try).

arc is written in mzscheme and/or racket, and not C. It has infinite integer precision.


   >I wish someone could make a cheap and easy shell to quickly make "hacker news" like clones that people could run for given interests, to create communities like this one geared towards other interests...
It's already out there: http://arclanguage.org/



  >Anarki comes bundled with News, a Hacker News style app...
> People who think otherwise probably don’t understand why people like javascript and python and will never write any product that catches on.

Ironically, this has been posted on a popular site written in a dialect of scheme:



If you do want to get into it, checkout first the arc forums (the UI might be familiar to you: http://arclanguage.org/forum) and then after that check out Anarki which is a community-maintained fork of Arc, seems more up-to-date and has some QoL upgrades, https://github.com/arclanguage/anarki

Coincidentally, seems my post have been the top #1 post on the Arc forums since I first made it, ~17 days ago. That forum could do with a bit more of traffic :)

Arc Lisp[0]. This forum was concieved as a MVP for the language.

Anarki, a divergent open source fork, can be found here[1].

[0] http://arclanguage.org/

[1] https://github.com/arclanguage/anarki

The current version of Arc Lisp (which includes the forum) can be found at http://arclanguage.org/

And the public, open source fork of Arc and the forum are at https://github.com/arclanguage/anarki

Bear in mind nothing publicly available is at feature parity with Hacker News because HN is essentially closed source for various (mostly YC business) reasons.

If you want to contribute to an Arc based forum, the open source Anarki fork[0] is always open. It won't effect the original Arc distribution or HN but several other forums do use it.


Someone can correct me if I'm wrong but AFAIK Hacker News was meant to be a MVP for the Arc language itself.

Also a more up to date version of the Arc forum can be found at https://arclanguage.org, and there is a public fork, Anarki at https://github.com/arclanguage/anarki which is not in feature parity with the former, which itself is not in feature parity with Hacker News.

There is also anarki, the experimental public fork[0] of Arc and the forum. Like everything else, it differs from HN.


The current source of Hacker News is proprietary, because this forum is attached to a billion-dollar startup incubator and there's apparently real money to be had for wantrepreneurs trying to game the algorithm, and plenty of "business logic" they would have to remove and whatnot.

The current source of Arc Lisp is at https://arclanguage.org. It isn't open source in that there is any way to contribute or make pull requests that I'm aware of (I may simply be too much of a pleb to know,) rather now and then new versions simply descend from the Lisp gods and are posted. So it's more 'source available.'

The current public fork of Arc Lisp is Anarki at https://github.com/arclanguage/anarki. It has deviated a great deal from Arc and its version of the forum is not in any way in feature parity with Hacker News. But anyone is welcome to make a PR and contribute.

The Arc language forum is at https://arclanguage.org/forum.

arclanguage.org hosts the current version of Arc Lisp, including an old version of the forum, but HN has made a lot of changes locally that they won't disclose for business reasons.

There's an open source fork at https://github.com/arclanguage/anarki, but it doesn't have any direct relationship with HN.

The current version of Arc can be found at arclanguage.org, forum included, but HN itself runs a lot of proprietary code so the base version of the language and forum won't have feature parity with HN.

There is also Anarki[0], which is the public fork of Arc and the forum, which is very much not in feature parity with HN. Anyone who wants to contribute is welcome to.


dang has already mentioned the original Arc forum but I'd be remiss not to mention Anarki[0], the public fork. It's diverged quite a bit from Hacker News though so don't expect feature parity.


Unfortunately independent forums have more or less died thanks to social media. Even most new forums seem to be offered strictly as services rather than hostable code.

It's not new but if you want to dig into Arc Lisp you might consider contributing to or forking Anarki[0], the public fork of the software running HN.


There is an open source fork but it runs on Racket[0], so the Arc documentation isn't always correct, and of course that forum and this one differ in terms of features.


The language, yes[0], but AFAIK the maintainers don't take pull requests.

Arc has a public fork called Anarki[1], which is built on Racket[2]. The Anarki version of the forum differs from the Arc forum, which differs from HN's own custom instance, which is closed because of various YCombinator business reasons.




I don’t think OP meant “proprietary, closed” as “centralized”. If it’s about the code: https://github.com/arclanguage/anarki
I'm curious about this too.

There still seems to be interest in the project. The forum gets new topics posted every few days [1] and Anarki, a community ran fork of Arc, shows recent commits [2].

[1] http://arclanguage.org/forum

[2] https://github.com/arclanguage/anarki

Arc is my first real exposure to a Lisp. I've been piecemeal contributing to the Anarki fork[0] as self-education.

A lot of things about it frustrate me. Mostly the global namespace and mutability (and Anarki specific issues with Racket interop.) I know that's a fundamental part of the design and culture, but I think it holds the potential of the language back considerably.


At its core, a HN clone or any simple forum is just a CRUD app. If you can make something in the language of your choice (with or without framework, it doesn't matter) that handles user accounts and reading from/writing to a database, then you're already a decent amount of the way there.

Beyond that, assuming you're using a SQL database and want threading, study methods to represent tree structures from that[0].


The closest thing to actual HN source code that's publicly available is probably Anarki[0] which is a public fork of Arc[1], a lisp created by PG. That codebase does already deviate from HN in several ways, is not guaranteed to be stable and doesn't represent what might be considered modern best practices for application design, but contributions are always welcome, and if you want to know how HN itself works, in general terms, that's probably the closest you're going to get.

You can also search "hacker news clone[2]" here to find examples written in various languages.




The community version of Arc does at any rate: https://github.com/arclanguage/anarki
The core framework of HN, Arc, has an open source variant and it's not hard to deploy a strict HN clone. https://github.com/arclanguage/anarki
Contributed to Anarki.

Nothing great mind you, not even good, but it's my first practical experience working with a Lisp.


Not mine, but I just forked and am starting to play with Anarki[0].


You could try the News that comes with anarki, a fork of the Lisp that HN is written in.

To remove the features you don't want, you'll have to modify the code a bit, but I guess deleting code is easier than adding it.


Did Arc go closed-source or does Hacker News run a closed-source fork?

As far as I can tell, the arc forums site is still up and running, and a lot of people seem to be focused on Anarki[0].


It's based on http://arclanguage.org/ although I think a newer fork is anarki: https://github.com/arclanguage/anarki.

As mentioned, there is also lobste.rs, in RoR. I think most HN clones posted here use one or the other.

If someone were writing a Hacker News clone in PHP, or God forbid, Hack, they would probably be embarrassed to post it here...

There's a community version of the language being developed here: https://github.com/arclanguage/anarki

It works with the latest Racket versions and includes a HN clone. You can see it running here: http://arclanguage.org/forum

It's true that pg isn't working on it though. I wonder if he's ever getting back to it.

Arc is a lisp variant: https://en.m.wikipedia.org/wiki/Arc_(programming_language)

The current[1] distribution comes with a hn clone, that as far as I know, is mostly equivalent to the code that used to power hn at some point in the not too distant past.

[1] current might not be the best name for it, but as far as I can tell it a) works, b) has been ported to Racket (as opposed to being trapped on some ancient version of PLT Scheme), and c) is maintained (ish): https://github.com/arclanguage/anarki

> Anyhow, sorry to derail the black bar discussion.

IMNHO Not at all! Just like I love the fact that someone that didn't realize the meaning of the bar, simply asked (and so helped others figured it out), I love your input on accessibility. I'm sure I'm not the only one that hadn't considered the accessibility implications of such "semantic" style/design choices. FWIW, I think it's a bit crazy to use a table with a 1px image and background colour (if I'm reading the source right?), when a "border-top: thick solid black" would do the trick. But then again, HN does stick to a strict 90s table-layout. That still leaves out the question of where/how to communicate the change to those that are vision impaired.

I wish development of the HN code was a bit more open - as far as I know, the current code, has evolved[1] a bit from what's currently readily accessible as FOSS[0] -- but doing something with the layout to help accessibility while still staying true to the spirit of HN really shouldn't be that hard. And I'm sure the result would be greatly helped by some of HN readers that are able to do the change themselves, for themselves.

As for general accessibility, I think everyone would want vote-buttons that work (I'm using vimperator, so on Desktop, it doesn't really matter if the arrows are invisible on a big monitor - I just know that the "first" link-hint is "up", and the second is "down", indications of which way one voted (and a grace period to change/cancel), and a way to hide threads.

The latter is especially useful if the first comment on a story is a controversial tangent.

As for the black bar: Having those that change the bar submit a story at the same time (eg: the "Andy Glover has died"-story that was on the front page earlier), and have the bar link to the HN submission might not be a bad idea. We sadly live in a time where it might not be obvious, even in a relatively small community, for who or what the black bar express sympathy.

[0] "Anarki: a publicly modifiable 'wiki-like' fork of Arc Lisp (http://www.paulgraham.com/arc.html)" https://github.com/arclanguage/anarki

[1] "Ask HN: Is the Hacker News Team Actively Developing Arc?" https://news.ycombinator.com/item?id=11240350

In all fairness, while the currently running incarnation of HN isn't open, earlier versions of Arc and hn/news (along with forks) is open source, eg: https://github.com/arclanguage/anarki/

And there are clones, like lobste.rs:


Then there's the API, that allows anyone to export data. So while I get your point, and agree with it to a certain extent, it's also not entirely fair.

That's not the code that currently runs hn - AFAIK it's the code that ran hn at some distant point in the past. I'm not quite sure what's the best current path for those that want to run their own hn, on (something similar to) arc probably anarki?:


Possibly arc-nu?:


At least it appears arc3.1 runs under racket (not sure how long that's been the case, but presumably for a while):

  $ racket -v
  Welcome to Racket v6.1.
  $ wget http://ycombinator.com/arc/arc3.1.tar
  $ tar xf arc3.1.tar
  $ cd arc3.1/
  $ echo admin > arc/admins
  # WARNING: running random code from the Internet
  # downloaded over an insecure link is not a good idea!
  # But a checkout from https://github.com/wting/hackernews.git
  # *failed* to run under racket...
  $ racket -f as.scm 
  Use (quit) to quit, (tl) to return here after an interrupt.
  arc> (load "news.arc")
  arc> (nsv)
  rm: cannot remove ‘arc/news/story/*.tmp’: No such file or directory
  load items: 
  ranking stories.
  ready to serve port 8080
I don't know if https://github.com/wting/hackernews.git is a reflection of the updated hn source - I don't think it is. For one thing, if we look at:


"Ask Arc: How to add a toplabels in news.arc?"

> On Hacker News, the ask and show pages are implemented just like the > front page, but they filter the item list based on title or whether or > not there's a link. > > And yes, that means they won't show items not already loaded into RAM ;)

  (defop ask ((p page))
    (pagepage ranked-stories* p
              [and (askpage-filter _) _]
              "ask" "Ask"))
> The magic is in askpage-filter:

  (def askpage-filter (s)
    (and (astory s)
         (blank s!url)
        (~begins (downcase s!title) "show hn")))
There's no -filter, in the github repo:


The community version of Arc is called Anarki. It runs on new versions of Racket.


Biggest issue is basically that meteor has an ecosystem of dependencies that need their source code modified to work with Meteor, Meteor also relies entirely on global variables and a number of other uglies.

I have been involved professionally with developing two medium-large applications on Meteor, and it's terrifying.(first time was when it was in alpha, so I forgave it, second time out of alpha, and it's almost worse).

I think that HN is run from this https://github.com/arclanguage/anarki or something similar. (there's a run-news script in there which IIRC instantiates something a whole lot like HN).

There are older versions of the site that's open source, if I remember correctly. The current one isn't open source to keep the rules of detecting spam, banning users, etc. a secret.

I tried finding the link to the older codes, this is the best I could do: https://github.com/arclanguage/anarki http://arclanguage.org/