GithubHelp home page GithubHelp logo

alexandredecan / lexpage Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 5.0 3.69 MB

Code Python/Django à la base du Lexpage v4 http://www.lexpage.net

License: GNU General Public License v3.0

Python 40.66% JavaScript 30.35% HTML 15.47% Ruby 0.11% SCSS 9.03% CSS 4.38%

lexpage's Introduction

Alexandre Decan

Chercheur qualifié F.R.S.-FNRS, UMONS

Licencié en informatique et docteur en sciences, je suis passionné par l'IT depuis plus de 30 ans. Après plusieurs années en tant que chercheur dans les systèmes d'information, et après davantage d'années à pratiquer activement le développement et la veille technologique en tant que loisirs, je suis actuellement chercheur F.R.S.-FNRS au sein du Service de Génie Logiciel du Département d'Informatique de la Faculté des Sciences de l'Université de Mons (UMONS) en Belgique.

Publications

Journal avec peer-review

2023 - On the Outdatedness of Workflows in the GitHub Actions Ecosystem Alexandre Decan, Tom Mens, Hassan Onsori Delicheh in Journal of Systems and Software, doi.org/10.1016/j.jss.2023.111827, 2023 Voir le PDF

2023 - On the usage, co-usage and migration of CI/CD tools: a qualitative analysis Pooya Rostami Mazrae, Tom Mens, Mehdi Golzadeh, Alexandre Decan in Empirical Software Engineering 28, 52, 10.1007/s10664-022-10285-5, 2023 Voir le PDF

2022 - Recognizing bot activity in collaborative software development Mehdi Golzadeh, Tom Mens, Alexandre Decan, Eleni Constantinou, Natarajan Chidambaram in IEEE Software Special Issue: Bots in Software Engineering, 10.1109/MS.2022.3178601, 2022 Voir le PDF

2022 - On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency Networks Ahmed Zerouali, Tom Mens, Alexandre Decan, Coen De Roover in Empirical Software Engineering, 10.1007/s10664-022-10154-1, 2022 Voir le PDF

2021 - Back to the Past - Analysing Backporting Practices in Package Dependency Networks Alexandre Decan, Tom Mens, Ahmed Zerouali, Coen De Roover in IEEE Transactions on Software Engineering, 10.1109/TSE.2021.3112204, 2021 Voir le PDF

2021 - Lost in Zero Space - An Empirical Comparison of 0.y.z Releases in Software Package Distributions Alexandre Decan, Tom Mens in Science of Computer Programming, 10.1016/j.scico.2021.102656, 2021 Voir le PDF

2021 - A ground-truth dataset and classification model for detecting bots in GitHub issue and PR comments Mehdi Golzadeh, Alexandre Decan, Damien Legay, Tom Mens in Journal of Systems and Software, 10.1016/j.jss.2021.110911, 2021 Voir le pdf

2021 - A multi-dimensional analysis of technical lag in Debian-based Docker images Ahmed Zerouali, Tom Mens, Alexandre Decan, Jesus Gonzalez-Barahona and Gregorio Robles in Empirical Software Engineering, 26,10.1007/s10664-020-09908-6, 2021 Voir le pdf

2020 - Sismic - A Python library for statechart execution and testing Alexandre Decan, Tom Mens in SoftwareX, 10.1016/j.softx.2020.100590, 2020 Voir le pdf

2020 - GAP: Forecasting Commit Activity in git Projects Alexandre Decan, Eleni Constantinou, Tom Mens, Henrique Rocha in Journal of Systems and Software, 10.1016/j.jss.2020.110573, 2020 Voir le pdf

2019 - What Do Package Dependencies Tell Us about Semantic Versioning? Alexandre Decan, Tom Mens in IEEE Transactions on Software Engineering, 10.1109/TSE.2019.2918315, 2019 Voir le pdf

2019 - A Formal Framework for Measuring Technical Lag in Component Repositories - and its application to npm Ahmed Zerouali, Tom Mens, Jesus Gonzalez-Barahona, Alexandre Decan, Eleni Constantinou, Gregorio Robles in Journal of Software: Evolution and Process, 10.1002/smr.2157, 2019 Voir le pdf

2018 - A Method for Testing and Validating Executable Statechart Models Tom Mens, Alexandre Decan, Nikolaos Spanoudakis in Software and Systems Modeling, 10.1007/s10270-018-0676-3, 2018 Voir le pdf

2018 - An Empirical Comparison of Dependency Network Evolution in Seven Software Packaging Ecosystems Alexandre Decan, Tom Mens, Philippe Grosjean in Empirical Software Engineering, 23, 10.1007/s10664-017-9589-y, 2018 Voir le PDF

2012 - Certain Conjunctive Query Answering in SQL Alexandre Decan, Fabian Pijcke, Jef Wijsen in Lecture Notes in Computer Science, 7520, p154-167, 2012 Voir le PDF

2012 - An Aperiodicity Problem for Multiwords Véronique Bruyère, Olivier Carton, Alexandre Decan, Olivier Gauwin, Jef Wijsen in RAIRO : Theoretical Informatics and Applications, 46, 1, p33-50, 2012 Voir le PDF

Article dans les actes avec comité de lecture

2024 - Quantifying Security Issues in Reusable JavaScript Actions in GitHub Workflows Hassan Onsori Delicheh, Alexandre Decan, Tom Mens in 21st International Conference on Mining Software Repositories (MSR), Lisbon, Portugal, 2024 Voir le PDF

2024 - gawd: A Differencing Tool for GitHub Actions Workflows Pooya Rostami Mazrae, Alexandre Decan, Tom Mens in 21st International Conference on Mining Software Repositories (MSR), Lisbon, Portugal, 2024 Voir le PDF

2024 - RABBIT: A tool for identifying bot accounts based on their recent GitHub event history Natarajan Chidambaram, Tom Mens, Alexandre Decan in 21st International Conference on Mining Software Repositories (MSR), Lisbon, Portugal, 2024 Voir le PDF

2024 - A dataset of GitHub Actions workflow histories Guillaume Cardoen, Tom Mens, Alexandre Decan in 21st International Conference on Mining Software Repositories (MSR), Lisbon, Portugal, 2024 Voir le PDF

2023 - A Preliminary Study of GitHub Actions Workflow Changes Pooya Rostami Mazrae, Alexandre Decan, Tom Mens, Mairieli Wessel in Seminar Series on Advanced Techniques & Tools for Software Evolution (SATToSE), Salerno, Italy, 2023 Voir le PDF

2023 - Distinguishing Bots from Human Developers Based on their GitHub Activity Types Natarajan Chidambaram, Alexandre Decan, Tom Mens in Seminar Series on Advanced Techniques & Tools for Software Evolution (SATToSE), Salerno, Italy, 2023 Voir le PDF

2023 - A Preliminary Study of GitHub Actions Dependencies Hassan Onsori Delicheh, Alexandre Decan, Tom Mens in Seminar Series on Advanced Techniques & Tools for Software Evolution (SATToSE), Salerno, Italy, 2023 Voir le PDF

2023 - A Dataset of Bot and Human Activities in GitHub Natarajan Chidambaram, Alexandre Decan, Tom Mens in 20th International Conference on Mining Software Repositories (MSR), Melbourne, Australia, 2023 Voir le PDF

2022 - Patched Clones and Missed Patches among the Divergent Variants of a Software Family Poedjadevie Ramkisoen, John Businge, Brent van Bladel, Alexandre Decan, Serge Demeyer, Coen De Roover, Foutse Khomh in ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), Singapore, 2022 Voir le PDF

2022 - On the Use of GitHub Actions in Software Development Repositories Alexandre Decan, Tom Mens, Pooya Rostami Mazrae, Mehdi Golzadeh in 38th IEEE International Conference on Software Maintenance and Evolution (ICSME), Limassol, Cyprus, 2022 Voir le PDF

2022 - On the accuracy of bot detection techniques Mehdi Golzadeh, Alexandre Decan, Natarajan Chidambaram in 4th Workshop on Bots in Software Engineering (BotSE), IEEE/ACM ICSEW 2022 Voir le PDF

2022 - Leveraging Predictions From Multiple Repositories to Improve Bot Detection Natarajan Chidambaram, Alexandre Decan, Mehdi Golzadeh in 4th Workshop on Bots in Software Engineering (BotSE), IEEE/ACM ICSEW 2022 Voir le PDF

2022 - On the rise and fall of CI services in GitHub Mehdi Golzadeh, Alexandre Decan, Tom Mens in 29th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER), Honolulu, Hawai, 2022 Voir le PDF

2022 - Variant Forks - Motivations and Impediments John Businge, Ahmed Zerouali, Alexandre Decan, Tom Mens, Serge Demeyer, Coen De Roover in 29th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER), Honolulu, Hawai, 2022 Voir le PDF

2021 - Identifying bot activity in GitHub pull request and issue comments Mehdi Golzadeh, Alexandre Decan, Eleni Constantinou, Tom Mens in 3rd Workshop on Bots in Software Engineering (BotSE), IEEE/ACM ICSEW 2021 Voir le PDF

2021 - A Quantitative Assessment of Package Freshness in Linux Distributions Damien Legay, Alexandre Decan, Tom Mens in 4th International Workshop on Software Health (SoHeal), IEEE/ACM ICSEW 2021 Voir le PDF

2020 - How Magic is Zero? An Empirical Analysis of Initial Development Releases in Three Software Package Distributions Alexandre Decan, Tom Mens in 3rd International Workshop on Software Health (SoHeal20), IEEE/ACM ICSEW 2020, Seoul, Republic of Korea, 2020 Voir le PDF

2020 - On Package Freshness in Linux Distributions Damien Legay, Alexandre Decan, Tom Mens in 36th IEEE International Conference on Software Maintenance and Evolution (ICSME), Adelaide, Australia, 2020 Voir le PDF

2020 - Bot or not? Detecting bots in GitHub pull request activity based on comment similarity Mehdi Golzadeh, Damien Legay, Alexandre Decan, Tom Mens in 2nd Workshop on Bots in Software Engineering (BotSE), IEEE/ACM ICSEW 2020, Seoul, Republic of Korea, 2020 Voir le PDF

2020 - An Empirical Investigation of Forks as Variants in the npm Package Distribution John Businge, Alexandre Decan, Ahmed Zerouali, Tom Mens, Serge Demeyer in 19th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Luxembourg, Luxembourg, 2020 Voir le PDF

2020 - Evaluating a Bot Detection Model on Git Commit Messages Mehdi Golzadeh, Alexandre Decan, Tom Mens in 19th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Luxembourg, Luxembourg, 2020 Voir le PDF

2019 - Towards an Understanding of the Impact of Badges in GitHub Repositories Damien Legay, Alexandre Decan, Tom Mens in 18th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Brussels, Belgium, 2019 Voir le PDF

2019 - On the Effect of Discussions on Pull Request Decisions Mehdi Golzadeh, Alexandre Decan, Tom Mens in 18th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Brussels, Belgium, 2019 Voir le PDF

2018 - On the Evolution of Technical Lag in the npm Package Dependency Network Alexandre Decan, Tom Mens, Eleni Constantinou in 34th IEEE International Conference on Software Maintenance and Evolution (ICSME), Madrid, Spain, 2018 Voir le PDF

2018 - On the Impact of Security Vulnerabilities in the npm Package Dependency Network Alexandre Decan, Tom Mens, Eleni Constantinou in 15th International Conference on Mining Software Repositories (MSR), Gothenburg, Sweden, 2018 Voir le PDF

2018 - Breaking the Borders: An Investigation of Cross-Ecosystem Software Packages Eleni Constantinou, Alexandre Decan, Tom Mens in 17th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Delft, the Netherlands, 2018 Voir le PDF

2018 - On the Impact of Pull Request Decisions on Future Contributions Damien Legay, Alexandre Decan, Tom Mens in 17th Belgium-Netherlands Software Evolution Workshop (BENEVOL), Delft, the Netherlands, 2018 Voir le PDF

2017 - An Empirical Comparison of Dependency Issues in OSS Packaging Ecosystems Alexandre Decan, Tom Mens, Maëlick Claes in 24th IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER), Klagenfurt, Austria, 2017 Voir le PDF

2017 - On the Interaction of Relational Database Access Technologies in Open Source Java Projects Alexandre Decan, Mathieu Goeminne, Tom Mens in Seminar Series on Advanced Techniques & Tools for Software Evolution (SATToSE), 1820, 26-35, Mons, Belgique, 2017 Voir le PDF

2016 - On the Topology of Package Dependency Networks: a comparison of three programming language ecosystems Alexandre Decan, Tom Mens, Maëlick Claes in ECSAW'16: Proceedings of the 10th European Conference on Software Architecture Workshops, Copenhagen, Denmark, 2016 Voir le PDF

2016 - When GitHub meets CRAN: An Analysis of Inter-Repository Package Dependency Problems Alexandre Decan, Tom Mens, Maëlick Claes, Philippe Grosjean in 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER), Osaka, Japan, 2016 Voir le PDF

2015 - On the Development and Distribution of R Packages: An Empirical Analysis of the R Ecosystem Alexandre Decan, Tom Mens, Maëlick Claes, Philippe Grosjean in International Workshop on Software Ecosystems (IWSECO), 2015 Voir le PDF

2014 - Co-evolving Code-related and Database-related Changes in Data-intensive Software System Mathieu Goeminne, Alexandre Decan, Tom Mens in IEEE CSMR-WCRE 2014 Software Evolution Week, 353-357, Antwerpen, Belgique, 2014 Voir le PDF

2010 - A Variant of Pattern Matching for Multiwords Véronique Bruyère, Olivier Carton, Alexandre Decan, Olivier Gauwin, Jef Wijsen in Journées Montoises en Informatique Théorique, Amiens, France, 2010 Voir le PDF

2009 - On First-Order Query Rewriting for Incomplete Database Histories Véronique Bruyère, Alexandre Decan, Jef Wijsen in 16th International Symposium on Temporal Representation and Reasoning, TIME 2009, 54-61, Bressanone, Italie, 2009 Voir le PDF

2008 - On First-Order Query Rewriting for Incomplete Database Histories Alexandre Decan, Jef Wijsen in International Workshop on Logic in Databases (LID), 2008 Voir le PDF

Chapitre de livre

2023 - The GitHub Development Workflow Automation Ecosystems Mairieli Wessel, Tom Mens, Alexandre Decan, Pooya Rostami Mazrae in Software Ecosystems: Tooling and Analytics, Springer International Publishing, 2023 Voir le PDF

2017 - Inter-component Dependency Issues in Software Ecosystems Maëlick Claes, Alexandre Decan, Tom Mens in Software Technology : 10 Years of Innovation, IEEE Computer, John Wiley & Sons/IEEE Press, New York, NY, 2017 Voir le PDF

2017 - Analysing the Evolution of Database Usage in Data-Intensive Software Systems Loup Meurice, Mathieu Goeminne, Tom Mens, Csaba Nagy, Alexandre Decan, Anthony Cleve in Software Technology : 10 Years of Innovation, IEEE Computer, John Wiley & Sons/IEEE Press, New York, NY, 2017 Voir le PDF

Thèse de doctorat

2013 - Certain Query Answering in First-Order Languages Thèse de doctorat soutenue le 2 juillet 2013 Voir le PDF

Organisation de conférences

BENEVOL 2022 21st Belgium-Netherlands Software Evolution Workshop 12-13 septembre 2022, Mons, Belgique https://benevol2022.github.io

TIME 2017 24th International Symposium on Temporal Representation and Reasoning 16-18 octobre 2017, Mons, Belgique http://informatique.umons.ac.be/time2017

EuroDocInfo 2009 22-23 Janvier 2009, Mons, Belgique http://eurodocinfo09.umh.ac.be

BDA 2009 25èmes journées de Bases de Données Avancées 20-23 octobre 2009, Namur, Belgique https://info.fundp.ac.be/bda2009

Distinction

ICSME 2022 Distinguished Paper 38th IEEE International Conference on Software Maintenance & Evolution Distinguished paper award for On the Use of GitHub Actions in Software Development Repositories Voir le PDF

Financement

2023 - Mandat d'Impulsion Scientifique On the impact of workflow automation solutions on continuous collaborative open source software engineering F.R.S.-FNRS, 2023-2025, F.4515.23, 428.991€

2022 - Chercheur Qualifié Analysing and improving workflow automation in continuous collaborative open source software engineering F.R.S.-FNRS, 2022, 1.C.024.23F, 20.000€

Promoteur de thèse

Yourri Houness On the impact of workflow automation on continuous collaborative open source software engineering Université de Mons, 2023 (en cours)

Guillaume Cardoen On workflow automation in open source software repositories Université de Mons, 2023 (en cours)

Hassan Onsori Delicheh Empirical analysis, recommendations and improvements for software development workflow automation ecosystems Université de Mons, 2022 (en cours)

Jury de thèse

Identifying Development Bots in Social Coding Platforms Mehdi Golzadeh, 22 juin 2023, University of Mons, Belgique

Dealing with Inconsistencies in Knowledge Bases Horacio Tellez Perez, 23 septembre 2021, University of Mons, Belgique

A Measurement Framework for Analyzing Technical Lag in Open-Source Software Ecosystems Ahmed Zerouali, 4 septembre 2019, University of Mons, Belgique

Theoretical and Practical Methods for Consistent Query Answering in the Relational Data Model Fabian Pijcke, 8 Février 2018, University of Mons, Belgique

lexpage's People

Contributors

alexandredecan avatar dependabot[bot] avatar mgoeminne avatar roidelapluie avatar yaug avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lexpage's Issues

websockets

Implémenter les websockets pour le minichat et les notifications

Remove SELF from the username autocomplete list

In the two places where the userlist is used, it does not make sense to autocomplete with the current user:

  • in the minichat, who would hilight himself?
  • in the messaging, it is forbidden to send a message to self.

So we should:

  • Send a 403 if the request is done without authentication
  • Remove currently logged in user from the autocompletion list

Affichage du status de connexion en version mobile

La version mobile ne permet pas, en un coup d'oeil, de savoir si un utilisateur est connecté ou non.
Dans la version bureau, l'avatar est affiché à droite du menu (ou une icone suggérant l'identification). Dans la version mobile, le menu est remplacé par une seule et unique icone, sur laquelle il faut appuyer pour dérouler le menu contenant alors l'avatar (ou l'option de connexion).

Déplacement de messages

Ajouter la possibilité de déplacer un message vers un autre topic. Probablement via une action dans l'admin (pas besoin que ça soit exposé sur le site). En particulier, tenir compte automatiquement de ce qui ne l'est pas actuellement :

  • Les marqueurs de lecteur à mettre à jour (calculer le dernier message précédent le message déplacé, et mettre à jour les entrées)
  • Actualiser le nombre de messages postés dans chaque discussion concernée (+1 -1, ouais, pas dur).
  • Mettre à jour le lien vers le "dernier message" de la conversation si nécessaire (dans un sens comme dans l'autre).
  • Ajout d'une notification à l'auteur du message pour signaler le déplacement de son message.

"Envoyer un message" depuis le profil

Il est possible d'envoyer un message interne en spécifiant le nom de l'utilisateur, ou encore en cliquant sur le bouton adéquat depuis le forum. Il serait intéressant qu'un tel bouton soit aussi présent sur la page du profil de l'utilisateur.

Empecher certains username

Si un utilisateur s'enregistre avec le username edit ou list, le lien vers son profil sera cassé car cela est en conflit avec l'adresse web pour éditer ou lister les profils.

Refactoring de la fonction de recherche

Le module actuel de recherche est un bricolage à base de queryset modifié et couvre les billets, les comptes utilisateurs, ainsi que les discussions (titre et message).

Des alternatives efficaces (et mieux organisées) existent. Par exemple, Haystack (même avec un backend comme whoosh, suffisant pour l'usage qu'on en a).

Visiblement (http://www.lexpage.net/board/thread/520-la-recherche-sur-lexpage), la fonction de recherche est principalement utilisée pour rechercher des messages dans les discussions.

En première approche, il pourrait être envisagé d'intégrer deux pages de recherche : une première dédiée à la recherche de billets, et la seconde dédiée à la recherche de messages, chacune accessible via le menu correspondant au domaine dans lequel on recherche.

Migrer d'Embedly vers Micawber

Les miniatures des billets sont actuellement générées au travers du service Embed.ly, qui s'occupe d'aller rechercher la page cible et d'en extraire une image pertinente. Ce service est limité à un certain nombre de requêtes distinctes par mois, et nécessite un élément externe au Lexpage.

Micawber est une librairie Python permettant d'interroger un service afin d'obtenir des informations sur ce service. Typiquement, il permet d'obtenir des éléments intégrables (embed) en se fiant à une liste de providers. Cette liste est récuparable directement en ligne auprès de services existants (et peut donc fonctionner, dans un premier temps, de la même façon qu'embed.ly) mais peut également être complétée manuellement, allant jusqu'à permettre de spécifier un parseur à utiliser (et donc d'aller grepper soi-même l'image "représentative" d"un lien, si nécessaire).

Cette seconde approche permettrait de ne plus avoir à se reposer sur un unique service externe au Lexpage, et une intégration dans Django semble relativement aisée (l'usage devrait idéalement être asynchrone pour limiter l'impact sur les temps de réponse).

http://micawber.readthedocs.org/en/latest/
http://micawber.readthedocs.org/en/latest/django.html#django

alternative à l'aide?

Lexpage avant la version 4 avec une aide bien fournie.

Pour les websokets, il peut être utile d'avoir de l'aide quelque part. Devrais-je créer une 'flatpage'?

Supprimer whitenoise

Whitenoise est le module Django permettant de servir des fichiers statiques. En production, je repose complètement sur nginx pour tout ce qui se trouve dans /static. En local, le serveur intégré de Django sert les fichiers statiques si DEBUG = True. Le seul intérêt de whitenoise, c'est de servir les fichiers statiques en local si le site est lancé via gunicorn ou uwsgi.

Je propose donc de retirer whitenoise pour libérer une dépendance.

  • requirements.txt
  • uwsgi.py
  • settings.py
  • readme?
  • ... ?

Augmentation du coverage des tests

Bien que le coverage ne soit pas une métrique reflétant correctement la qualité du code, et encore moins une métrique reflétant la qualité des tests, c'est une métrique qui donne une bonne approximation du "soin" apporté à l'élaboration de tests, et une certaine confiance en ces tests.

L'objectif n'est pas de vendre Lexpage comme un système fiable et testé à 100%, mais plutôt d'avoir cette petite fierté personnelle d'avoir un code vérifiant la majorité des situations, et une motivation supplémentaire pour écrire des tests unitaires et fonctionnels.

A moyen terme, l'idée est d'approcher les 90%.

Impossible de s'identifier

Salut Guybrush, c'est Sysson!

Depuis l'update d'aujourd'hui impossible de me loguer. J'ai fait plusieurs tentatives juste avant minuit, rien n'y fait! Avant de faire mot de passe oublié et de tenter comme ça je préférais signaler et gardant l'option pour toi de débuguer, je risque de ne pas être le seul affecté.

Au plaisir,

Prévisualisation du markup en POST plutôt qu'en GET

En parallèle du #60, ou à la place, il faudrait que l'appel pour la prévisualisation soit géré via POST plutôt que GET, pour éviter une taille d'entête trop importante.

Le hook des `profile` est en conflit avec les fixtures

Le hook des profile se déclenche lors de la création d'un user :
https://github.com/AlexandreDecan/Lexpage/blob/master/app/profile/models.py#L20

Le souci est que lors du chargement de fixtures, lorsque les users sont chargés, ils sont déjà créés à cause des profils précédents.

http://stackoverflow.com/questions/3499791/how-do-i-prevent-fixtures-from-conflicting-with-django-post-save-signal-code

Il y a un moyen simple d'empêcher ça.

[Prod] Environnement virtuel

Issue-as-todo-list(tm) : Mettre en place un véritable environnement virtuel en production, en profiter pour repasser à Gunicorn (hipsteeeeer !) sous supervisor (comme uwsgi actuellement).

Jeu de données pour les développeurs

Il a été demandé qu'un jeu de données initial soit fourni avec que les personnes souhaitant développer sur Lexpage puisse faire fonctionner le site avec une version "minimalement remplie", mais couvrant les cas d'usage.

Ce jeu de données pourrait être fourni soit sous la forme d'une db sqlite (moins pratique), soit sous la forme de fixtures Django (mieux).

La suppression d'un message du minichat provoque une erreur 500

Scénario : cocher un message du minichat dans l'admin, et utiliser le menu déroulant pour le supprimer. Cela provoque une erreur 500 Internal Server Error.
Non seulement elle n'est pas interceptée par Django (voir #44) mais surtout, cela ne devrait pas se produire. Visiblement, cela se produit également si on tente de modifier un form en inline.

Je pense qu'il doit s'agir d'un souci lié à Gunicorn/nginx plutôt que Django.

Migration vers Python 3.5

Les librairies supportant actuellement Lexpage sont (théoriquement) fonctionnellles en Python 3.5.
Des tests devraient être implémentés afin que le passe vers Python 3.5 puisse être validé pour Lexpage.

Les principaux problèmes viendront de l'usage (très sporadique) du mot-clé print (facile à détecter et à supprimer) ainsi que des chaînes unicodes (actuellement, unicode_literals est importé depuis le module future).

Migration de Debian vers CentOS

Le serveur tourne actuellement sous Debian, une vieille Wheezy avec quelques backports et beaucoup de problèmes à cause d'une tentative de faire tourner Docker sous les noyaux OVH.

Maintenant que Lexpage (et les autres projets tournant dessus, sauf exception de ceux qui tournent sous Node) fonctionne dans un environnement virtuel, il serait peut-être temps de s'occuper de la partie serveur, et de réinstaller quelque chose de frais.

A tenir en compte :

  • La configuration de Nginx et des différents projets tournant derrière.
  • La configuration de php/php-fpm qui fait tourner Piwik (ou abandon de Piwik ? On s'en moque un peu des statistiques et je ne m'en sers que pour Lexpage).
  • Les projets Node (à priori sont déjà convertis en Python et/ou abandonnés, donc no care)
  • Le serveur MariaDB (à migrer vers du Postgresql ?)
  • Le workflow de backup à base de Dropbox et de logrotate (à updater)
  • La configuration d'iptables
  • Les crons
  • Clés SSH
  • Les avatars du Lexpage et la configuration en prod

Support de Vagga

Avec la grande mode des containers, il pourrait être intéressant de supporter Vagga pour lancer Lexpage (vu que les gens n'aiment pas virtualenv :-D).

Support de la toolbar d'édition sur appareils mobiles

La barre d'édition des messages et des billets est fonctionnelle dans les navigateurs "classiques". Par contre, sur appareils mobiles, il est relativement difficile de mettre un message en forme, principalement avec le BBcode. En cause :

  • Les caractères [, / et ] qui ne sont pas facilement accessibles (on n'y peut rien !)
  • La barre d'édition ne tient pas compte de la sélection courante (par exemple, une sélection d'un morceau de texte suivie d'un click sur "B" n'ajoute pas les balises avant et après).

Probablement qu'une adaptation du JS gérant la sélection, afin de tenir compte des spécificités des appareils mobiles, devrait suffire.

Externaliser la librairie Markdown

Je ne sais plus pour quelle raison, mais la librairie Markdown utilisée sur Lexpage est intégrée au code, alors qu'elle pourrait simplement être référencée comme dépendance et utilisée en tant que telle.

Il y a probablement de nombreuses nouvelles alternatives à considérer maintenant. Il faudrait regarder lesquelles sont encore activement maintenues, correspondent à ce qu'on utilise sur le site (notamment pour le markup html généré) et pour lesquelles on pourrait facilement intégrer l'extension oembed (définie dans app/commons/templatetags/markdown/extensions/lexpage_oembed).

Can't run profile tests

(I git the same results with python instead of py.test)

 $ py.test app/profile/tests.py
======================================================================= test session starts ========================================================================
platform linux -- Python 3.4.3, pytest-2.8.5, py-1.4.31, pluggy-0.3.1
rootdir: /home/roidelapluie/github/Lexpage/app/profile, inifile: 
collected 0 items / 1 errors 

============================================================================== ERRORS ==============================================================================
____________________________________________________________________ ERROR collecting tests.py _____________________________________________________________________
app/profile/tests.py:4: in <module>
    from profile.models import ActivationKey, Profile
E   ImportError: No module named 'profile.models'; 'profile' is not a package
===================================================================== 1 error in 0.28 seconds ======================================================================

 1  Sat Dec 19 12:18:06 CET 2015

Changement du titre de la page quand on reçoit/supprime des notifications

Une fois le support des WS mergés, il serait bien d'avoir un compteur des notifications dans le titre (Lexpage (1)) par exemple, qui se mettrait à jour tout seul.

Il vaut mieux limiter la taille de la PR sur les websockets et ajouter les features de manière incrémentielle afin que cela soit facile de faire du code-review dessus, d'ou la création de ce ticket, qui pourra être traité quand on aura acquis de l'expérience sur les websockets en prod.

API REST pour Lexpage

Dans le cadre de #48, il pourrait être intéressant d'avoir une API REST pour certains services du Lexpage, préalable à toute implémentation solide avec fallback de websockets à la sauce socket.io.

En particulier :

  • Contenu du minichat
  • Post d'un message sur le minichat
  • Liste des utilisateurs (autocomplete)
  • Liste des étiquettes (autocomplete)
  • Prévisualisation des markups
  • Contenu du message (board)

Une fois cela effectué, les features suivantes seront requises au moins pour #48 :

  • Liste des notifications (toutes et non-lues)
  • Dismiss d'une notification

Implement SIMPLIFIED selenium tests

I will extract and simplify A LOT the selenium tests of the websockets and use that to test the recent pull requests (the API and client-side templates rendering in JS).

PyMySQL au lieu de MysqlDB

Lors de la mise en place des virtualenvs pour la version en prod, le module pymysql n'a pas pu être chargé correctement en l'absence de MysqlDB.

Il conviendrait de regarder dans le code ce qui ne va pas, et pourquoi ça ne va pas, et de faire en sorte que ça aille mieux :-D

Organiser les `static` par application

Pour l'instant, les fichiers static sont regroupés dans un répertoire de base, static, mais certains pourraient être déplacés et organisés par application (par exemple, minichat.js, markup.js, les avatars, etc.).

Les tooltips ne disparaissent pas lors d'un middle click

Un middle click sur un lien avec tooltip ne fait pas disparaitre la tooltip, contrairement à un click gauche. Ce bug est apparu (coincidence ?) quelques jours après la mise à jour de JQuery Oembed.

Il faut vérifier si ce problème (concernant à priori Bootstrap) est connu pour la paire de versions concernées.

illustration

Intégration de Grunt pour les tâches usuelles

Tâches Grunt :

  • Compilation des templates nunjucks minichat
  • Compilation des templates nunjucks notification
  • Compilation du style sass du Lexpage
  • Compilation du style sass de Nowell
  • Déplacement des fichiers statiques (via django collectstatic ?)
  • Minification des css dans static_pub
  • Minification des js dans static_pub

De même, il serait intéressant de pouvoir mettre à jour aisément certaines librairies requises :

  • Bootstrap (static/libs/bootstrap mais aussi static/css/bootstrap --> embêtant !)
  • JQuery (static/libs/jquery) et modules (static/libs)
  • font-awesome (static/libs/font-awesome)
  • nunjucks (static/libs/nunjucks)
  • modernizr.js (static/libs)
  • moments.js

Corollaire :

  • Mettre le README à jour
  • Lister les dépendances nécessaires (gem sass, nunjucks, grunt, minify, ...)

Vérification de la taille des avatars uploadés

Jusqu'à présent, Lexpage vérifiait la taille des avatars uploadés via PIL puis PIllow (avec Pillow-PIL pour la compatibilité). Avec les nombreux changements récents dans la manière de gérer l'environnement virtuel du Lexpage (notamment sur le serveur), je ne souhaite plus être dépendant d'une librairie extérieure à compiler en C (ce qui est imposé par Pillow).

Pillow a été retiré et donc la vérification de la taille des avatars n'est plus fonctionnelle.
Il faudrait trouver une solution légère pour ré-introduire cette vérification.

Billet court - comportement lors du click

Lorsque l'on clique sur le titre d'un billet court sur la page d'accueil, on arrive sur une page avec relativement peu d'informations. Notamment, il y manque la vignette de prévisualisation (si elle existe).

Il serait intéressant de renforcer la distinction entre les billets courts et les billets longs sur la page d'accueil, afin de ne pas inciter (inutilement) à cliquer sur le titre d'un billet (court).

Organiser les différents environnements

  • Définir un requirements.txt par environnement (prod, tests, dev) et isoler les dépendances communes (voir ici pour des inclusions récursives).
  • Faire pointer settings.py vers settings_dev.py et créer settings_tests.py, tous deux "héritant" de settings_base.py.
  • Nettoyer et organiser le contenu des settings_x.py.
  • Documenter ces changements.

Rythme de publication des billets

Lorsque le nombre de billets permet une publication de deux billets par jour, et qu'ensuite, ce nombre ne permet la publication que d'un seul billet par jour, le premier billet du premier jour où l'on ne publie qu'un seul billet est publié à midi, et non à minuit.

La cause est simple : le delta est calculé par rapport au dernier billet posté. Une amélioration simple serait de calculer le delta par rapport au dernier billet, comme actuellement, sauf si ce dernier billet a été posté la veille.

Cela aura pour conséquence un rythme plus régulier sur l'heure de publication, au détriment d'un écart régulier entre deux billets consécutifs.

Renommer le projet

Le nom du projet devrait être changé, de même que le nom de Lexpage dans les templates. On devrait introduire un SETTINGS pour changer le nom du site.

Ce n'est pas une demande fantaisiste, c'est pour:

  1. découpler le logiciel du site
  2. permettre à d'autres personnes d'installer leur version du Lexpage
  3. éviter que les autres instances du lexpage n'utilisent le nom Lexpage, en particulier cela serait embetant sur les moteurs de recherche

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.