Salut, je vous présente un projet que je développe depuis pas mal de temps.
Introduction
Le but du projet est de créer une alternative au web actuel (mail, site web, réseaux sociaux, http, ftp …) Pour ce faire, on utilise un serveur nex qui peut être utilisé :
-
côté client ou serveur : un utilisateur peut installer un serveur nex pour gérer ses informations locales puis les partager simplement sur le net avec d'autres clients ou d'autres serveurs
-
centralisé ou décentralisé : on peut par exemple créer un réseau d'échange de données (ex: réseau social) décentralisé, les données sont échangées entre chaque utilisateur directement
-
sur le net ou en local : on peut utiliser le serveur comme une bibliothèque de gestion de données (films, musiques) sans la connecter au net
Grâce aux fonctionnalités de base, on peut créer des applications assez rapidement comme un serveur mail juste en configurant le serveur. Le serveur est prévu pour accepter plusieurs protocoles (actuellement : nex, http, ws) La visualisation des ressources se fait via les interfaces qui peuvent être côté client ou serveur. On pourrait donc par exemple stocker les informations de molécules sur un serveur nex et les visualiser côté client avec un moteur 3D.
Chaque information ou ensemble d'informations sera organisée dans une structure appelée ressource (plus d'infos dans la description)
Description
Caractéristiques principales
- contrôle de la fiabilité, qualité et accessibilité de l'information
- ressources, types de données et interfaces personnalisables
- connectivité des ressources
- mise en place de structures de données et réseaux d'informations simple et rapide
- sécurité de l'accès à l'information
- partage simple et rapide
- gestion des utilisateurs et groupes d'utilisateurs
- synchronisation multiple des données
- recherche avancée (types, propriétés, tags, ressources parents) (la popularité n'est pas imposée)
- modules (client/serveur) permettant d’interagir avec les données et interchangeables
- privatisation, pas de contrôle des données par une seule organisation, vous choisissez ou et avec qui vous partagez vos données
- vous choisissez quelles informations vous voulez surveiller quelque soit son emplacement (notification)
- redondance minimale des données
- possibilité de repartir les données sur plusieurs serveurs physiques grâce a la virtualisation de serveurs nex
Concept
Nex est donc un système de gestion de ressources organisé comme ceci :
Structure globale
- ressources : elles stockent les informations
- modules : ils permettent d'ajouter des fonctionnalités et de traiter les ressources
- interfaces : elles permettent de visualiser les ressources
Ressources
Les ressources permettent de stocker une information sous une structure définie, le but est de représenter une idée (qui peut utiliser plusieurs informations) avec une seule entité. Par exemple, une ressource "film" contiendra comme données une image (l'affiche), une vidéo (le film), du texte (réalisateur / acteurs etc ..)
Une ressource peut avoir :
- des types (identification de l'information)
- des connexions (liens logiques)
- des modules (applications de fonctions)
- des interfaces (affichage des informations)
Connexions
Ces ressources peuvent être connectées entre elles par différents types de connexion. Par exemple, sur un forum, on pourrait connecter une ressource de type "message" à une autre avec la connexion "résolution" ou deux questions similaire avec "similitude". On peut ensuite à partir de n'importe quel message retrouver les connexion résolutions en utilisant la connexion "similitude".
Un autre exemple, la connexion "phonétique" qui permet de trouver une information quand on ne connait pas l'orthographe lors de la recherche.
Le but est donc que l'utilisateur puisse chercher et trouver des informations de la même manière qu'il le fait avec sa mémoire.
Module
Le module noyau est "nxs", il permet la gestion de base des ressources, par exemple pour lister les ressources, on utilise la commande "res_list" de du module "nxs"
Chaque module peut utiliser les fonctions des autres modules, un module pourra donc utiliser les fonctions de nxs
Un module peut être exécuté côté serveur ou client, on peut donc utiliser une ressource distante avec un module local ou inversement. Par exemple pour exécuter une requête sur un serveur, on peut écrire : nxs::request::execute("nxs::res_list;id:0;", adresse_serveur);
On peut ainsi lister les ressources (root) locales ou d'un serveur spécifié puis les utiliser dans un module ou une interface.
Interface
Similaire aux modules, leur but est de gérer l'affichage
Actuellement les interfaces sont en C++ et génèrent du html, l'ajout du python est prévu. Serveur
Le serveur peut gérer plusieurs protocoles (actuellement http et nex), il sera possible d'en ajouter par la suite (ws, ftp ..)
Actuellement, le protocole nex permet aux serveurs de communiquer entre eux, d'envoyer des données (binaire / texte / texte serialisé). Les données peuvent être envoyées en stream, la requête sera donc exécutée à chaque réception des données. Partage
La gestion des transferts et partage de ressources / fichiers sera géré par le module nxs.
Il y aura plusieurs façon de partager des ressources :
- ajout de connexions
- transfert des données
- synchronisation des ressources
On peut donc créer de nombreuses applications en combinant ces différents éléments, par exemple une application mail se fera assez rapidement en combinant le partage via connexion, la synchronisation et la gestion des autorisations
Recrutement
- Devs C++ (système / interface / modules)
- Webmaster (site de présentation / documentation)
- Graphiste (présentation du projet / réalisation de maquettes pour l'interface graphique)
- Webdesigner / dev JS (interface)
Je recherche des personnes sérieuses capable de s'investir un minimum et de travailler dans une ambiance agréable.