webpage/docs/roadmap.md
The roadmap outlines the future development plans for Neko. It is divided into three phases, each focusing on a different aspect of the project.
This phase was successfully completed with the release of Neko V3.0.0. The m1k1o/neko server was merged with the archived demodesk/neko server, and the new server was released as V3.0.0. A compatibility layer was added to support V2 clients.
The client rewrite is the next big step in the development of Neko. The V2 client uses Vue2, which reached end of life a long time ago. The new client will be based on Vue3 and will be more modular and easier to maintain.
While the V2 client focused on the user interface, the V3 client will focus on extensibility in the form of components. This means that the client will be able to be loaded seamlessly in any existing application, and the components will be able to be used in any other Vue3 application. For traditional users, the client will still be available as a standalone application with all the known features.
The V3 client and server will be modularized to allow for easier maintenance and extensibility.
Neko can connect to the backend using multiple channels. Therefore API users should not be exposed to WebSocket internals.
They should only care about the connection status:
connected - user is connected to the serverconnecting - currently the client is attempting to establish a connection to the server.disconnected - user is disconnected from the server and there are no attempts to connect to the server. This should always be notified with a reason why it has been disconnected.And about connection type:
none - no connection is currently used.short_polling - every X ms the client requests the server for updates.long_polling - HTTP request is kept open until the server has updates to send to the client. Then the client sends another request.sse - server sends updates to the client using Server-Sent Events.websocket - server sends updates to the client using WebSockets.For media streaming, we implement a similar approach with the following streaming backends:
none - no media streaming is currently streamed.m3u8 - media is streamed using HLS.webrtc - media is streamed using WebRTC.quic - media is streamed using QUIC.Various media streaming backends can have various features. For example, WebRTC can have a feature to send media to the server, while HTTP can only receive media from the server. They can be selected based on the user's device capabilities, network conditions, and server capabilities. There must be a single interface that all streaming backends must satisfy and it is their only communication channel with the rest of the system.
The user can control the target system using various human interface devices. The user can use a keyboard, mouse, gamepad, touch screen, or any other device that can be used to control the system. Custom or virtual devices can be used as well.
Normally in-band feedback should be provided to the user inside the media stream. But there can be cases where out-of-band feedback is required.
Control can use both underlying connections or media streaming for transmitting and receiving control data. For example, WebRTC data channels can be used for transmitting control data in real-time.