Sommaire
Le code de LinuxFr.org est disponible sous licence GNU Affero General Public License
- voir la page code source du site
- une copie [~37 Mo] est disponible sur github
- vous pouvez suivre l'application des modifications au site via le changelog, celui sur github donne directement les liens d'accès aux commits
Installation
Suivre les instructions fournies dans le README
Organisation générale
Le code répond à un modèle MVC ou Modèle-vue-contrôleur et se base sur Haml pour une syntaxe simplifiée des pages web.
- CSS : Le code de vos CSS, ou vos modifications des CSS existantes.
Comprendre MVC : modèle, vue, contrôleur
Du fait du modèle MVC, pour identifier une modification, vous pouvez procéder ainsi :
- retrouvez le fichier .haml concerné (dans les views/),
- pour ce qui est esthétique
- remontez au besoin au contrôleur (dans les controllers/),
- pour ajouter un peu de logique métier ou simplement des attributs à afficher ou calculer
- cherchez la définition des objets et leurs méthodes associées (dans les models/),
- pour toutes les données disponibles
Proposer des patchs
Nul besoin de s'y connaître en Ruby on rails pour proposer des patchs, que ce soit esthétique ou dans les CSS.
Déroulement d'une demande de pull
Premièrement, il faut un compte sur GitHub.
- Ensuite, il faut se rendre sur https://github.com/nono/linuxfr.org/ en étant loggué et cliquer sur le bouton en haut à gauche intitulé fork. Ensuite, on obtient une URL pour pouvoir cloner le dépôt Git (avec des droit d'écriture lors d'un push).
- On peut ensuite modifier les fichiers et faire ses
commit
, une fois les modifications terminées, il ne faut pas oublier de faire ungit push
.
- On peut ensuite modifier les fichiers et faire ses
- Il est aussi possible d'éditer un fichier directement sur github, cela crée automatiquement un fork (s'il n'existait pas) et une branche spécifique pour le fichier édité
- On revient sur GitHub et dans son compte, on clique sur le bouton demande de pull (aka
pull request
), on écrit ensuite un gentil message à NoNo< qui explique le pourquoi de la demande. - Ne pas oublier de faire une entrée dans le suivi.
Cela fonctionne très bien pour une contribution ponctuelle, à un instant t.
Pour autant, si plus tard vous voulez de nouveau faire une modification, il est bon de resynchroniser son dépôt sur le master. Pour ce faire, il faut lancer git remote add nono https://github.com/nono/linuxfr.org.git
qui ajoute le dépot de nono comme dépôt distant puis lancer git pull nono master
pour merger le dépôt de nono avec la branche master locale.
J'ai aussi testé d'éditer le fichier de mon fork, mais cela semblait compliquer le merge (je n'avais qu'une ligne à modifier, mon fichier datant de 6 mois, cela faisait une vingtaine de lignes modifiées… non prises en compte dans l'intermède : la modif' s'appliquant à la version « actuelle » et non à celle que j'ai prise il y a six mois… je ne sais pas si je suis clair, là ?).
Exemples de contributions pour s'y retrouver dans le code
Vous pouvez regarder quelques commits significatifs pour identifier comment procéder, par exemple :
- ajouter un curseur en forme de pointeur sur les liens de vote une modification simple de css (à reporter pour les autres CSS)
- ajout lien devant commentaire une modification de css, de la vue et de javascript
- amélioration de l'aide Mardown modification de la vue (fichier Haml)
- ajout fonctionnalité pour ne pas afficher les avatars modification css, vue et "helper"
- amélioration mise en forme du tableau de bord modification vue du dashboard, css, contrôleur, ajout d'une icône
- trouver d'autres commits significatifs pour exemples de patchs
Ci-dessous, l'organisation détaillée des arborescences.
Arborescence du code
bibliothèques utilisées
LinuxFr.org respecte les bonnes pratiques du RoR et s'appuie sur des bibliothèques existantes lorsque cela est possible :
- albino
- jquery
- rake
- redcarpet pour le rendu Markdown
- sanitizer
- à compléter (markdown, bibliothèque pour les langages pygmentize -L lexer)
Voir https://github.com/nono/linuxfr.org/tree/master/vendor/assets/javascripts pour les scripts utilisés.
Voir aussi cette dépêche sur l'architecture logicielle.
gestion de l'application
Indiquer les url correspondant à l'arborescence (dashboard = tableau de bord), trier par ordre alphabétique.
app/ https://github.com/nono/linuxfr.org/tree/master/app liste de toutes les fonctionnalités
app/assets https://github.com/nono/linuxfr.org/tree/master/app/assets tout ce dont vous avez besoin pour les CSS
app/mailers
app/views https://github.com/nono/linuxfr.org/tree/master/app/views liste des vues, correspond généralement à l'URL
liste détaillée de l'arborescence du code
app/views/sections
app/views/diaries
app/views/home
app/views/tags
app/views/trackers
app/views/layouts
app/views/sessions
app/views/news
app/views/posts
app/views/links
app/views/static
app/views/redaction
app/views/redaction/paragraphs
app/views/redaction/news
app/views/redaction/links
app/views/devise
app/views/devise/unlocks
app/views/devise/passwords
app/views/devise/registrations
app/views/devise/shared
app/views/devise/mailer
app/views/devise/confirmations
app/views/news_notifications
app/views/shared
app/views/admin
app/views/admin/sections
app/views/admin/friend_sites
app/views/admin/responses
app/views/admin/categories
app/views/admin/accounts
app/views/admin/pages
app/views/admin/logos
app/views/admin/banners
app/views/admin/stylesheets
app/views/admin/forums
app/views/comments
app/views/users
app/views/stylesheets
app/views/forums
app/views/nodes
app/views/search
app/views/boards
app/views/moderation
app/views/moderation/news
app/views/moderation/polls
app/views/polls
app/views/dashboard
app/views/wiki_pages
app/controllers
app/controllers/redaction
app/controllers/admin
app/controllers/moderation
app/models
gestion des CSS
app/stylesheets CSS par défaut
app/helpers
public/errors
public/fonts
public/javascripts
public/stylesheets
public/stylesheets/contrib
public/stylesheets/pygments
public/images
public/images/icones
public/images/sections
public/images/contrib https://github.com/nono/linuxfr.org/tree/master/public/images/contrib liste des images spécifiques aux css contribuées
```text
public/images/contrib/retro
public/images/contrib/RonRonnement
public/images/contrib/ice
public/images/contrib/kitch
public/images/contrib/grises
public/images/contrib/grayscale
public/images/contrib/grayscale/blocks
public/images/contrib/grayscale/bg
public/images/contrib/grayscale/notice
public/images/contrib/grayscale/icons
public/images/contrib/grayscale/comments
public/images/contrib/grayscale/avatars
public/images/contrib/grayscale/flags
public/images/contrib/opensuse
public/images/contrib/edition_papier
public/images/contrib/sky
public/images/contrib/black_bling
public/images/contrib/black_bling/markitup
public/images/contrib/kaiska
public/images/contrib/colors
public/images/contrib/colors/scalable
public/images/logos
public/images/langs
```
divers
config/
config/templates
config/locales
config/environments
config/initializers
db/
db/migrate
db/pages
lib/
lib/tasks
public/
public/tmp
public/images/nouvelles
public/images/nouvelles/concours_dlfp2009
public/images/markitup
public/images/news
public/images/news/rechargeable_batteries
public/images/news/plantuml
public/images/deontologie
public/images/cuisine
public/images/dessins
public/images/dessins/concours_perenoel2006
public/images/dessins/concours_perenoel2006/lettre_pere_noel_clem
public/images/dessins/concours_perenoel2006/lettre_geekscottes
public/images/dessins/concours_antidrm
public/images/dessins/concours_antidrm/drm_noel
public/images/dessins/concours_antidrm/drm_enferme
public/images/dessins/concours_antidrm/DRM_un_droit_en_moins
public/images/dessins/concours_antidrm/itubes
public/images/dessins/concours_antidrm/drm_oreilles
public/images/dessins/concours_antidrm/drm_creativite
public/images/dessins/concours_antidrm/iShackle
public/images/dessins/concours_antidrm/antidrm-bras
public/images/dessins/concours_antidrm/supermajor
public/images/dessins/concours_antidrm/geekscottes
public/images/dessins/concours_antidrm/drm_musique_clefs
public/images/dessins/concours_antidrm/nouveau_drm
public/images/dessins/concours_antidrm/drm_is_toxic
public/images/dessins/concours_antidrm/protection_des_livres
public/images/dessins/concours_antidrm/do-re-mi
public/images/dessins/concours_antidrm/antidrm
public/images/dessins/concours_antidrm/liberte_de
public/images/dessins/concours_antidrm/stopdrm
public/association
public/board
app/uploaders
script/
spec/
spec/lib
spec/models
spec/factories
spec/controllers
spec/support
spec/requests
tmp/
tmp/sessions
vendor/
vendor/plugins
vendor/plugins/haml
(à trier)
# À mettre dans le code
Posté par gasche . Évalué à 1 (+0/-0).
Quand on veut modifier le code, on clone le dépôt et on commence à hacker. On ne vient pas chercher sur le wiki de LinuxFR si par hasard il y aurait de la documentation sur le code.
Ce document devrait être dans le dépôt des sources, tout comme le README actuel; à la racine ou dans un sous-répertoire doc/.
[^] # Re: À mettre dans le code
Posté par BAud (site web personnel) . Évalué à 2 (+0/-0).
moui, c'est pas faux ;-)
En même temps, ce que je chercherais sur le wiki, ce serait plutôt un moyen de travailler à partir de gitorious et pour autant réussir à proposer mes patchs ;-)
Le wiki pourrait renvoyer vers les docs dans le dépôt pour contribuer facilement au code de LinuxFr.org ;-) (et ajouter les liens vers les paquets .deb et .rpm permettant de l'installer facilement sur beaucoup de distros, les gentooistes et les archers ajouteront un lien vers l'ebuild ou AUR respectif :D).
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.