• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi
 

Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi

on

  • 731 views

Gli errori e le lezioni che ho imparato dallo sviluppo di un progetto Open Source

Gli errori e le lezioni che ho imparato dallo sviluppo di un progetto Open Source

Statistics

Views

Total Views
731
Views on SlideShare
726
Embed Views
5

Actions

Likes
0
Downloads
3
Comments
0

2 Embeds 5

http://www.linkedin.com 4
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi Tutti i miei sbagli, versione 7 Marzo 2012 al XPUG mi Presentation Transcript

    • Tutti i miei sbagli Gli errori di un Wannabe Open Source Developer Andrea FranciaThursday, March 8, 12
    • Il progetto Gli Sbagli • Generic Naming Issue • Using Bash for functional testing Contenuti • • Feedback License • Project hosting Una cosa giusta Conclusioni ApplausiThursday, March 8, 12
    • trash-cli $ trash foo $ list-trash 2012-03-02 19:43:44 /Users/andrea/foo $ touch foo; trash foo $ list-trash 2012-03-02 19:43:44 /Users/andrea/foo 2012-03-02 19:44:04 /Users/andrea/foo $ restore-trash 0 2012-03-02 19:43:44 /Users/andrea/foo 1 2012-03-02 19:44:04 /Users/andrea/foo What file to restore [0..1]:0Thursday, March 8, 12
    • Generic Naming IssueThursday, March 8, 12
    • Comandi del pacchetto trash Butta un file empty-trash Svuota tutto il cestino list-trash Elenca il contenuto restore-trash Recupera un fileThursday, March 8, 12
    • DebianThursday, March 8, 12
    • FedoraThursday, March 8, 12
    • Debian trash OK list-trash restore-trash empty-trash QA rejected FedoraThursday, March 8, 12
    • Command name changes trash trash-put list-trash trash-list restore-trash trash-restore empty-trash trash-emptyThursday, March 8, 12
    • Risultato Debian --> vecchi nomi Upstream --> nomi nuovi Fedora --> Niente!!! (perdita di interesse dal package maintainer)Thursday, March 8, 12
    • Lessons Learned Non cambiare mai il nome dei comandi Non cedere alle pressioni dei revisori (tanto cambiano) More at: https://github.com/andreafrancia/trash-cli/blob/ master/docs/about-the-generic-naming-issue.txtThursday, March 8, 12
    • Using Bash for functional testingThursday, March 8, 12
    • shunitThursday, March 8, 12
    • Results Very slow tests Unreadable failure messages Complex fixture set up Two test suites (bash+python)Thursday, March 8, 12
    • Lessons Learned Test di Integrazione? Ok, ser vono ma meglio che siano pochi. Test Funzionali? Meglio che siano omogenei con i test di unità Per la bash non sono necessarie librerie/ framework di testThursday, March 8, 12
    • Bash for Testing(1) #!/bin/bash set  -­‐o  errexit set  -­‐o  nounsetThursday, March 8, 12
    • Bash for Testing(2) touch  foo trash-­‐put  foo #  foo  should  have  been  deleted test  !  -­‐f  fooThursday, March 8, 12
    • Bash for Testing(3) diff  <(trash-­‐list)  -­‐  <<  EXPECTED_RESULT 2012-­‐03-­‐02  19:43:44  /Users/andrea/foo 2012-­‐03-­‐02  19:44:04  /Users/andrea/foo EXPECTED_RESULTThursday, March 8, 12
    • LicenseThursday, March 8, 12
    • GPL v2+Thursday, March 8, 12
    • Lessons LearnedThursday, March 8, 12
    • Lessons Learned (1) Licenze già fatte sono comode ma vanno capiteThursday, March 8, 12
    • Lessons Learned (2) Il papiro all’inizio del file é una rotturaThursday, March 8, 12
    • Papiro della GPL #!/usr/bin/python # list-trash: list trashed files # # Copyright (C) 2007,2008 Andrea Francia Trivolzio(PV) Italy # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. from libtrash import TrashDirectory for trashed_file in TrashDirectory.trashed_files() :     print "%s %s" % (trashed_file.deletion_date, trashed_file.path)Thursday, March 8, 12
    • Lessons learned (3) A volte conviene usare licenze più sempliciThursday, March 8, 12
    •             DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE                    Version 2, December 2004 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION  0. You just DO WHAT THE FUCK YOU WANT TO. http://sam.zoy.org/wtfpl/ Thursday, March 8, 12
    • Code Hosting ServicesThursday, March 8, 12
    • sourceforge.net ✉Thursday, March 8, 12
    • Lessons Learned Automatable release support Feedback barrier Si può sempre cambiare bitbucket sf.net google code ? GitHubThursday, March 8, 12
    • Internals: TrashDirThursday, March 8, 12
    • Gnome KDE TrashDir cli XFCEThursday, March 8, 12
    • How it works $  trash-­‐put  pippo.txt ~/.local/share/Trash/                        +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+        info/                                    ,-­‐-­‐-­‐-­‐-­‐|  [Trash  Info]                                        |                pippo.txt.trashinfo            |  Path=/tmp/pippo.txt                          |        files/                                              |  DeletionDate=2012-­‐02-­‐29T00:13:54|                pippo.txt                                +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+                                  `.                                      `-­‐  original  file  moved  hereThursday, March 8, 12
    • How it works $  touch  pippo.txt;  trash-­‐put  pippo.txt          #  again $  touch  pippo.txt;  trash-­‐put  pippo.txt          #  again $  touch  pippo.txt;  trash-­‐put  pippo.txt          #  again ~/.local/share/Trash/          info/                                                    pippo.txt.trashinfo                pippo_1.txt.trashinfo                pippo_2.txt.trashinfo                pippo_3.txt.trashinfo        files/                                                  pippo.txt                                    pippo_1.txt                                    pippo_2.txt                                    pippo_3.txt                    Thursday, March 8, 12
    • Gnome KDE TrashDir cli XFCEThursday, March 8, 12
    • Thursday, March 8, 12
    • pippo.txt pippo.txtThursday, March 8, 12
    • open(3) #include  <sys/stat.h>                                                       #include  <fcntl.h>                                                                                                                                                             int  open(const  char  *path,  int  oflag,  ...  );                                                                          ^                                                          O_EXCL  |  O_CREAT  -­‐’  Thursday, March 8, 12
    • os.open import  os fd  =  os.open(dest,  os.O_RDWR    |                                        os.O_CREAT  |                                      os.O_EXCL,  0600)                                                                         os.write(fd,  content) os.close(fd) logger.trashinfo_created_as(dest) return  (dest,  trash_id)Thursday, March 8, 12
    • ConclusioniThursday, March 8, 12
    • Lezioni miste (1) Utenti: va bene ascoltarli ma la vision la devi avere tu (WONTFIX, parallelo) Promozione per distro: Non vale la pena se poi non lo aggiornanoThursday, March 8, 12
    • Lezioni miste (2) Code Review? Utilissime, basta chiedere in lista. Occhio alle librerie e ai framework (OptionParser, Unipath)Thursday, March 8, 12
    • Lezioni miste (3) Tempo a disposizione? Peggio che al lavoro! Alta coesione e basso accoppiamento e test veloci sono indispensabiliThursday, March 8, 12
    • Lezioni miste (4) È vero che Git sembra più complicato di Subversion? Però è più facile integrare le patch degli altri meno conflitti inesistenti commit locali non si incasina se sposti una directory capisce da solo se hai rinominato un fileThursday, March 8, 12
    • Lezioni miste (5) Collaboration tools (wiki, blog, mailing- list) ➡Cominciano ad essere usati solo dopo quando c’e’ veramente tanto interesse ➡Si può aspettare a farli.Thursday, March 8, 12
    • BranchesThursday, March 8, 12
    • Lezione più grandeThursday, March 8, 12
    • Come lo farei ora? Beer/Pizza License Git GitHub Outside In TDD No Wiki, solo .txt tra i sorgenti Nessun push promozionaleThursday, March 8, 12
    • Grazie Andrea Francia http://andreafrancia.it andrea@andreafrancia.it Libero da settembre 2012Thursday, March 8, 12
    • Altre coseThursday, March 8, 12
    • Altro Singleton Logger Troppa docs sulla wikiThursday, March 8, 12