Date post: | 15-May-2015 |
Category: |
Technology |
Upload: | andrea-francia |
View: | 4,554 times |
Download: | 0 times |
Tutti i miei sbagli
Andrea Francia
[email protected] – http://andreafrancia.it
1Saturday, March 24, 12
@andreafrancia #trash-cli
Tutti i miei sbagli Errori di un wannabe Open Source Developer
Andrea Francia
22Saturday, March 24, 12
@andreafrancia #trash-cli
Contenuti
Il progettoGli erroriQualcosa di giustoConclusioniApplausi
33Saturday, March 24, 12
@andreafrancia #trash-cli
trash-cli
https://github.com/andreafrancia/trash-cli
44Saturday, March 24, 12
@andreafrancia #trash-cli
Open Source
GPLv2
55Saturday, March 24, 12
@andreafrancia #trash-cli
Linux
66Saturday, March 24, 12
@andreafrancia #trash-cli
$ trash
77Saturday, March 24, 12
@andreafrancia #trash-cli
$ trash ./foo
88Saturday, March 24, 12
@andreafrancia #trash-cli
$ list-trash
2012-03-02 19:43:44 /Users/andrea/foo
99Saturday, March 24, 12
@andreafrancia #trash-cli
$ trash a_dir/foo$ trash another_dir/foo
1010Saturday, March 24, 12
@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
@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
@andreafrancia #trash-cli
$ empty-trash
1313Saturday, March 24, 12
@andreafrancia #trash-cli14
XFCE
Gnome
KDE
14Saturday, March 24, 12
@andreafrancia #trash-cli
Generic Naming Issue
1515Saturday, March 24, 12
@andreafrancia #trash-cli
Protagonisti
1616Saturday, March 24, 12
@andreafrancia #trash-cli
I nomi dei comandi
$ trash
$ list-trash
$ empty-trash
$ restore-trash
1717Saturday, March 24, 12
@andreafrancia #trash-cli
Come funziona Fedora
1818Saturday, March 24, 12
@andreafrancia #trash-cli19
Un revisoredi Fedora
19Saturday, March 24, 12
@andreafrancia #trash-cli
Distribuzioni
Come funzionano?
2020Saturday, March 24, 12
@andreafrancia #trash-cli
Distribuzioni
Come funzionano?
2121Saturday, March 24, 12
@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
@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
@andreafrancia #trash-cli
Fedora
24
Debian
24Saturday, March 24, 12
@andreafrancia #trash-cli
Debian
2525Saturday, March 24, 12
@andreafrancia #trash-cli2626Saturday, March 24, 12
@andreafrancia #trash-cli2727Saturday, March 24, 12
@andreafrancia #trash-cli2828Saturday, March 24, 12
@andreafrancia #trash-cli
Fedora
2929Saturday, March 24, 12
@andreafrancia #trash-cli
Fedora
3030Saturday, March 24, 12
@andreafrancia #trash-cli
Nota
A quei tempi il progetto si chiamava solo “trash” (come il comando)
3131Saturday, March 24, 12
“”
@andreafrancia #trash-cli
ReviewerThe name of this package is also a bit too generic, though not that much.
3232Saturday, March 24, 12
“”
@andreafrancia #trash-cli
https://bugzilla.redhat.com/show_bug.cgi?id=448122#c1
ReviewerCould upstream change it to be less generic?
3333Saturday, March 24, 12
“”
@andreafrancia #trash-cli
DeveloperOk I’ll change to trash-cli.
3434Saturday, March 24, 12
“”
@andreafrancia #trash-clihttps://bugzilla.redhat.com/show_bug.cgi?id=448122#c6
Reviewer[Ok...but...] The name of the command should also be trash-cli.
3535Saturday, March 24, 12
“”
@andreafrancia #trash-cli
DeveloperThe name of the main command is 'trash' without "-cli".
3636Saturday, March 24, 12
“”
@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
“”
@andreafrancia #trash-cli
Developer
You are already using the Command Line Interface.
3838Saturday, March 24, 12
“”
@andreafrancia #trash-cli
DeveloperIn my opinion each command name should reflect what the command does.
3939Saturday, March 24, 12
“”
@andreafrancia #trash-cli
Reviewer
As far as possible.
4040Saturday, March 24, 12
“”
@andreafrancia #trash-cli
Developer (and others)There are other programs with generic names already included!!
4141Saturday, March 24, 12
@andreafrancia #trash-cli
samba-common
netprofilesrpcclienttestparm
4242Saturday, March 24, 12
@andreafrancia #trash-cli
Postgresql
createdbcreatelangcreateuserdropdb
droplangdropuser
4343Saturday, March 24, 12
@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
“”
@andreafrancia #trash-cli
Reviewer & othersPrecedent mistakes are not a good reason to let other generic names enter the distro.
https://bugzilla.redhat.com/show_bug.cgi?id=448122#c17
http://www.redhat.com/archives/fedora-devel-list/2008-October/msg00223.html45
45Saturday, March 24, 12
@andreafrancia #trash-cli
... after some months and discussions ...
4646Saturday, March 24, 12
“”
@andreafrancia #trash-cli
Developer
.... OK
4747Saturday, March 24, 12
@andreafrancia #trash-cli
Command names changed
trashlist-trashrestore-trashempty-trash
trash-put
4848Saturday, March 24, 12
@andreafrancia #trash-cli
Command names changed
trashlist-trashrestore-trashempty-trash
trash-puttrash-listtrash-restoretrash-empty
4949Saturday, March 24, 12
@andreafrancia #trash-cli
Results
Debian --> vecchi nomiUpstream --> nomi nuovi
5050Saturday, March 24, 12
@andreafrancia #trash-cli
Adesso ... lo includono?
5151Saturday, March 24, 12
@andreafrancia #trash-cli
No!
5252Saturday, March 24, 12
@andreafrancia #trash-cli
Il packager s’era stufato!
5353Saturday, March 24, 12
@andreafrancia #trash-cli
Results
Debian --> vecchi nomiUpstream --> nomi nuoviFedora --> niente!
5454Saturday, March 24, 12
@andreafrancia #trash-cli
La beffa ...
5555Saturday, March 24, 12
@andreafrancia #trash-cli
Dopo qualche mese ...
5656Saturday, March 24, 12
@andreafrancia #trash-cli
... un altro packager...
5757Saturday, March 24, 12
@andreafrancia #trash-cli
... ri-propone trash-cli (con i vecchi nomi),
e ...
5858Saturday, March 24, 12
@andreafrancia #trash-cli
... un altro revisore ...
5959Saturday, March 24, 12
@andreafrancia #trash-cli
... Accetta!
6060Saturday, March 24, 12
@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
@andreafrancia #trash-cli
Acceptance Tests
6262Saturday, March 24, 12
@andreafrancia #trash-cli
Acceptance Test
È un test che verifica una feature.
6363Saturday, March 24, 12
@andreafrancia #trash-cli
Developer TestÈ un test che serve allo sviluppatore.
6464Saturday, March 24, 12
@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
@andreafrancia #trash-cli
Developer Tests
A volte sono chiamati: Unit Tests
6666Saturday, March 24, 12
@andreafrancia #trash-cli6767Saturday, March 24, 12
@andreafrancia #trash-cli
Come ho affrontato il problema
6868Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
Avere i test é bello...
6969Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
Come li scrivo?
7070Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
Developer Test --> in python
7171Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
Acceptance Test --> ?????
7272Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
devo testare a livello utente
7373Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
l’utente usa la Bash
7474Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
gli script in Bash sono facili
7575Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
esiste già un framework di test per Bash
7676Saturday, March 24, 12
@andreafrancia #trash-cli
shunit
7777Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
IDEA:li scrivo in Bash!
7878Saturday, March 24, 12
@andreafrancia #trash-cli
Era un buona idea?
7979Saturday, March 24, 12
@andreafrancia #trash-cli8080Saturday, March 24, 12
@andreafrancia #trash-cli
Risultati
8181Saturday, March 24, 12
@andreafrancia #trash-cli
Bash Tests are slooow!
8282Saturday, March 24, 12
@andreafrancia #trash-cli
Little information in failure messages
8383Saturday, March 24, 12
@andreafrancia #trash-cli
Complex set-up
8484Saturday, March 24, 12
@andreafrancia #trash-cli
Complex test set-up (1)
85
•$PATH tricks
85Saturday, March 24, 12
@andreafrancia #trash-cli
Complex test set-up (2)
86
•Test volume creation
86Saturday, March 24, 12
@andreafrancia #trash-cli
Two test suites
accetance test (in bash)developer test (python)
8787Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons Learned
8888Saturday, March 24, 12
@andreafrancia #trash-cli89
Test
Se sono lenti Allora non li usi
89Saturday, March 24, 12
@andreafrancia #trash-cli90
Test
Seallora non li usi
90Saturday, March 24, 12
@andreafrancia #trash-cli91
Test
SeAllora li usi
91Saturday, March 24, 12
@andreafrancia #trash-cli
Quindi
92
Meglio se tutti omogenei (e.g. tutto
python)
92Saturday, March 24, 12
@andreafrancia #trash-cli
Bash Tests?Ok, ma pochi.
9393Saturday, March 24, 12
@andreafrancia #trash-cli
shUnit non serve a niente
94
Si può fare tutto in bash
94Saturday, March 24, 12
@andreafrancia #trash-cli
Testing with Bash
9595Saturday, March 24, 12
@andreafrancia #trash-cli
#!/bin/bashset,-o,errexit
9696Saturday, March 24, 12
@andreafrancia #trash-cli
#!/bin/bashset,-o,errexit,set,-o,nounset
9797Saturday, March 24, 12
@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
@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
@andreafrancia #trash-cli
Licenza
100100Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
Quale licenza?
101101Saturday, March 24, 12
“ ”@andreafrancia #trash-cli
GPL
102102Saturday, March 24, 12
@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
@andreafrancia #trash-cli104
or (at your option) any later version.
104Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons Learned
105105Saturday, March 24, 12
@andreafrancia #trash-cli
Licenze già fatte?
106
Comode ma vanno capite.
106Saturday, March 24, 12
@andreafrancia #trash-cli
Il papiro all’inizio del file é una rottura
107107Saturday, March 24, 12
@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
@andreafrancia #trash-cli
Esistono licenze più semplici!
109109Saturday, March 24, 12
@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
@andreafrancia #trash-cli
Code Hosting Services
111111Saturday, March 24, 12
@andreafrancia #trash-cli
sourceforge.net
112112Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons Learned
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importante
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrier
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net google code
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net google code
bitbucket
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net google code
bitbucket
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net google code GitHub
bitbucket
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Lessons LearnedIl servizo di release é importanteFeedback barrierSi può sempre cambiare
sf.net google code GitHub
bitbucket
?
113113Saturday, March 24, 12
@andreafrancia #trash-cli
Una scelta azzeccata: Python
114114Saturday, March 24, 12
@andreafrancia #trash-cli
Internals : TrashDir
115115Saturday, March 24, 12
@andreafrancia #trash-cli116
TrashDir: dove sono nascosti i file cestinati
116Saturday, March 24, 12
@andreafrancia #trash-cli
How it works
117117Saturday, March 24, 12
@andreafrancia #trash-cli
KDE Gnome
trash-cli XFCE
TrashDir
118118Saturday, March 24, 12
@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
@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
@andreafrancia #trash-cli
KDE Gnome
cliXFCE
TrashDir
121121Saturday, March 24, 12
@andreafrancia #trash-cli122122Saturday, March 24, 12
@andreafrancia #trash-cli
pippo.txtpippo.txt
123123Saturday, March 24, 12
@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
@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
@andreafrancia #trash-cli
Conclusioni
126126Saturday, March 24, 12
@andreafrancia #trash-cli
Come lo farei ora?
127127Saturday, March 24, 12
@andreafrancia #trash-cli
Beer/Pizza License
128128Saturday, March 24, 12
@andreafrancia #trash-cli
Git
129129Saturday, March 24, 12
@andreafrancia #trash-cli
GitHub
130130Saturday, March 24, 12
@andreafrancia #trash-cli
No Wiki, solo .txt nei i sorgenti
131131Saturday, March 24, 12
@andreafrancia #trash-cli
No mailing list.
132132Saturday, March 24, 12
@andreafrancia #trash-cli
Nessuno sforzo per l’inclusione in distribuzioni
133133Saturday, March 24, 12
@andreafrancia #trash-cli
Ma qualcuno lo usa?
134134Saturday, March 24, 12
@andreafrancia #trash-cli
Distribuzioni
135
Debian (e Ubuntu)FedoraArch LinuxForesight LinuxOpenSuse... forse altri
135Saturday, March 24, 12
@andreafrancia #trash-cli
Altri progetti
136
LXDE usa trash-cli come libreria
(*) LXDE: Lightweight X11 Desktop Environment
136Saturday, March 24, 12
@andreafrancia #trash-cli137
http://qa.debian.org/popcon-graph.php?packages=trash-cli
137Saturday, March 24, 12
@andreafrancia #trash-cli
Grazie
138
Andrea Franciahttp://andreafrancia.it
139138Saturday, March 24, 12
@andreafrancia #trash-cli
Grazie
139
Andrea Franciahttp://andreafrancia.it
Libero da settembre 2012
139139Saturday, March 24, 12