Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Node-WebKit] NightOS, un OS HTML5

Un système d'exploitation en HTML5

Anonyme
    3 mars 2015 à 17:05:59

    Ce projet a été abandonné et n'est plus maintenu. Utilisez-le à vos risques et périls, les nouveaux bugs et failles de sécurité ne seront PAS corrigées. L'adresse du dépôt GitHub a également changée : https://github.com/ClementNerma/NightOS-deprecated

    Bonjour à tous, aujourd'hui je vais vous parler d'un projet dont j'ai eu l'idée il y a un peu plus d'une semaine : NightOS

    En savoir plus sur le projet

    Genèse

    Passionné par le développement web depuis plus d'un an demi (seulement !), j'ai créé de nombreux projets sans toutefois les finir (excepté un seul). A mes débuts, mon rêve c'était de fonder une entreprise d'informatique encore plus grande que la Microsoft Corporation (et oui j'étais très naïf :)). Puis, depuis plus ou moins six mois, c'était de créer un système d'exploitation graphique avec un certain nombre de fonctionnalités. Pas pour surpasser Windows ou Linux, mais pour le plaisir. Sauf que je m'étais dit "trop dur, le C/C++ c'est pas trop mon truc en plus". J'ai ensuite développé de multiples petits projets (petits = moins de 50 heures de travail) et j'ai découvert finalement, en cherchant un moyen de créer des applications natives en HTML5, le fameux Node-WebKit. Très vite, j'ai été attiré par ce système (je reviendrais dessus tout à l'heure), et finalement, il y a un peu plus d'une semaine, j'ai eu l'idée de faire un système d'exploitation en HTML5.

    Généralités et avancement

    Pour mener à bien ce projet, j'ai choisi de créer un système basé sur une version minime de Linux (que je n'ai pas encore choisi), sur laquelle j'aurais implémenté un Daemon qui lancerait automatiquement Node-WebKit au démarrage, sans afficher de bureau ou quoi que ça soit. Et cela car Linux est libre de droits et "simple" d'utilisation. Ensuite, j'ai choisi Node-WebKit car il implémente des technologies très intéressantes. En effet, il est basé sur le célèbre NodeJS (d'où son nom), ce qui permets nativement l'utilisation de commandes telles que require(). Ensuite, cela me permets d'accéder au disque dur via require('fs'); Alors certe, pas de gesion des partitions, mais au moins un accès aux dossiers et aux fichiers complet avec gestion des encodages. Enfin, il utilise le moteur JS V8 de Google, le moteur javascript le plus rapide au monde à ce jour (ainsi que WebKit pour le rendu des pages web).

    NightOS est donc un système d'exploitation possédant un noyau assembleur mais une interface utilisateur HTML5. Et question performance, pas de problème : entre le moment où je double-clique sur l'icône Node-WebKit depuis mon bureau Ubuntu, il faut moins d'une demi-seconde pour que le logiciel se lance et pour que NightOS charge les fichiers nécessaires.

    ? MAIS ??? Il existe déjà des systèmes de cloud-computing permettant de faire cela !

    Et bien oui, il existe déjà des solutions dites de "cloud-computing", c'est-à-dire que vous gérez votre bureau virtuel depuis internet sans rien avoir à installer, sinon un navigateur.

    Mais ici, pas question de cela. Je parle d'un système qui fonctionne sur un disque dur, sans même nécessiter de connexion à internet (bien que cela soit recommandé pour les mises à jour par exemple). Et un système extrêmement léger : je pense pouvoir faire un système dont la taille sera inférieure à la moitié du poids d'Ubuntu (c'est-à-dire moins de 3 Go tout compris). L'UI est par ailleurs extrêmement fluide et pèse au total moins d'un méga-octet pour l'instant

    Le fonctionnement de NightOS

    NightOS est organisé en trois structures : le noyau de boot (Linux + Daemon + Node-WebKit), le noyau système (NightOS), et les applications, elles-même divisées en trois parties : les applications systèmes (j'y reviendrais), les applications root (pareil), les applications tierces.

    N'hésitez pas à relire si vous ne comprenez pas parfaitement, ce n'est pas simple à expliquer et encore moins à comprendre.

    Les applications

    Lorsque le noyau de boot est lancé, c'est le tour du noyau système. C'est lui, par exemple, qui vous affiche la liste des utilisateurs et vous propose de vous connecter, qui vous affiche votre bureau, etc. Ensuite, viennent les applications. Il y a tout d'abord les applications systèmes : elles sont situées dans le dossier système, nul ne peut y accéder (pas même vous), seul le système le peut. Cela comporte, entre autres, le gestionnaires des tâches, le planificateur de tâches, le panneau de configuration, etc. Puis, les applications root. Ce sont des applications particulières qui possèdent un certificat leur permettant d'obtenir les drois root (c'est-à-dire s'exécuter dans le fenêtre courante et obtenir l'accès au disque dur, etc.) Enfin, les applications tierces.

    Les applications tierces, je ne pouvais pas les faire s'exécuter dans la frame principale. En effet, cela aurait permis un accès à toute l'interface, aux variables systèmes, et j'en passe. Alors je les lance dans un iframe. Celui-ci contient l'attribut SANDBOX d'HTML5 pour empêcher à cet iframe d'accéder à son parent pour récupérer des variables ou modifier le contenu HTML.

    Aperçu du code HTML de l'iframe :

    <iframe sandbox="allow-scripts">...</iframe>

    J'injecte ensuite le code d'un fichier HTML dans l'iframe qui crée des fonctions pour utiliser le disque dur si l'application y est autorisée, garde en mémoire dans une variable privée la commande require(), lance l'application et le tour est joué ! De plus, si une application "plante", ou si une erreur se produit, cela n'aura aucune répercussion sur la frame principale. Et je pourrais, quand je le souhaite, stopper l'exécution de telle ou telle application via le gestionnaire des tâches.

    Encore une fois, n'hésitez pas à relire plusieurs fois si besoin s'en fait sentir.

    Les permissions

    Pour utiliser les fonctionnalités du système, les applications ont besoin d'autorisation

    La structure des applications

    Une application est un fichier ZIP portant l'extension .app. Une fois décompressé, on obtient ces fichiers :

    .app (Zip compression)

    package.app
    app.js
    uninstall.js
    hash.cpy
    

    ? Comment ça fonctionne ?

    Le fichier package.app est au format JSON. Il contient le nom de l'application, sa version, le nom de son/ses développeurs, les permissions de l'application, etc. Oui, car une application a besoin de permissions pour effectuer certaines tâches. Ces permissions ne peuvent être modifiées car le dossier des applications ne peuvent être modifiés si l'application ne possède pas les droits root, et vous en êtes averti à l'installation. Il faut des permissions pour écrire des fichiers, lire des fichiers, créer des dossiers, etc.

    Ensuite, app.js. C'est le fichier principal de l'application qui sera exécuté à chaque fois que l'application sera lancée. Uninstall.js sera exécuté, lui, lorsque l'utilisateur souhaitera désinstaller l'application. Il sert surtout à supprimer les fichiers temporaires.

    Passons maintenant à hash.cpy. Pour protéger d'une couche supplémentaire les applications de la modification via un OS externe, par exemple, NightOS utilise l'algorithme suivant :

    Le développeur développe son application et la compile On obtient un .app.src qui n'est que la source de l'application, qui n'est exécutable que sur la machine de son développeur (je ne rentrerais pas dans les détails sur ce point-là pour l'instant). Il mets en ligne son applications sur le store en ligne de NightOS. L'administrateur (moi, en l'occurence) du store valide l'application. Le serveur effectue alors un hash en sha-384 de l'application, et crypte ce hash en RSA avec la clé privée que l'administrateur est le seul à posséder. Il crée un .app contenant ce hash crypté : c'est l'application. Le client télécharge l'application sur le store. Celle-ci est décompressée sans aucune vérification dans le dossier apps, inaccessible à l'utilisateur ou aux applications tierces.

    Lorsque l'utilisateur veut lancer l'application, le système vérifie la présence du fichier hash.cpy. Si il est manquant, il refuse tout bonnement de lancer l'application. Si il est présent, il hash en sha-384 le code source de l'application et décrypte le fichier hash.cpy avec la clé publique présente dans les fichiers systèmes.

    Grâce à ce système appellé signature, une application modifiée ne pourra pas être exécutée. Cela empêche le piratages des applications payantes et/ou leur modification pour la distribuer ensuite gratuitement à d'autres personnes.

    Alors, certes, il est possible de contourner cela si l'utilisateur modifie son système d'exploitation, mais cela protège au moins contre la plupart des modifications. De plus, un hack du système peut nuire à sa stabilité et à sa sécurité, donc il est fortement conseillé de ne pas le faire.

    L'interface

    Lorsque vous lancez NightOS, vous êtes accueillis par une page de connexion vous demandant de vous connecter à votre compte (pour la vérification du mot de passe, j'utilise un système de hash) puis vous affiche votre bureau.

    L'assistant vocal

    Pour les personnes ayant des problème moteurs ou tout simplement pour les flemmards (comme moi :p), un assistant vocal sera implémenté. Sur le même principe que "OK Google", il vous permettra d'ouvrir ou fermer des fenêtres ou applications entières, de déplacer et redimensionner des éléments, de faire une recherche sur internet, de simuler l'utilisation de la souris et du clavier sans pour autant y toucher, etc. Les réponses, si il y en a, seront annoncées à voix haute. Cela permettra également de lire de paragraphes de texte pour les personnes malvoyantes.

    Mises à jour

    Des mises à jour seront régulièrement proposées pour améliorer le produit ou les applications, libre à vous d'accepter ou de décliner leur installation. Notez qu'une connexion à internet sera requise.

    La Sandbox

    Si vous n'avez pas vraiment confiance en une application, vous pouvez choisir de la lancer en mode sandboxed. Cela vous permets d'exécuter l'application sans risque car elle sera montée dans un bureau virtuel. Lorsque vous la fermerez, vous pourrez choisir ou non de voir et/ou conserver les modifications apportées par celle-ci.

    Objectifs

    Mon objectif, c'est de créer un système d'exploitation Open-Source complet et sécurisé, simple d'utilisation et utilisable par tous, possédant toutes les fonctionnalités de base des autres systèmes tels que Linux, Microsoft Windows ou Mac OS... (et oui, tout ça à la fois ! :))

    Le projet et son originalité

    L'avantage de ce projet c'est qu'il existe peu/pas de systèmes d'exploitations possédant une interface utilisateur en HTML5. D'où son originalité. De plus, il possède des fonctionnalités que n'ont pas les autres systèmes nativement, comme l'auto-sauvegarde des données pour les applications qui le supportent : vous surfez sur internet, éditez une image et tapez un texte sur un traitement de texte, et là, paf ! Coupure de courant. Eh bien en rallumant votre ordinateur, vous pourrez tout restaurer ! Etc.

    Avancement

    Actuellement, j'ai développé pas mal la partie backend, j'ai fait la page de login et je suis en train de coder le bureau.

    Votre avis !

    Malgré l'apparance de ce post qui peut être trompeuse, ceci n'est pas une pub, je veux juste présenter mon projet de fond en comble pour avoir vos avis tout en sachant que vous connaissez parfaitement le fonctionnement du système.

    Alors, que pensez-vous du projet NightOS ?

    P.S. : Je n'ai pas encore mis de screenshots mais je ne manquerais pas d'en mettre bientôt en ligne :)

    -
    Edité par Anonyme 28 août 2016 à 11:21:48

    • Partager sur Facebook
    • Partager sur Twitter
      3 mars 2015 à 17:19:58

      Bonjour

      Je n'ai ni les connaissances, ni les qualités pour juger l'aspect technique, et/out soulever un problème important, mais d'un point de vue objectif, le travail réalisé a l'air assez important, et je suis assez curieux de voir tourner ce fameux OS.

      Le seul problème que je vois se pointer à l'horizon (peut-être à tort), c'est la manque d'applications/programmes compatibles.

      Bref, je vais essayer de suivre l'avancement de ce projet.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 mars 2015 à 20:29:26

        C'est effectivement un très gros projet (je pense que ça va me demander dans les 100-200 heures de travail, que je répartirait sur deux ou trois mois), et pour les applications les seules programmes supportés seront sont crées avec le SDK NightOS, en HTML5 donc (notez que le SDK sera disponible en application NightOS et sera inclus lors de l'installation du système. En revanche ces applis tourneront normalement dans des processus différents, ce qui paliera à la 'lenteur' du javascipt par rapport ai C++ par exemple. Et le moteur V8 est également là pour ça.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 mars 2015 à 22:07:08

          Bon ! J'ai réussi à faire s'afficher les icones des fichiers et dossiers sur le bureau et à lancer la fonction de lancement de fichiers lorssue l'on clique dessus. Les boites d'avertissement, de dialogue, et de saisie sont presque terminées. Il me reste encore à faire le lanceur d'applications et ça ça risque de me prendre du temps... Mais pour l'instant pas de problèmes majeurs, le projet avance vite et bien (j'ai pu programmer environ 10-20 heures en une semaine) Je mettrais des screenshots dans 2 jours normalement.

          J'en profite pour préciser que le système sera équipe d'un terminal (pas linux) personnalisé qui permettra d'exécuter des commandes de gestion de fichiers, etc.

          -
          Edité par Anonyme 4 mars 2015 à 22:05:52

          • Partager sur Facebook
          • Partager sur Twitter
            3 mars 2015 à 22:18:17

            Clément7 a écrit:

            C'est effectivement un très gros projet (je pense que ça va me demander dans les 100-200 heures de travail, que je répartirait sur deux ou trois mois)

            Lol, 100 ou 200 heures de travail, c'est rien du tout.

            Sinon, tu veux faire un système d'exploitation en HTML5 et JavaScript, j'pense pas qu'il y a besoin d'ajouter quoi que ce soit...

            -
            Edité par Grand__Smurf 3 mars 2015 à 22:22:00

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              4 mars 2015 à 9:22:36

              100-200 heures de travail quand on est lycéen, si c'est beaucoup ! (Pour un dev' professionnel je sais pas)

              Grand__Smurf a écrit: Sinon, tu veux faire un système d'exploitation en HTML5 et JavaScript, j'pense pas qu'il y a besoin d'ajouter quoi que ce soit...

              Je ne comprends pas ce que tu veux dire. Il est physiquement IMPOSSIBLE de créer un OS uniquement en HTML5. Car il fait charger les drivers, interagir avec le disque dur et la carte graphique, etc. et il faut bien un moteur web pour exécuter le HTML/JavaScript !

              • Partager sur Facebook
              • Partager sur Twitter
                4 mars 2015 à 11:40:18

                Non, même quand on est lycéen. J'ai fais des projets qui m'ont pris facilement 5 fois ce temps quand j'étais au lycée...

                Sinon, ce que je veux dire, c'est que c'est ridicule de vouloir faire un OS dans un langage qui n'est pas du tout adapté. Je connais pas trop node-webkit, mais j'imagine que tu ne peux pas le lancer "from-scratch", ça sera nécessairement une surcouche à un OS que tu lancerais comme une application lambda, ce qui n'a aucun intérêt...

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  4 mars 2015 à 12:39:44

                  L'OS sera, comme je l'ai expliqué dans mon premier post, un linux minimifié (juste le noyau, pas d'interface graphique etc.) avec un daemon qui lancera node webkit. De plus, c'est loin d'être une 'idée ridicule' car je ne suis pas le premier (ex : jolicloud)

                  -
                  Edité par Anonyme 4 mars 2015 à 12:40:24

                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 mars 2015 à 16:05:48

                    Je poste pour suivre, bien que je sois du même avis que Grand__Smurf.

                    Je te souhaite bon courage Clément, on attend de voir ça ! ^^

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Créer : voilà la grande délivrance de la souffrance, voilà ce qui rend la vie légère.
                      5 mars 2015 à 0:12:51

                      Salut,

                      Alors moi je suis sceptique. Ton idée est sympa mais on s'aperçoit très rapidement des limitations d'un tel système. Premièrement l’appellation "OS" est fausse. Tu ne va faire qu'ajouter une surcouche sur un OS existant. De par ce fait, je qualifierai ton OS de Desktop. Ce sera l'équivalent d'un Gnome ou KDE.  Et si tu me dis qu'il va aussi contenir un login manager, je te répondrai que Gnome a aussi son propre système de login. Dans le meilleur des cas, tu va créer une distribution Linux et en aucun cas un nouvel OS.

                      Je vois certains problèmes évidents de sécurité au niveau du login. A savoir :

                      1. Soit ton application outrepasse le système de login du noyau Linux
                      2. Soit ton application va être lancée avec l'utilisateur root de la machine car je présume qu'il faut des privilèges pour la faire tourner.

                      Tu va te retrouver avec des énormes soucis de sécurité. Je ne pense honnêtement pas que le JS (Node et Webkit compris) puissent te fournir tout ce dont tu as besoin pour fonctionner en terme de sécurité. L'escalade de privilège va, a mon avis, être un gros soucis.

                      Étonnement ton projet me rappelle fortement gnome qui utilise le GJS pour ses extensions et une grosse partie de ses libs.

                      De plus tu as une forte ambition au niveau des capacités de ton application. Lancer des trucs en sandbox, l'assistant vocal, etc... Ce sont autant d'applis ou de projets qui peuvent a eux seuls prendre beaucoup plus de 100-200 heures de travail. Sans compter les limites du JS et de la v8 engine. Tu n'atteindra jamais des performances égales au C/C++. Quant au fait de les faire tourner dans des processus différents, c'est bien beau, mais ça ne règle pas le problème de lenteur. Un langage est plus lent qu'un autre en fonction des ressources qu'il utilise. Utiliser différents process ne va rien pallier du tout (du moins je pense), surtout dans un langage asynchrone.

                      Quant à l'originalité du projet c'est peut-être aussi un défaut. Il y a une raison pour laquelle cette pratique n'est pas très répandue, et même si je n'en connais pas totalement le fond, je présume que tu va rencontrer des problèmes.

                      En résumé, sur tous les trucs que tu proposes dans ton desktop environment, je pense que tu peux multiplier par 10 ou 20 ton temps estimé.

                      "j'ai eu l'idée de faire un système d'exploitation en HTML5"
                      Si tu savais ce que me fait cette phrase. Le HTML n'a et n'aura jamais la prétention d'aller aussi bas qu'un OS. Je te rappelle qu'un OS est ce qui est chargé de faire la communication avec les périphériques, gérer la RAM, contrôler la charge CPU, allouer la mémoire, monitorer les processus, gérer des services, etc, etc...

                      Je t'évite un problème supplémentaire, a moins que tu ne veuilles faire une distrib Linux, dit plutôt que tu veux faire un Desktop Environment avec un Login Manager. Ça aurai l'avantage si ça abouti de pouvoir être installé sur n'importe quel Linux.

                      "Mon objectif, c'est de créer un système d'exploitation Open-Source complet et sécurisé, simple d'utilisation et utilisable par tous, possédant toutes les fonctionnalités de base des autres systèmes tels que Linux, Microsoft Windows ou Mac OS... (et oui, tout ça à la fois ! :))"
                      Alors ça c'est pas super compliqué vu que tu sera sur un noyau Linux au final.

                      "De plus, il possède des fonctionnalités que n'ont pas les autres systèmes nativement, comme l'auto-sauvegarde des données pour les applications qui le supportent : vous surfez sur internet, éditez une image et tapez un texte sur un traitement de texte, et là, paf ! Coupure de courant. Eh bien en rallumant votre ordinateur, vous pourrez tout restaurer ! Etc."
                      ChromeOS ? Sauf que c'est pas en mode cloud, du coup c'est un peu limité. De plus beaucoup d'éditeurs font déjà ce genre de chose.

                      Attention, je ne suis pas un troll. Je trouve ton projet très intéressant. Je ne fais que pointer du doigt ce qui me semble incohérent ou irrationnel. Je pense que lire mon message pourra t'aider a te poser les bonnes questions avant d'aller plus loin. J'espère que ça t'aidera à faire de bons choix de développement, à écarter certains sous-projets qui prendront trop de temps dans tous les cas et surtout a te renseigner sur les capacités de Node-WebKit sur ce que tu veux faire.

                      -
                      Edité par Depado 5 mars 2015 à 0:29:27

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        5 mars 2015 à 7:46:47

                        Bonjour Fire4764, effectivement je ne comptais pas créer un OS, país un pseudo-OS (une UI comme je l'ai expliqué dans mon premier post) basé sur un linux minimisé.

                        En ce qui concerne les privilèges, je n'ai pas encore tout défini mais il n'y aura pas besoin des droits root pour lancer NightOS. Le système comprendra en revanche un terminal linux (seule moyen d'exécuter des commandes qui touchent au kernel).

                        Pour la ressemblance avec GNOME, je ne savais pas qu'il utilisait en partie du JS, je ne me suis inspiré a vrai dire d'aucun projet existant avant de commencer.

                        Enfin, la durée de développement ne devrait pas excéder celle que j'ai indiquée (100-200 heures) car la création d'une application en HTML5, et surtout avec node webkit, est 5 à 10 fois plus rapide qu'une application C/C++. Node-WebKit permets d'utiliser les fonctions NodeJS, dont des fonctions JS permettant de créer lire supprimer des fichiers et dossiers. Pour ce qui est de la connexion à internet, et de toutes les fonctionnalités plus complexes, je verrais comment je ferais.

                        L'un des objectifs est aussi de faire un système léger (avec un linux minimisé) qui pourrait tourner sur des machines assez peu puissantes la aussi.

                        Les performances du système plus faibles en HTML-JS ne devrait même pas être remarquable, sauf pour les grosses taches comme les jeux vidéos 3D qui n'existeront sans doute pas sous NightOS.

                        Le but n'est pas de 'battre' les grands OS qui se sont imposés dans le marché de l'informatique, mais plutôt de créer un système innovant, simple d'utilisation et sécurisé, même s'il n'est pas très bas niveau. De plus, ce sera un bon test pour ceux qui ont des doutes sur les performances du JS à accomplir une tache semblable.

                        Ce qui me prendra le plus de tels, c'est le développement du noyau système et du SDK. Après le reste devrait etre  assez rapide.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 mars 2015 à 9:20:41

                          Node-WebKit permets d'utiliser les fonctions NodeJS, dont des fonctions JS permettant de créer lire supprimer des fichiers et dossiers.
                          Dans ton premier post tu ne parles pas uniquement du gestionnaire de fichier. Faire un gestionnaire de fichier avec Node-WebKit ne devrai pas être extrêmement long et encore j'ai certains doutes concernant les périphériques USB, ainsi que la capacité de Node-WebKit d'afficher une barre de progression lors d'un transfert de fichier (mais je ne connais pas assez cette techno pour savoir ce genre de détails).

                          Enfin, la durée de développement ne devrait pas excéder celle que j'ai indiquée (100-200 heures) car la création d'une application en HTML5, et surtout avec node webkit, est 5 à 10 fois plus rapide qu'une application C/C++
                          Encore une fois je le répète, tous tes sous-projets comme le gestionnaire de fichier, la sandbox, l'assistant vocal, la gestion des programmes installés risquent de prendre chacun beaucoup plus de temps que ce que tu imagines. Peut-être que je me trompe cela dit.

                          En ce qui concerne les privilèges, je n'ai pas encore tout défini mais il n'y aura pas besoin des droits root pour lancer NightOS. Le système comprendra en revanche un terminal linux (seule moyen d'exécuter des commandes qui touchent au kernel)
                          Éxecuter des commandes qui touchent au kernel ? Comme par exemple ?

                          effectivement je ne comptais pas créer un OS, país un pseudo-OS (une UI comme je l'ai expliqué dans mon premier post) basé sur un linux minimisé.
                          Le terme est toujours faux. Le noyau Linux derrière est l'OS. Tu te contente d'apporter une surcouche graphique. Au final c'est Linux qui va faire tourner les applis Node-Webkit qui seront développées pour NightOS. D'ailleurs je suis curieux. Par Linux minimisé tu entends quoi ? Tu va créer toi même ta distrib avec LFS ?

                          Les performances du système plus faibles en HTML-JS ne devrait même pas être remarquable, sauf pour les grosses taches comme les jeux vidéos 3D qui n'existeront sans doute pas sous NightOS.
                          Qu'est-ce qui m'empêche depuis le terminal intégré de télécharger, compiler et lancer un programme en C ? Rien je pense. Tu dis que tu ne va pas lancer de bureau ou quoi, mais tu aura quand même besoin d'une interface graphique pour faire tourner ton application, à savoir X11 ou Wayland. Encore une fois, ce n'est ni un OS ni un pseudo-OS, c'est un Desktop Environment. Je pourrai parfaitement m'en abstraire et décider d'installer KDE, vu que l'OS qui fait tourner ton application est Linux.

                          Je comprend l'attrait que peu offrir le fait de dire "Je développe mon propre OS" mais ce n'est pas le cas. Et la mauvaise utilisation de ces termes induit en erreur.

                          -
                          Edité par Depado 5 mars 2015 à 9:22:06

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            5 mars 2015 à 11:35:50

                            Encore une fois, je l'explique : je vais créer une distribution linux minimisée (sans interface graphique et avec beaucoup moins d'outils, pas de nautilus, etc.) sur lequel j'ajouterais la 'surcouche' Node Webkit et NightOS. Je ferais sans doute ça avec LFS effectivement.

                            En ce qui concerne les périphériques, nodeJS permets d'afficher la liste des périphériques connectés. Pour la copie des fichiers, je vais vérifier si l'on peut afficher une barre de progression.

                            Le gestionnaire de fichiers sera assez rapide a développer (5 a 10 heures je pense) l'assistant vocal sera également assez rapide et la sandbox me prendra 3-4 heures maximum car je sais exactement comment développer ces applications et que j'utilise des 'techniques' de programmation qui me font gagner beaucoup de temps.

                            Je detaillerais tout cela plus tard (car c'est long et complexe a expliquer et que la je n'en ai pas le temps) mais je compte bien mener ce projet a terme.

                            Par contre il faudrait effectivement peut être mieux que je crée un desktop environment.

                            -
                            Edité par Anonyme 7 mars 2015 à 17:00:53

                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 mars 2015 à 12:00:54

                              Encore une fois, je l'explique : je vais créer une distribution linux minimisée (sans interface graphique et avec beaucoup moins d'outils, pas de nautilus, etc.) sur lequel j'ajouterais la surcouche' Node Webkit et NightOS. Je ferais sans doute ça avec LFS effectivement.
                              C'est ça que tu ne comprends pas. Une distribution Linux n'a pas forcément d'interface graphique ou de gestionnaire de fichier. C'est une surcouche a l'OS, un DE. Prend pour exemple ArchLinux. Quand tu l'installes, tu te retrouves devant un tty, et rien d'autre, c'est a toi d'installer le DE et le login manager.
                              Ensuite pour LFS compte aussi un bon nombre d'heures important car c'est pas a la portée de tout le monde. Pour la distribution Linux d'un de mes projets qu'on avait créée on avait mis des dizaines d'heures pour arriver a quelque chose de sympathique. Et on était plusieurs.

                              Le gestionnaire de fichiers sera assez rapide a développer (5 a 10 heures je pense) l'assistant vocal sera également assez rapide et la sandbox me prendra 3-4 heures maximum car je sais exactement comment développer ces applications et sue j'utilise des 'techniques' de programmation qui me font gagner beaucoup de temps.
                              Je demande à voir :) Personnellement je pense que tu va tomber sur des problèmes qui vont te prendre plus de temps que tu ne l'imagines.

                              Ne te méprend pas, j’attends de voir ce que ça va donner je suis curieux, sinon je passerai pas autant de temps a rédiger des messages vis-à-vis de ton projet :)

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                5 mars 2015 à 12:41:47

                                Ah d'accord je n'étais pas au courant pour le fait que les distrib. Linux n'avaient pas forcément de gestionnaire de bureau. Bon bah au moins maintenant je le sais ;)

                                Pour ce qui est du stockage (pour l'explorateur de fichiers) je ne pense pas rencontrer de problèmes particuliers car j'ai déjà créé et testé intégralement une classe Storage pour modifier des données sur le disque dur (gestion des erreurs, formatage du path pour enlever les caractères invalides, etc.)

                                J'ai juste un gros problème concernant la sécurité de node-webkit sur les iframe (il faudra que je teste) mais sinon tout avance bien et vite :)

                                Actuellement au lancement de l'application NightOS, le système affiche la liste des utilisateurs (et leur avatar), propose de se connecter (vérification du mot de passe par hash) et affiche le Bureau. On peut cliquer pour sélectionner l'icône, double-cliquer pour lancer le raccourci ou le fichier qu'on pointe, ou faire un clic droit pour afficher le menu contextuel.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 mars 2015 à 19:42:54

                                  Bonjour,

                                  Ton projet attire ma curiosité. Je voudrais savoir si tu comptes le rendre Open Source ? Pourrais-tu nous donner quelques screens, même si je sais que ce n'est qu'une version en développement. Je suis toujours curieux de voir.

                                  Cordialement.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    6 mars 2015 à 9:24:13

                                    Bonjour,

                                    Oui je compte rendre le projet Open Source (mais pas libre de droits en revanche).

                                    Pour les screens j'en mettrais dès ce soir. J'essayerais de mettre des capture d'écrans vidéos :)

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      6 mars 2015 à 13:19:13

                                      impatient de voir les screens

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      car le zeste n'est pas amère avec Zeste De Savoir, visitez clèm sur Zds.Mes Logiciels : C'est par ici
                                      Anonyme
                                        6 mars 2015 à 23:04:56

                                        Désolé impossible de mettre les screenshots ce soir car j'ai eu un problème pour les mettre en ligne je le ferais demain matin.

                                        -
                                        Edité par Anonyme 6 mars 2015 à 23:08:59

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          6 mars 2015 à 23:23:12

                                          dommage, mais je prendrais mon mal en patience

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          car le zeste n'est pas amère avec Zeste De Savoir, visitez clèm sur Zds.Mes Logiciels : C'est par ici
                                            7 mars 2015 à 10:11:12

                                            Bonjour,

                                            je suis passionnément ce projet! Bien que désormais Google si est mi (chromebook), je trouve ça intéressant :), surtout pour recycler un vieux pc et bidouiller un peu...

                                            Le précurseur de ce type de système était français (Jolicloud), mais bon, il a abandonné son projet (après avoir vendu un millier d'ordi et que son "OS" a été téléchargé des dizaines de milliers de fois).

                                            Donc bon courrage, j'ai un vieux Acer sous un petit pentium qui attend ce projet lui aussi :) (il sortira de mon placard).

                                            A très bientôt, bonne continuation!

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              7 mars 2015 à 10:39:13

                                              Voilà les screenshots (sous forme d'un .ZIP) que je n'arrivais pas à mettre en ligne hier :

                                              https://docs.google.com/file/d/0B4t5FEqTGyo1eGVraHJvV2JJNUU/edit?usp=docslist_api

                                              Bonne journée !

                                              EDIT : par contre il y a un problème sur les screenshots on voit mon bureau ubuntu a coté de NightOS mais en réalité l'application est bien sur en plein écran sans barre de titre etc.

                                              EDIT2 : mattis25 -> tu peux pour le moment installer Ubuntu sur ton Acer il devrait tourner sans problème. NightOS ne sortira sans doute que d'ici 2 ou 3 mois et tournera peut être un peu plus lentement qu'Ubuntu sur les machines peu puissantes...

                                              -
                                              Edité par Anonyme 7 mars 2015 à 11:13:27

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                7 mars 2015 à 13:29:54

                                                Si tu fais les choses bien avec un linux minimal (Damn Small Linux ferait l'affaire j'imagine) ça devrait être plus rapide qu'un Ubuntu avec Unity sinon faut se poser des questions :)
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  7 mars 2015 à 13:38:59

                                                  Il est possible que les grosses taches soient quand même plus lentes car n'oublions pas que le JavaScript est ~5 fois plus lent que le C++ (d'après des tests chez Google pour un simple algorithme).

                                                  Mais je ne m'inquiète pas trop pour la rapidité tant qu'il n'y a pas de jeux vidéos 3D...

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    8 mars 2015 à 23:56:50

                                                    Grâce à ce système appelé signature, une application modifiée ne pourra pas être exécutée. Cela empêche le piratage des applications payantes et/ou leur modification pour la distribuer ensuite gratuitement à d'autres personnes.

                                                    Personnellement, si j'étais une entreprise, je ne sortirais jamais une application payante sur cette distrib.

                                                    L'HTML5 est un langage de script, et, comme tout bon langage de script qui se respecte, il n'est pas compilé : son code source est visible.

                                                    Ainsi des connaissances poussées en informatique (nécessaires au désassemblage d'applications) ne seraient même pas nécessaires.

                                                    On peut donc très facilement modifier l'OS (enlever la fonction de vérification de la signature...) en bootant sur un live-cd ou même tout simplement en l'installant sur son propre OS, les deux options permettant un accès total au disque dur en outrepassant la vérification de NightOS.

                                                    On peut même faire encore plus simple en récupérant le code source des applications et en le lançant sur Node-Webkit.

                                                    Le seul moyen d'apporter un semblant de sécurité serait d'en faire un OS mobile (avec toutes les contraintes que cela implique) : le matériel vérifierait lui-même le bootloader qui vérifierait le noyau qui vérifierait Node-Webkit et les applications systèmes. De plus, chaque couche serait cryptée et c'est la couche précédente qui la décrypterait, réglant le problème du code source en clair.

                                                    Je dis "semblant" car un moteur web (surtout accompagné d'un moteur javascript) est truffé de failles et les cas "use-after-free" sont très fréquents. Il faudrait donc que le kernel garde un œil sur Node-Webkit et le tue dès qu'un comportement typique d'un use-after-free survient (plantage de l'application) et ça c'est vraiment, vraiment pas facile à faire.

                                                    Après le projet est très intéressant, mais l'ambition de sécurité est disproportionnée à mon goût.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      9 mars 2015 à 7:25:14

                                                      Alors, certes, il est possible de contourner cela si l'utilisateur modifie son système d'exploitation, mais cela protège au moins contre la plupart des modifications. De plus, un hack du système peut nuire à sa stabilité et à sa sécurité, donc il est fortement conseillé de ne pas le faire.

                                                      Tout est dit. Il est en effet possible de supprimer la vérification des signatures, mais cela permets tout de même une protection contre une partie des utilisateurs...

                                                      Bon après c'est vrai que ce n'est pas vraiment sécurisant, et bien sur qu'il n'y aura sans doute jamais d'applications payantes sur le store. C'était surtout pour mieux protéger les applications en général.

                                                      Mais je ne suis de toutes façons pas sur d'implémenter ce système (le projet bouge beaucoup) par la suite.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        9 mars 2015 à 7:44:04

                                                        Clément7 a écrit:

                                                        Alors, certes, il est possible de contourner cela si l'utilisateur modifie son système d'exploitation, mais cela protège au moins contre la plupart des modifications. De plus, un hack du système peut nuire à sa stabilité et à sa sécurité, donc il est fortement conseillé de ne pas le faire.


                                                        Clément7 a écrit:

                                                        De plus, un hack du système peut nuire à sa stabilité et à sa sécurité, donc il est fortement conseillé de ne pas le faire.


                                                        Sérieusement ? xD
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Anonyme
                                                          9 mars 2015 à 21:58:34

                                                          Je sortirais ce week-end la version Alpha Preview 0.1 de NightOS. Elle comprendra le bureau, l'explorateur de fichiers, l'éditeur de texte, le terminal Linux et le terminal NightOS.

                                                          Vous pourrez ainsi tester l'ergonomie du système, le fonctionnement du système du fichiers, etc.

                                                          Notez que si le projet parait avancer lentement, en réalité il avance vite et bien, c'est juste que je crée abord des classes JavaScript pour automatiser la gestion des fichiers, l'accès au disque dur, les applications, etc.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            9 mars 2015 à 22:18:16

                                                            Bonsoir, Juste une question, quel intérêt ? Aucun, cela ne sert à rien de faire des web os (ce qui est à la mode maintenant, ce n'est plus les réseaux sociaux !). Après je ne sais pas... dit moi :) ! Moi, j'ai eu l'idée de faire un bureau pour Windows (simple, beau et efficace) ce qui est plutôt intéressant que un Web OS !

                                                            On peux voir des Screenshots ? PS (TOUT les Web OS sur ce site sont abandonnés donc...)

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            RecruteMe: le recrutement par enchères ! Sortie cet été ! Venez passer un coup d’œil sur FlatSoft
                                                              9 mars 2015 à 23:57:19

                                                              Pour le coup c'est pas un Web OS mais un desktop environment.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              [Node-WebKit] NightOS, un OS HTML5

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown