Roadmap
Here are the ambitions and planned features of the Linkit Project and all its side projects
Framework
- 🔲 Fully exclude Engine dependency from user-side
- 🔲 Create a SPI in order to extend some parts of the framework
- ❓ Actions shortener (be able to make complex actions that would require a bunch of objects access to be completed)
- 🔲 Inter-Engine Garbage Collector (GC for unused Network Objects)
- 🛠️ Connected Objects
- 🛠 Contracts
- ❓ Discuss if we keep modifiers
- 🛠️ Better invalid contracts error messages
- ✅ Apply contract on classes, methods, fields
- ✅ Ability to specify that an object should become a chipped or mirror object
- ✅ Stub classes for mirroring objects
- 🛠️ DSL Language
- ✅ Class, methods, fields description support
- ✅ Mirror, chipped objects specification support
- ✅ Stub classes / interfaces
- 🔲 Add custom engine tags for agreement description (instead of defaults "owner", "cache_owner" etc)
- ✅ Simple agreement description
- 🔲 Connection
- 🔲 Fully handle engine disconnection without crash
- 🔲 Fully handle engine reconnection without crash
Website
- 🔲 Contribute page
- 🔲 Add rules and a how-to-contribute paragraph
- 🔲 Add a mini survey for the contributors to help them choose what they could do based on what they like to do
- 🔲 For each feature that needs contribution, create a page that explains what to do.
- ✅ Funny workers set as a decoration during dev phase
Debugger
Builtin
- 🛠️ Watchdog
- ✅ Simple deadlock detection on local side (can be uncorrect)
- 🔲 Further deadlock detection by analyzing the other engines states and figure out if the threads are deadlocked or just simply waiting an external event (user input, method execution etc)
- 🔲 On deadlock, Find what threads are locked on the remote side and then print out the remote threads names in charge of the response.
- 🛠️ Debugger
Graphical app
The app would be based on the builtin outputs.
- 🔲 Traffic Panel
- 🔲 Packet Tab
- 🔲 Ordered list of all packets being sent/received by the engine
- 🔲 Ability to apply filters on the list to show specific packets
- 🔲 Insight for each packets on what's happened during serialization/deserialization
- 🔲 Insight for each packets on what's happened during injection
- 🔲 Channel Tab
- 🔲 List of opened channels with their nodes information
- 🔲 List of packet involved into channels (sent and received)
- 🔲 Workers Panel
- 🔲 Insight of each task of each workers
- 🔲 What subtasks has been created
- 🔲 If task is paused, know why (is it waiting for a request, for another task etc...)
- 🔲 Persistence Panel
- 🔲 Get insights on what happens during the serialization of a packet
- 🔲 Know what presence request are done
- 🔲 Know what Network Object are sent
- 🔲 Know what objects are replaced by a reference
- 🔲 Know what unregistered classes and SyncDef classes are sent