+ All Categories
Home > Technology > Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

Date post: 15-May-2015
Category:
Upload: andrea-francia
View: 4,554 times
Download: 0 times
Share this document with a friend
Description:
É vero che sbagliare é un buon modo per imparare, ma é ancora meglioimparare dagli errori degli altri.Sara` presentata una carrellata di tutti gli errori che ho fatto durante lo sviluppo del progetto Open Source `trash-cli`. Errori di tutti i tipi: manageriali, architetturali, di design e di metodologia. Versione Codemotion Mar 24, 2012
148
Tutti i miei sbagli Andrea Francia [email protected] – http://andreafrancia.it 1 Saturday, March 24, 12
Transcript
Page 1: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

Tutti i miei sbagli

Andrea Francia

[email protected] – http://andreafrancia.it

1Saturday, March 24, 12

Page 2: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Tutti i miei sbagli Errori di un wannabe Open Source Developer

Andrea Francia

22Saturday, March 24, 12

Page 3: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Contenuti

Il progettoGli erroriQualcosa di giustoConclusioniApplausi

33Saturday, March 24, 12

Page 4: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

trash-cli

https://github.com/andreafrancia/trash-cli

44Saturday, March 24, 12

Page 5: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Open Source

GPLv2

55Saturday, March 24, 12

Page 6: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Linux

66Saturday, March 24, 12

Page 7: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ trash

77Saturday, March 24, 12

Page 8: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ trash ./foo

88Saturday, March 24, 12

Page 9: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ list-trash

2012-03-02 19:43:44 /Users/andrea/foo

99Saturday, March 24, 12

Page 10: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ trash a_dir/foo$ trash another_dir/foo

1010Saturday, March 24, 12

Page 11: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ list-trash 2012-03-02 19:43:44 /home/andrea/foo2012-03-02 19:50:04 /home/andrea/a_dir/… 2012-03-02 19:50:05 /home/andrea/anothe…

1111Saturday, March 24, 12

Page 12: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ restore-trash 0 2012-03-02 19:43:44 /home/andrea/foo 1 2012-03-02 19:50:04 /home/andrea/a_d… 2 2012-03-02 19:50:05 /home/andrea/ano…File to restore? [0..2]:

1212Saturday, March 24, 12

Page 13: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ empty-trash

1313Saturday, March 24, 12

Page 14: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli14

XFCE

Gnome

KDE

14Saturday, March 24, 12

Page 15: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Generic Naming Issue

1515Saturday, March 24, 12

Page 16: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Protagonisti

1616Saturday, March 24, 12

Page 17: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

I nomi dei comandi

$ trash

$ list-trash

$ empty-trash

$ restore-trash

1717Saturday, March 24, 12

Page 18: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Come funziona Fedora

1818Saturday, March 24, 12

Page 19: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli19

Un revisoredi Fedora

19Saturday, March 24, 12

Page 20: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Distribuzioni

Come funzionano?

2020Saturday, March 24, 12

Page 21: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Distribuzioni

Come funzionano?

2121Saturday, March 24, 12

Page 22: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

2X Absolute AbulÉdu AgiliaLinux Alinex aLinux Alpine ALT Ankur Bangla AnNyung antiX APODIO aptosid Arch ArchBang ArcheOS AriOS Ark ArtistX Asianux Astaro AsteriskNOW Asturix Aurora AUSTRUMI AV Linux BackBox BackTrack Baltix Bardinux Bayanihan BeakOS Berry BigLinux Bio-Linux blackPanther BLAG BlankOn Bodhi BOSS BRLix Burapha CAELinux CAINE Caixa Mágica Calculate Canaima Caos Càtix CCux CDlinux CensorNet CentOS Chakra ClearOS Clonezilla Comfusion Commodore Connochaet Coyote CrunchBang CRUX CTKArch Debian DebXPde Deepin DEFT DesktopBSD Devil DigAnTel DoudouLinux Draco DragonFly Dragora Dreamlinux Dream Studio dyne:bolic EasyPeasy Edubuntu Ekaaty Elastix elementary Endian Epidemic Estrella Roja ESUN Evinux ExTiX Fedora Fermi Finnix Foresight FreeBSD FreeNAS Frenzy Frugalware Fuduntu FuguIta Funtoo Fusion GeeXboX Gentoo Gentoox GhostBSD Gibraltar GnackTrack GParted Greenie Grml Guadalinex Hacao Haiku Hanthana Helix IDMS Imagineos Inquisitor Insigne IPCop IPFire Jibbed JoLinux Joli OS K12Linux kademar KahelOS KANOTIX Karoshi Kiwi Knoppel KNOPPIX KnoSciences Kongoni Kororaa Kubuntu Kwort Leeenux Legacy LFS LinHES Linpus LinuxConsole Linux-EduCD linuX-gamers LinuxTLE Linvo Liquid Lemur Litrix LliureX LPS Lubuntu Lunar m0n0wall Macpup Madbox Mageia Magic Mandriva Mangaka Matriux MAX MEPIS MidnightBSD MiniNo MINIX Mint Miracle MirOS MoLinux Momonga Monomaxos moonOS Musix Myrinix Mythbuntu Nature's NetBSD Netrunner NetSecL Nexenta NexentaStor NST NuTyX Ojuba OLPC Omoikane O-Net OpenBSD Openfiler OpenIndiana openmamba OpenMediaVault openSUSE Openwall Open Xange Ophcrack Oracle Otakux Overclockix PAIPIX paldo PapugLinux Parabola Pardus Parsix Parted Magic PC-BSD PCLinuxOS Pear PelicanHPC Pentoo Peppermint pfSense Phayoune Pinguy Plamo PLD Plop Porteus Poseidon pQui Privatix Proxmox PUIAS Puppy Puredyne PureOS Qimo Qomo Quirky Red Flag Red Hat Redo redWall Resulinux RIPLinuX Rocks Cluster ROSA Runtu Sabayon Sabily SalineOS Salix SAMity Satux SchilliX Scientific Securepoint Semplice siduction Skolelinux Slackware SliTaz SME Server SmoothWall SMS Snowlinux SoL Solaris Sorcerer Source Mage STD StressLinux SuliX SuperGamer Super OS SuperX Suriyan SUSE Swift Syllable SystemRescue T2 Tails Tango Studio TFM Thinstation Tiny Core TinyMe Toorox Toutou Trinity Trisquel trixbox Tuquito Turbolinux TurnKey UberStudent Ubuntu Ubuntu DP Ubuntu Rescue Ubuntu Studio UHU-Linux Ulteo Ultimate Unity Untangle UPR Userful UTUTO Vector VENENUX Vine Vinux VLOS VMKnoppix VortexBox Vyatta wattOS Webconverger Wifislax xPUD Xubuntu Yellow Dog Ylmf Yoper Zentyal Zenwalk Zeroshell ZevenOS Zorin

22of http://distrowatch.com/From

22Saturday, March 24, 12

Page 23: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

2X Absolute AbulÉdu AgiliaLinux Alinex aLinux Alpine ALT Ankur Bangla AnNyung antiX APODIO aptosid Arch ArchBang ArcheOS AriOS Ark ArtistX Asianux Astaro AsteriskNOW Asturix Aurora AUSTRUMI AV Linux BackBox BackTrack Baltix Bardinux Bayanihan BeakOS Berry BigLinux Bio-Linux blackPanther BLAG BlankOn Bodhi BOSS BRLix Burapha CAELinux CAINE Caixa Mágica Calculate Canaima Caos Càtix CCux CDlinux CensorNet CentOS Chakra ClearOS Clonezilla Comfusion Commodore Connochaet Coyote CrunchBang CRUX CTKArch Debian DebXPde Deepin DEFT DesktopBSD Devil DigAnTel DoudouLinux Draco DragonFly Dragora Dreamlinux Dream Studio dyne:bolic EasyPeasy Edubuntu Ekaaty Elastix elementary Endian Epidemic Estrella Roja ESUN Evinux ExTiX Fedora Fermi Finnix Foresight FreeBSD FreeNAS Frenzy Frugalware Fuduntu FuguIta Funtoo Fusion GeeXboX Gentoo Gentoox GhostBSD Gibraltar GnackTrack GParted Greenie Grml Guadalinex Hacao Haiku Hanthana Helix IDMS Imagineos Inquisitor Insigne IPCop IPFire Jibbed JoLinux Joli OS K12Linux kademar KahelOS KANOTIX Karoshi Kiwi Knoppel KNOPPIX KnoSciences Kongoni Kororaa Kubuntu Kwort Leeenux Legacy LFS LinHES Linpus LinuxConsole Linux-EduCD linuX-gamers LinuxTLE Linvo Liquid Lemur Litrix LliureX LPS Lubuntu Lunar m0n0wall Macpup Madbox Mageia Magic Mandriva Mangaka Matriux MAX MEPIS MidnightBSD MiniNo MINIX Mint Miracle MirOS MoLinux Momonga Monomaxos moonOS Musix Myrinix Mythbuntu Nature's NetBSD Netrunner NetSecL Nexenta NexentaStor NST NuTyX Ojuba OLPC Omoikane O-Net OpenBSD Openfiler OpenIndiana openmamba OpenMediaVault openSUSE Openwall Open Xange Ophcrack Oracle Otakux Overclockix PAIPIX paldo PapugLinux Parabola Pardus Parsix Parted Magic PC-BSD PCLinuxOS Pear PelicanHPC Pentoo Peppermint pfSense Phayoune Pinguy Plamo PLD Plop Porteus Poseidon pQui Privatix Proxmox PUIAS Puppy Puredyne PureOS Qimo Qomo Quirky Red Flag Red Hat Redo redWall Resulinux RIPLinuX Rocks Cluster ROSA Runtu Sabayon Sabily SalineOS Salix SAMity Satux SchilliX Scientific Securepoint Semplice siduction Skolelinux Slackware SliTaz SME Server SmoothWall SMS Snowlinux SoL Solaris Sorcerer Source Mage STD StressLinux SuliX SuperGamer Super OS SuperX Suriyan SUSE Swift Syllable SystemRescue T2 Tails Tango Studio TFM Thinstation Tiny Core TinyMe Toorox Toutou Trinity Trisquel trixbox Tuquito Turbolinux TurnKey UberStudent Ubuntu Ubuntu DP Ubuntu Rescue Ubuntu Studio UHU-Linux Ulteo Ultimate Unity Untangle UPR Userful UTUTO Vector VENENUX Vine Vinux VLOS VMKnoppix VortexBox Vyatta wattOS Webconverger Wifislax xPUD Xubuntu Yellow Dog Ylmf Yoper Zentyal Zenwalk Zeroshell ZevenOS Zorin

23on http://distrowatch.com/See

23Saturday, March 24, 12

Page 24: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Fedora

24

Debian

24Saturday, March 24, 12

Page 25: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Debian

2525Saturday, March 24, 12

Page 26: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli2626Saturday, March 24, 12

Page 27: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli2727Saturday, March 24, 12

Page 28: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli2828Saturday, March 24, 12

Page 29: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Fedora

2929Saturday, March 24, 12

Page 30: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Fedora

3030Saturday, March 24, 12

Page 31: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Nota

A quei tempi il progetto si chiamava solo “trash” (come il comando)

3131Saturday, March 24, 12

Page 32: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

ReviewerThe name of this package is also a bit too generic, though not that much.

3232Saturday, March 24, 12

Page 34: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

DeveloperOk I’ll change to trash-cli.

3434Saturday, March 24, 12

Page 36: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

DeveloperThe name of the main command is 'trash' without "-cli".

3636Saturday, March 24, 12

Page 37: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

DeveloperThe command is used is this way:

$ trash this-fileThat means: "trash this-file in the trashcan", there is no reason to append the"-cli" suffix to the main command.

3737Saturday, March 24, 12

Page 38: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

Developer

You are already using the Command Line Interface.

3838Saturday, March 24, 12

Page 39: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

DeveloperIn my opinion each command name should reflect what the command does.

3939Saturday, March 24, 12

Page 40: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

Reviewer

As far as possible.

4040Saturday, March 24, 12

Page 41: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

Developer (and others)There are other programs with generic names already included!!

4141Saturday, March 24, 12

Page 42: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

samba-common

netprofilesrpcclienttestparm

4242Saturday, March 24, 12

Page 43: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Postgresql

createdbcreatelangcreateuserdropdb

droplangdropuser

4343Saturday, March 24, 12

Page 44: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

$ repoquery -f /usr/bin/playerplayer-0:2.1.1-5.fc10.i386

44

The Player ProjectFree Software tools for robot and sensor applications

44Saturday, March 24, 12

Page 46: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

... after some months and discussions ...

4646Saturday, March 24, 12

Page 47: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“”

@andreafrancia #trash-cli

Developer

.... OK

4747Saturday, March 24, 12

Page 48: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Command names changed

trashlist-trashrestore-trashempty-trash

trash-put

4848Saturday, March 24, 12

Page 49: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Command names changed

trashlist-trashrestore-trashempty-trash

trash-puttrash-listtrash-restoretrash-empty

4949Saturday, March 24, 12

Page 50: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Results

Debian --> vecchi nomiUpstream --> nomi nuovi

5050Saturday, March 24, 12

Page 51: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Adesso ... lo includono?

5151Saturday, March 24, 12

Page 52: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

No!

5252Saturday, March 24, 12

Page 53: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Il packager s’era stufato!

5353Saturday, March 24, 12

Page 54: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Results

Debian --> vecchi nomiUpstream --> nomi nuoviFedora --> niente!

5454Saturday, March 24, 12

Page 55: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

La beffa ...

5555Saturday, March 24, 12

Page 56: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Dopo qualche mese ...

5656Saturday, March 24, 12

Page 57: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

... un altro packager...

5757Saturday, March 24, 12

Page 58: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

... ri-propone trash-cli (con i vecchi nomi),

e ...

5858Saturday, March 24, 12

Page 59: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

... un altro revisore ...

5959Saturday, March 24, 12

Page 60: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

... Accetta!

6060Saturday, March 24, 12

Page 61: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons Learned

Non cambiare mai il nome dei comandiNon cedere alle pressioni dei revisori (tanto cambiano)

More at: https://github.com/andreafrancia/trash-cli/blob/master/docs/about-the-generic-naming-issue.txt

6161Saturday, March 24, 12

Page 62: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Acceptance Tests

6262Saturday, March 24, 12

Page 63: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Acceptance Test

È un test che verifica una feature.

6363Saturday, March 24, 12

Page 64: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Developer TestÈ un test che serve allo sviluppatore.

6464Saturday, March 24, 12

Page 65: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Usi dei Developer Testvalidare il codicesupporto al design (con TDD)rilevare regressioniimparare una libreriadocumentare l’uso di una libreria....

6565Saturday, March 24, 12

Page 66: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Developer Tests

A volte sono chiamati: Unit Tests

6666Saturday, March 24, 12

Page 67: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli6767Saturday, March 24, 12

Page 68: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Come ho affrontato il problema

6868Saturday, March 24, 12

Page 69: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

Avere i test é bello...

6969Saturday, March 24, 12

Page 70: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

Come li scrivo?

7070Saturday, March 24, 12

Page 71: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

Developer Test --> in python

7171Saturday, March 24, 12

Page 72: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

Acceptance Test --> ?????

7272Saturday, March 24, 12

Page 73: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

devo testare a livello utente

7373Saturday, March 24, 12

Page 74: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

l’utente usa la Bash

7474Saturday, March 24, 12

Page 75: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

gli script in Bash sono facili

7575Saturday, March 24, 12

Page 76: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

esiste già un framework di test per Bash

7676Saturday, March 24, 12

Page 77: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

shunit

7777Saturday, March 24, 12

Page 78: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

IDEA:li scrivo in Bash!

7878Saturday, March 24, 12

Page 79: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Era un buona idea?

7979Saturday, March 24, 12

Page 80: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli8080Saturday, March 24, 12

Page 81: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Risultati

8181Saturday, March 24, 12

Page 82: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Bash Tests are slooow!

8282Saturday, March 24, 12

Page 83: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Little information in failure messages

8383Saturday, March 24, 12

Page 84: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Complex set-up

8484Saturday, March 24, 12

Page 85: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Complex test set-up (1)

85

•$PATH tricks

85Saturday, March 24, 12

Page 86: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Complex test set-up (2)

86

•Test volume creation

86Saturday, March 24, 12

Page 87: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Two test suites

accetance test (in bash)developer test (python)

8787Saturday, March 24, 12

Page 88: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons Learned

8888Saturday, March 24, 12

Page 89: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli89

Test

Se sono lenti Allora non li usi

89Saturday, March 24, 12

Page 90: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli90

Test

Seallora non li usi

90Saturday, March 24, 12

Page 91: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli91

Test

SeAllora li usi

91Saturday, March 24, 12

Page 92: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Quindi

92

Meglio se tutti omogenei (e.g. tutto

python)

92Saturday, March 24, 12

Page 93: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Bash Tests?Ok, ma pochi.

9393Saturday, March 24, 12

Page 94: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

shUnit non serve a niente

94

Si può fare tutto in bash

94Saturday, March 24, 12

Page 95: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Testing with Bash

9595Saturday, March 24, 12

Page 96: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

#!/bin/bashset,-o,errexit

9696Saturday, March 24, 12

Page 97: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

#!/bin/bashset,-o,errexit,set,-o,nounset

9797Saturday, March 24, 12

Page 98: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

#!/bin/bashset,-o,errexitset,-o,nounset

#,given,a,file,named,footouch,foo

#,when,I,put,the,file,in,the,trashtrash-put,foo

#,then,the,file,should,have,been,gonetest,!,-f,foo

it_should_delete_the_argument.bash

9898Saturday, March 24, 12

Page 99: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Checking output of a command

#,comparing,output,of,a,command

diff,<(trash-list),-,<<,EXPECTED_OUTPUT2012-03-02,19:43:44,/Users/andrea/foo2012-03-02,19:44:04,/Users/andrea/fooEXPECTED_OUTPUT

9999Saturday, March 24, 12

Page 100: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Licenza

100100Saturday, March 24, 12

Page 101: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

Quale licenza?

101101Saturday, March 24, 12

Page 102: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

“ ”@andreafrancia #trash-cli

GPL

102102Saturday, March 24, 12

Page 103: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

GPL v2+

103

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.

103Saturday, March 24, 12

Page 104: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli104

or (at your option) any later version.

104Saturday, March 24, 12

Page 105: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons Learned

105105Saturday, March 24, 12

Page 106: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Licenze già fatte?

106

Comode ma vanno capite.

106Saturday, March 24, 12

Page 107: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Il papiro all’inizio del file é una rottura

107107Saturday, March 24, 12

Page 108: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

#!/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)

Papiro della GPL

108108Saturday, March 24, 12

Page 109: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Esistono licenze più semplici!

109109Saturday, March 24, 12

Page 110: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE                     Version 2, December 2004

 Copyright (C) 2004 Sam Hocevar <[email protected]>

 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/110

110Saturday, March 24, 12

Page 111: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Code Hosting Services

111111Saturday, March 24, 12

Page 112: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

sourceforge.net

112112Saturday, March 24, 12

Page 113: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons Learned

113113Saturday, March 24, 12

Page 114: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importante

113113Saturday, March 24, 12

Page 115: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrier

113113Saturday, March 24, 12

Page 116: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

113113Saturday, March 24, 12

Page 117: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net

113113Saturday, March 24, 12

Page 118: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net google code

113113Saturday, March 24, 12

Page 119: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net google code

bitbucket

113113Saturday, March 24, 12

Page 120: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net google code

bitbucket

113113Saturday, March 24, 12

Page 121: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net google code GitHub

bitbucket

113113Saturday, March 24, 12

Page 122: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare

sf.net google code GitHub

bitbucket

?

113113Saturday, March 24, 12

Page 123: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Una scelta azzeccata: Python

114114Saturday, March 24, 12

Page 124: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Internals : TrashDir

115115Saturday, March 24, 12

Page 125: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli116

TrashDir: dove sono nascosti i file cestinati

116Saturday, March 24, 12

Page 126: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

How it works

117117Saturday, March 24, 12

Page 127: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

KDE Gnome

trash-cli XFCE

TrashDir

118118Saturday, March 24, 12

Page 128: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

How it works

~/.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,here

$,trash-put,pippo.txt

119119Saturday, March 24, 12

Page 129: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

How it works

~/.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,,,,,,,,,,

$,touch,pippo.txt;,trash-put,pippo.txt,,,,,#,again$,touch,pippo.txt;,trash-put,pippo.txt,,,,,#,again$,touch,pippo.txt;,trash-put,pippo.txt,,,,,#,again

120120Saturday, March 24, 12

Page 130: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

KDE Gnome

cliXFCE

TrashDir

121121Saturday, March 24, 12

Page 131: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli122122Saturday, March 24, 12

Page 132: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

pippo.txtpippo.txt

123123Saturday, March 24, 12

Page 133: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

open(3)#include,<sys/stat.h>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#include,<fcntl.h>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,int,open(const,char,*path,,int,oflag,,...,);,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,O_EXCL,|,O_CREAT,-’,

124124Saturday, March 24, 12

Page 134: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

os.openimport,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)

125125Saturday, March 24, 12

Page 135: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Conclusioni

126126Saturday, March 24, 12

Page 136: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Come lo farei ora?

127127Saturday, March 24, 12

Page 137: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Beer/Pizza License

128128Saturday, March 24, 12

Page 138: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Git

129129Saturday, March 24, 12

Page 139: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

GitHub

130130Saturday, March 24, 12

Page 140: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

No Wiki, solo .txt nei i sorgenti

131131Saturday, March 24, 12

Page 141: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

No mailing list.

132132Saturday, March 24, 12

Page 142: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Nessuno sforzo per l’inclusione in distribuzioni

133133Saturday, March 24, 12

Page 143: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Ma qualcuno lo usa?

134134Saturday, March 24, 12

Page 144: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Distribuzioni

135

Debian (e Ubuntu)FedoraArch LinuxForesight LinuxOpenSuse... forse altri

135Saturday, March 24, 12

Page 145: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Altri progetti

136

LXDE usa trash-cli come libreria

(*) LXDE: Lightweight X11 Desktop Environment

136Saturday, March 24, 12

Page 146: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli137

http://qa.debian.org/popcon-graph.php?packages=trash-cli

137Saturday, March 24, 12

Page 147: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Grazie

138

Andrea Franciahttp://andreafrancia.it

[email protected]

139138Saturday, March 24, 12

Page 148: Tutti i miei sbagli (Errori di un wannabe Open Source Developer)

@andreafrancia #trash-cli

Grazie

139

Andrea Franciahttp://andreafrancia.it

[email protected]

Libero da settembre 2012

139139Saturday, March 24, 12


Recommended