Decentralised personal communication system.
  • PHP 56.1%
  • JavaScript 30.3%
  • HTML 5.1%
  • Smarty 5%
  • CSS 2.1%
  • Other 1.3%
Find a file
2026-04-08 06:52:24 +10:00
.lando rename Code to src 2024-03-13 16:21:03 +11:00
.vscode Refactor the import page 2022-10-19 06:23:50 +11:00
app fixes from upstream 2025-09-29 05:18:43 +10:00
bin get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
config Add symfony crap 2026-01-08 07:16:09 +11:00
contrib rename Code to src 2024-03-13 16:21:03 +11:00
doc Documentation update. 2025-10-20 05:20:10 +11:00
images forte icons 2024-08-09 07:26:11 +10:00
include Cleanup and inbox bug fix from upstream. 2026-02-27 07:43:16 +11:00
install Manage multiple keys for FEP-ae97 client-side identities. 2026-04-08 06:52:24 +10:00
library Crypto updates to Secrets app. 2026-01-05 07:08:35 +11:00
migrations get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
public get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
spec/OpenWebAuth Save a round trip by using a JWT instead of an opaque token? 2025-07-14 11:52:38 +01:00
src Manage multiple keys for FEP-ae97 client-side identities. 2026-04-08 06:52:24 +10:00
templates get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
tests MessageFilter cleanup. 2025-12-13 06:39:23 +11:00
translations get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
util v26.4.4 2026-04-04 09:30:54 +11:00
view FEP-ae97 continued. 2026-04-04 09:57:16 +11:00
.gitattributes Required for github/Windows 2012-06-14 18:39:48 +10:00
.gitignore protect symfony resource files 2024-05-13 07:08:35 +10:00
.jshintrc not able to delete set_location 2023-01-11 05:53:00 +11:00
.lando.yml partition signing credentials 2024-07-27 08:24:28 +10:00
.travis.yml 👷Extend Travis, add PostgreSQL10. 2018-03-17 23:27:56 +01:00
boot.php Manage multiple keys for FEP-ae97 client-side identities. 2026-04-08 06:52:24 +10:00
codeception.yml.dist composer update 2023-08-18 21:43:47 +10:00
compose.override.yaml get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
compose.yaml get streams working side-by-side with symfony 2024-03-28 21:32:40 +11:00
composer.json As described. 2025-11-12 13:44:40 +11:00
composer.lock v26.4.4 2026-04-04 09:30:54 +11:00
CONTRIBUTORS update contributors 2025-06-24 20:58:18 +10:00
env populate env template 2024-07-17 05:33:02 +10:00
FEATURES.md more text 2024-08-18 10:46:09 +10:00
FEDERATION.md Documentation and whitespace changes. The documentation changes explain how and why we use unicode in usernames and also successfully federate these with Mastodon. There is also more detail about the incomplete Symfony integration in the comments. 2026-03-26 06:38:47 +11:00
htaccess.dist protect symfony resource files 2024-05-13 07:08:35 +10:00
index.php Documentation and whitespace changes. The documentation changes explain how and why we use unicode in usernames and also successfully federate these with Mastodon. There is also more detail about the incomplete Symfony integration in the comments. 2026-03-26 06:38:47 +11:00
LICENSE fixes from upstream 2025-01-04 06:30:47 +11:00
phpunit.xml MessageFilter refactor. 2025-12-12 05:56:08 +11:00
README.md More wordsmithing. 2026-01-14 06:50:17 +11:00
ServiceWorker.js store vapid key, initialise web-push in serviceWorker 2023-11-11 09:53:33 +11:00
version.php v26.4.4 2026-04-04 09:30:54 +11:00

Forte

Open source communications server with portable identity, managed conversations, and cloud storage.

My name is Mike. I'm a retired software developer, amongst many other things. Back in the day, I was pretty active in the development of email protocols and associated projects/products. Did that for 25-30 years, with stints at Stanford, Netscape, AOL, and Sun Microsystems. Around 15 years ago, I tired of email spam and looked into alternative decentralised communication protocols to replace it (the decision to accept spam forever in E/SMTP was political, not technical). Anyway, I found OStatus. It had the flaw that everything, everywhere; was public to anybody and everybody. Big flaw. Not really suitable for sharing things with limited audiences such as family and friends. But it was otherwise a useful communications stack, so I created something that was more suitable for restricted/limited conversations and media. Then I federated this with every social network that would let us have API access or open protocols. We even "federated" with Facebook and Twitter briefly.

That software became known later as Friendica.

A wee bit more ancient history... I went on to do other things to explore the limits of decentralised protocols (there are very few) and a thing we call 'nomadic identity'. This work became Hubzilla. Then OStatus (the common language of the early fediverse) was subsumed by ActivityPub about 7-8 years ago, and a project called Mastodon adopted it. I had played with it briefly, but found I was literally the only person who had, and Mastodon's adoption gave me a reason to dust off ActivityPub and try again.

There were many other things that happened between then and now, but the end result is that now there's this thing called 'forte'. It's something I spent a lot of time on to bring all the community and identity management and online safety and spam resistant features we developed over the years to the ActivityPub protocol. It took a few years, because like OStatus, the design of ActivityPub was pretty short-sighted and many decisions were made based on how well they aligned with (the former) Twitter's behaviour years ago. That's the situation and it took years to wrangle ActivityPub into compliance with the needs of our privacy-oriented communities, but that work is now reasonably complete.

TL;DR This software does some pretty cool stuff. We're not copying anybody or trying to be 'something-something, but federated'. We came up with these tools and abilities because real people needed them today. And that was fifteen years ago. If people need something, and the protocol doesn't permit it, that doesn't mean people need it any less.

People need these abilities more than ever now.

There is very little interest in my work from the fediverse at large, for a variety of reasons. Mostly, that we're into other things besides Twitter and have an architecture that prevents dog-piling and spam. I personally use forte as a spam free (by design) modern replacement for email, built on open standards. Many other people have contributed their ideas over the last 15 years, and it also federates with the rest of the ActivityPub fediverse and looks/works like a social network if you want - and lets you play on the global stage; or can be isolated to friends, family, and private communities -- if you prefer that instead. This is all open source code based on open web standards and can communicate with millions of people today - across at least a hundred different competing software applications. I'm not competing. I'm just doing what I've always done. I've always built software for people who wish to control who they communicate/share with, and to make it difficult for total strangers to push themselves into your online face; unless you consciously make the decision to permit it.

And I've been doing this for a very long time.

As always, this repository is a gift to the universe with no strings attached. Have a great day.