# FreeChat ## What this is A FOSS chatting platform that brings in more modern features that _a lot_ of people have come to expect. > Why not just IRC/Discord/Slack/Mumble etc? A tonne of IRC channel are basically dead since so many have moved to Discord/Slack. Why? Because those platforms have features that IRC just doesn't have. A lot of people have deemed those features worth the switch. Discord/Slack are proprietary spyware with no real alternative. The quality of the service is high enough for people to ignore the datamining, it's time a proper client came by. Mumble could work but has an awful reputation amongst regular non-technical users. > So it's a Discord/Slack clone? Not really, at least for now chat history is limited kinda like basically every chan/booru. _This can be turned off to preserve all chat history_. The biggest difference is the lack of data collection; servers collect the following data: * User id - generated by the server * User password - generated by the server * User name - provided by user * User chat - How much depends on how the server was configured or if a message was pinned to NOT be deleted. * Users Status - user is online/offline: HOWEVER this is controlled by the user. * User permissions - To discern admins from less privileged users. ## Working Status > Is this finished or almost finished? Short: The API has basic functionality for chatting but still requires more endpoints to be **fully featured**. So yes the API at least is in a MVP state. But everything else is either in infancy or not done. Long: No. A basic client is still underway and the chat API is missing a metric tonne of features. However The state of the chat API is such that it shouldn't be hard to implement many of the desired endpoints. ## How to help - if you want to > Writing chat clients I know not everyone wants an electron based client because it's naturally really bloated. But the normans want something that _just werks_ so electron is a good way of doing that. The API is dead simple however so it shouldn't be too bad to write a simple client that sends a couple of requests every so often. If you choose to write a client and want people to know about it I can include a link to the project here/on the wiki. > Testing Currently API testing is done with a phony client written in python(client-tests/client.py) and some rust tests. Anything from a simple `GET /some-route` + response check to a testing pipeline thing is appreciated. Since testing doesn't really affect users as long as the test is correct and covers new ground it's welcome.