Skip to content
This repository was archived by the owner on May 12, 2021. It is now read-only.
/ work Public archive

A decentralized messaging and sharing app built on top of Secure Scuttlebutt (SSB).

License

NotificationsYou must be signed in to change notification settings

ssbc/work

Repository files navigation

⚠️work v3.18.1 was the last release!⚠️

This release is meant to tide us over so that other clients can take it from here.

Thank you to everyone who contributed to this release and all the ones preceding it! Paul, Matt McKegg, and Christian Bundy first and foremost, but by now the contributors page shows 94 contributors! 💓

Where do we go from here? Do I have to change client now?

For the time being (the next couple of months) you should be fine to just keep work running. However, as time progresses and security of the underlying components "degrades" (read: already existing issues are discovered) it will become a bad idea to keep running work. By that time, you should pick a different ssb client.

Why retire work? Can I keep it alive?

Of course work is, as always, released under the AGPL license. So if you really wanted to, you could fork it and keep it alive. However, let me (Daan) explain why this is a bad idea:

All the devs say "Don't do it!"

Everyone who has spent significant time in the codebase agrees that it is time to retire work. Over the years, it has seen multiple iterations of developers coming in, trying to change things in a structural way, then burning out on it. It's a pattern, so be warned. This is due to the fact that work makes some architectural decisions that make it hard to maintain, and even harder for new developers to get into the codebase:

  • depject is a bespoke dependency injection system, which breaks any kind of navigation and tool support for debugging.
  • mutant is another bespoke implementation of observables. It is also used for generating HTML, which makes a transition to component-based UI toolkits very hard.
  • custom sbot: work doesn't really work except with its own, bundled ssb-server. This is considered bad form for ssb applications.
  • ssb-db, the bespoke database of the original ssb stack, is deeply baked into work. Migrating to the new #ssb-db2 would be a long and painful process. This is compounded by the fact that work bundles a few custom plugins for ssb-db.

I want to be clear that none of the above are impossible to solve; in fact, they all have straight-forward but labour-intensive solutions. I also want to be clear that these technological choices were all made for good reasons at the time, and I am sure you're as greatful to the developers who made them as I am, for putting their (overwhelmingly volunteered!) time into the project, and for making work the application that it is. In combination however, the above issues mean that new developers are faced with a very, very steep leaning curve before they're able to even make small changes. Given all of the above, it makes more sense to deprecate work and focus our efforts on projects like #oasis or #manyverse which are nearing feature parity with work. If you want to get involved with ssb development, both are great projects for that; they are much more hackable than work, and follow standard techniques & workflows, so you'll feel right at home.

If you do, against all advice, want to continue developing work then we kindly request you rename it to reflect the change in leadership.


Original Readme

A decentralized messaging and sharing app built on top of Secure Scuttlebutt (SSB).

Features

  • Connect with friends without depending on any central servers.
  • Don't worry about spam, you only get messages from people you follow.
  • Use work online or offline, the data you need is stored on your device.
  • Sync messages with friends when you're on the same Wi-Fi network.
  • Keep secrets with private messages, which are always end-to-end encrypted.
  • Change and improve work however you'd like, it's free and open source.

Usage

Screenshot of Patchwork

New to Scuttlebutt? Join the network by connecting to a pub.

  1. Choose a pub from the pub list and copy an invite code.
  2. Open work and select Join Pub.
  3. Paste the invite code and select Redeem Invite.

You're done! Check out #new-people to see who else has recently joined.

Installation

Most people should download work for Windows, macOS, or Linux.

Alternatively, you can install work with your favorite package manager.

  • npm: npm install --global ssb-work
  • yarn: yarn global add ssb-work
  • brew: brew cask install work
  • yay: yay -S ssb-work

Building from source? Check out INSTALL.md for more information.

Contributing

Create a new issue to report problems or request features. See CONTRIBUTING.md for more information on how to get involved. You can also support the project via donations.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

See Also

License

AGPL-3.0