What Cheer Netop is an MIT licensed implementation of Fediverse/ActivityPub in Scala and Lift by David Pollak.
In a canoe with several others, Roger scouted the area across the Seekonk River. They spotted a group of Narragansett on a large rock, known afterwards as Slate Rock, along the western shore of the Seekonk River. As they approached the Narragansett greeted them by calling out: “What Cheer Netop!” This greeting is a combination of English and Narragansett languages. ‘What cheer’ was an informal common English greeting of the day, short for ‘what cheery news do you bring’ and today’s equivalent of “what’s up?’’ “Netop” is the Narragansett word for friend.
"What Cheer, Netop" also translates to "Hi, Neighbor!" This is a perfect embodiment of the Fediverse. Each federated instance is a neighbor (netop) to other Fediverse instances. They share a common language and say "Hi" and have lots of conversations with each other.
The implementation is based on ActivityPub-Express which is also MIT licensed and Wildebeest which is Apache 2.0 licensed.
A JVM-based ActivityPub server has performance and deployment advantages.
Scala and Lift are well known to David Pollak
An MIT licensed ActivityPub server has value in terms of commercial extensions that most of the AGPL implementations don't lend themselves to.
Yes, you may disagree with some or all of the above reasons. This is the Internet.
Right now, all discussion is via GitHub tickets.
If you want to contribute, open a ticket, have a discussion, open a PR, etc.
Netop is a basic LiftWeb application. It may be run in an app server or as a stand-alone UberJar.
If running as a stand-alone UberJar specify the location of the properties file, set the WHATCHEER_PROPS_FILE
environment
variabel to point to the properties file.
Properties:
whatcheer.names
: The domain names hosted by this server as a JSON Array of Strings. default:["localhost"]
whatcheer.objectbase
: the base for "object" related requests. For example/o/:id
default:o
whatcheer.streambase
: the base for "stream" related requests. For example/s/:id
default:s
whatcheer.actorbase
: the base for "actor" related requests. For example/u/:actor
default:u
whatcheer.actorbase.inbox
: the base for the actor's inbox. For example/u/:actor/inbox
defaultinbox
whatcheer.actorbase.outbox
: the base for the actor's outbox. For example/u/:actor/outbox
defaultoutbox
whatcheer.actorbase.following
: the base for the actor's following list. For example/u/:actor/following
defaultfollowing
whatcheer.actorbase.followers
: the base for the actor's followers list. For example/u/:actor/followers
defaultfollowers
whatcheer.actorbase.liked
: the base for the actor's liked list. For example/u/:actor/liked
defaultliked
whatcheer.endpoint.nodeinfo
: the endpoint for node info related request. default:nodeinfo
whatcheer.endpoint.upload
: the endpoint for uploading stuff. default:upload
whatcheer.endpoint.oauth
: the endpoint for OAuth authorization. default:authorize
whatcheer.endpoint.proxy
: the endpoint for proxy requests. default:proxy
whatcheer.name
: the name of this server implementation. default:whatcheer
whatcheer.version
: the version of this server implementation. default:0.1
whatcheer.openregistrations
: is the server open to new registrations? default:false
This work derives some code from: