Jean-Yves Beaujean wrote:

Impeccable ça ! Tu as surement le schéma de la base alors ?
Quel etait le SGBD utilisé ? MySQL, PostgreSQL ?

On pourrait partir de ce schéma pour bosser.

Je dois pouvoir retrouver ca, mais faut bien qu'on définisse les objectifs, et ceux de Mandrakesoft à l'époque (l'an dernier) ne sont pas les mêmes que les miens actuellement (et je ne suis pas d'accord avec beaucoup de chose qu'on m'a fait faire la-bas, en particulier la base hardware)

* [mes] objectifs de base hardware [à fusionner avec les vôtres et se mettre d'accord] - à partir d'informations commerciales, pouvoir retrouver mon matériel dans la base (via le web) et avoir des retours d'expérience. [saisie manuelle des informations pour récupération d'information]

- à partir d'un ordinateur, pouvoir lister mon matériel et avoir un retour d'expérience [mode entièrement automatique]

- des extensions sont possibles à partir de là (par exemple, appeler un outils de configuration du matériel)

* j'insiste sur le fait que la saisie de matériel en insertion dans la base doit être automatique (rajouter un matériel par son nom et sa marque ne permettra rien d'automatiser et risque de se retrouver en plus en doublons dans la base) - par contre, associer à un matériel déjà existant dans la base, on doit pouvoir rajouter des informations complémentaires (impossible à avoir automatiquement) comme la liste des marques proposant le produit ou encore des commentaires selon la distribution.

* voici donc les outils [mini-projets] que je propose qu'on réalise :

=== lshd ===
actuellement, il existe des outils sous unix pour lister le matériel comme lspci, psusb, sane-find-scanner... mais aucun ne permet de lister convenablement le matériel (si y'a hardrake de mandrake ou d'autres, mais il sont distribution dépendant, ce qui n'est pas ma volonté et ce que je reproche principalement à mdk) cette commande devrait avoir un comportement similaire à lspci et permet donc de lister le matériel. Les périphériques pci sont identifiable par 4 identifiants (sauf très rare exception), les idpci et les péripériques usb par exemple, sont identifiable par 2 identifiants.

un résultat de lshd pourrait etre le suivant :
[type|identifiants|description]
PCI 453231 46231 43213 1354 Carte toto
PCI 5654     46453 94563 13      Carte tutu
USB 32 546 Carte truc
(le type (1ere information) défini les informations suivantes, par exemple, si USB alors on aura 2id puis la description)

l'outil doit etre modulable (pour éviter de faire un fouretout)
par exemple, un module pci pourrait etre chargé si lspci existe et listerait alors les périphériques pci, idem pour usb, ...

il faudrait déjà voir s'il n'existe pas un projet similaire. S'inspirer des lspcidrake -v ou autre outils, toujours en utilisant des outils non distribution dependant

On peut imaginer par la suite une version graphique du listage de matériel (mais la on s'éloigne du projet initial) L'idée de lshd est de faire un outils de listage de matériel de manière à ne pas avoir pour remplir la base hardware à faire appel à lspci, lsusb, ... un peu n'importe comment ; il s'agit d'une première couche logique au niveau du matériel afin de pouvoir développer une couche supérieure propre.

L'outils lshd doit rester basique (éventuellement une version graphique utiliserait aussi les autres outils mentionnées par la suite)

=== lshw-web ===
outils permettant de lister le matériel (via lshw) et permettant d'envoyer les informations du matériel d'une machine sur le web. L'outils devrait retourner un lien ou quelque identifiant que ce soit pour permettre à l'utilisateur de retrouver les infos de son matériel sur le web (on imagine donc qu'on plugin firefox soit le bienvenue qui éviterait de lancer le script en ligne de commande dans un premier temps et d'aller sur le web ensuite)

=== libre hardware database ===
quelles infos doit contenir la base, c'est sur ce point qu'on doit se mettre d'accord, voici mes propositions argumentées, à vous de me dire ce que vous en penser.

Une table dans laquelle chaque ligne correspond à un matériel unique :

table hds
id (identifiant interne pour la base (cet id interne est nécessaire car les autres clefs possible de cette table sont gros))
   id_plug (numéro du type de matériel, clef étrangère de la table hdplug)
   idhd1
   idhd2
   idhd3
idhd4 (conceptuellement, c'est pas très joli, mais pour une bonne efficacité, c'est mieux ; ca correspond aux identifiants du matériel, 4 car c'est le max du nombre d'identifiant des types actuellement)
   description
   id_type (carte graphique, clef usb, appareil photo, ...)
   picture (toto.jpg)

   unique(id_plug, idhd1, idhd2, idhd3, idhd4)

Cette table est donc très simple, c'est elle qui doit être rempli de manière automatique.
Elle correspond à l'outils lshd
Pourquoi ne pas mettre la marque du matériel ?
car beaucoup de matériel sont proposés par différentes marques (la liste des marques ne peut etre que manuelle, rien ne permet de l'automatiser ; elle est parfois présente dans la description, mais celle ci est bien souvent fausse (en particulier pour les clefs usb))

table hdplugs
   id
   lshdtype (PCI|USB)

+++ une fois que tout ca est rempli de manière automatique, le reste doit être fait manuellement (éventuellement par un wizard)

table hdmanufacturers
   id
   name
   validated

table hd_hdmanufacturer
   id_manufacturer
   id_hd

pour lister les marques qui fournissent un matériel

table hd_types (carte graphique, carte ...)
   id
   description
   validated

distributions (ubuntu hoary, debian sarge)
   id
   name
   validated

kernels
   id
   name (via uname -r)
   validated

compatibilities (correspond au tests fait)
   id_hw
   id_kernel
   id_distribution
   id_architecture
   id_state
   comment
   id_comment_language
   validated

architectures
   id
   description
   validated

languages
   id
   description
   validated

states
   id
   description (marche pas, ok, ...)
   validated

hw_compatibilitie (plusieurs tests peuvent être fait pour un hadware)
   id_hw
   id_compatibilitie

configurations (un machine entière par exemple, acer aspire 11111)
   id
   id_configurationtype

configuration_types
   id
   description (laptop, server, ...)

hw_configuration
   id_hw
   id_configuration
   description
   comment

- on note que si j'ajoute ma machine qui n'est pas une machine type (je l'ai monté moi meme), ce n'est pas la peine de la stocker dans configurations, donc c'est une option que l'utilisateur doit avoir (sur le site web : "Est -ce une configuration standard ?" si oui, quelle est son nom, ... et remplir la base)

- on peut imaginer stocker les modules de chargement (ie le driver) mais comment le remplir si ce n'est pas les pcitables et usbtable ?

- à quoi sert le champs validated ?
plutot que de dire "si une distribution n'est pas présente, envoyer nous un mail", mettre
<select>liste des distributions</select> autre : <input type=text />
et nous par la suite dans la partie administrative du site, on valide ou pas. A noter que lorsque quelq'un ajoute une distribution, il peut immédiatement l'utiliser (remplir des infos avec).

- mettre pourquoi pas des liens (vers les maques, vers le hardware, vers autres), de facon à ce qu'on évite de les mettre dans les commentaires et qu'on puisse les vérifier de manière automatique

--- outils disponibles ---

sur la mdk et d'autres distribution, beaucoup d'infos sont disponible sur /usr/share/ldetect-lst/ en particulier, on a la pcitable et la usbtable qui référence déjà beaucoup de matériel existant et qui pourrait servir à remplir notre base initialement.

--- conclusion ---
comment ca se passe pour l'utilisateur lambda :

$ firefox `lshw_web`
il voit son matériel et les infos existantes dessus ; il peut choisir de rajouter des infos dessus

problème : lshd peut-il lister les claviers et autres périphériques non usb et pci (disque dur, processeur, ...) ? Y'a t'il un intérêt à ca car tous les processeurs, hd, marchent (peut etre pas les raids) ... faut voir. Faut t'il donc prévoir un type autre que USB ou PCI, par exemple MANUAL ?

Faut pas se planter aussi pour la langue du site (en anglais je propose, mais php propose la bibliothèque gnu de traduction), mais aussi pas se planter sur la langue des configurations et autres : par example (laptop ou portable), d'ou la nécessité de valider les infos dont les tables seront petites pour pouvoir mettre en anglais si possible et traduire.

J'ai surement oublié des choses, laissons nous un peu de temps pour discuter de tout ca.


Reply via email to