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.