The hidden cost of simplicity - P3pch4t Devlog #3 [2023.12.13]
Simplicity is not… simple
Let’s skip the configuration and go straight to developing the bot. We will base ourselves on the Chuck Norris bot.
So let’s create the entire bot.
This code is pretty self-explanatory
- First we open some sessions in our .config directory
- Then if the account isn’t ready - we create it
- Put some callback on the message
- If the message is anything but
!joke- we send a help message
- If it is
!joke- we send the joke
Pretty simple and straightforward, huh? Well, that is until you realize that there is plenty of stuff going on in the background that you may not want.
- Everything is stored, all messages, introductions - everything. This may be desired for some, but for others, this will simply waste space.
- All features all mandatory. If somebody sends a 1GB movie to you, p3pgo (under current defaults) will try to download it which.. may not be the desired solution for some.
For that reason, I’ve decided to create
p3pmini.go which will only do the bare minimum of what’s needed to make sure that only features that are required will be used. While simplicity will be hurt, at least a bit - we will have a much easier-to-use library for lower-level projects, and for those who prefer less bloat.
Speaking of which - the
p3pgroup Golang server is done, but it works so bad due to the reasons mentioned above that I need to write
p3pmini.go first, and then rewrite p3pgo in it to be at least somewhat satisfied with it. Currently, it is usable but not as optimal as I’d like it to be
Project state as of 2023.12.13
- Core functionality
- Running and configuring embedded i2p router.
- Client handshake (Ensuring proper key exchange, showing fingerprint to both users to verify that the contact was properly added).
Edit the flutter’s PGP library to add missing functionalityThis task no longer applies, we have moved (at least for now) this logic to Golang code
- Event exchange (Ensuring that each event is delivered, grouping events by destination) Partially done, we do exchange events. I’ll consider this step done when the relays arrive
Combining all possible events into a Dart library (This includes creating the events and designing how they should look - so we can ensure an efficient and easy-to-implement way of exchanging them.)This step also doesn’t apply. But we do have a Golang version of this, still partially WIP.
- Documenting the changes
- Creating an automatized build process to ensure users can make their own versions
- Creating a group server in Golang (using the above library) S00n!
- User Interface
- Initial UI release - support all features of the backend library
- UI polishing – including better desktop support.
- Beta Release
- Stable Release
- Fix security issues and bugs
- Release the app on stores
- Calendar (with external sync) Work started, by @Im-Beast.