]> git.eshelyaron.com Git - emacs.git/commitdiff
-
authorJohn Wiegley <johnw@newartisans.com>
Tue, 19 Jan 2016 06:56:33 +0000 (22:56 -0800)
committerJohn Wiegley <johnw@newartisans.com>
Tue, 19 Jan 2016 06:56:33 +0000 (22:56 -0800)
12 files changed:
1  2 
CONTRIBUTE
ChangeLog.2
etc/NEWS
lisp/emacs-lisp/package.el
lisp/erc/erc.el
lisp/mail/rmail.el
lisp/progmodes/python.el
src/buffer.c
test/Makefile.in
test/lisp/legacy/core-elisp-tests.el
test/manual/etags/html-src/softwarelibero.html
test/manual/indent/scss-mode.scss

diff --cc CONTRIBUTE
Simple merge
diff --cc ChangeLog.2
Simple merge
diff --cc etc/NEWS
Simple merge
Simple merge
diff --cc lisp/erc/erc.el
Simple merge
Simple merge
Simple merge
diff --cc src/buffer.c
Simple merge
index e8b14319549d14a86de18ae5e65c8372f865f676,0000000000000000000000000000000000000000..9f7011353cfa78d9199ac5c2496abb839b5e9d63
mode 100644,000000..100644
--- /dev/null
@@@ -1,177 -1,0 +1,185 @@@
- SELECTOR_DEFAULT=(quote (not (tag :expensive-test)))
- SELECTOR_EXPENSIVE=nil
- SELECTOR=
 +### @configure_input@
 +
 +# Copyright (C) 2010-2016 Free Software Foundation, Inc.
 +
 +# This file is part of GNU Emacs.
 +
 +# GNU Emacs 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 3 of the License, or
 +# (at your option) any later version.
 +
 +# GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 +
 +### Commentary:
 +
 +## Some targets:
 +## check: re-run all tests, writing to .log files.
 +## check-maybe: run all tests whose .log file needs updating
 +## filename.log: run tests from filename.el(c) if .log file needs updating
 +## filename: re-run tests from filename.el(c), with no logging
 +
 +### Code:
 +
 +SHELL = @SHELL@
 +
 +srcdir = @srcdir@
 +VPATH = $(srcdir)
 +
 +SEPCHAR = @SEPCHAR@
 +
 +# We never change directory before running Emacs, so a relative file
 +# name is fine, and makes life easier.  If we need to change
 +# directory, we can use emacs --chdir.
 +EMACS = ../src/emacs
 +
 +EMACS_EXTRAOPT=
 +
 +# Command line flags for Emacs.
 +# Apparently MSYS bash would convert "-L :" to "-L ;" anyway,
 +# but we might as well be explicit.
 +EMACSOPT = -batch --no-site-file --no-site-lisp -L "$(SEPCHAR)$(srcdir)" $(EMACS_EXTRAOPT)
 +
 +# Prevent any settings in the user environment causing problems.
 +unexport EMACSDATA EMACSDOC EMACSPATH GREP_OPTIONS
 +
 +## To run tests under a debugger, set this to eg: "gdb --args".
 +GDB =
 +
 +# The locale to run tests under.  Tests should work if this is set to
 +# any supported locale.  Use the C locale by default, as it should be
 +# supported everywhere.
 +TEST_LOCALE = C
 +
 +# The actual Emacs command run in the targets below.
 +# Prevent any setting of EMACSLOADPATH in user environment causing problems.
 +emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) EMACS_TEST_DIRECTORY=$(srcdir) \
 + $(GDB) "$(EMACS)" $(EMACSOPT)
 +
 +.PHONY: all check
 +
 +all: check
 +
 +%.elc: %.el
 +      @echo Compiling $<
 +      @$(emacs) -f batch-byte-compile $<
 +
 +## Ignore any test errors so we can continue to test other files.
 +## But compilation errors are always fatal.
 +WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@
 +
 +## I'd prefer to use -emacs -f ert-run-tests-batch-and-exit rather
 +## than || true, since the former makes problems more obvious.
 +## I'd also prefer to @-hide the grep part and not the
 +## ert-run-tests-batch-and-exit part.
 +##
 +## We need to use $loadfile because:
 +## i) -L :$srcdir -l basename does not work, because we have files whose
 +## basename duplicates a file in lisp/ (eg eshell.el).
 +## ii) Although -l basename will automatically load .el or .elc,
 +## -l ./basename treats basename as a literal file (it would be nice
 +## to change this; bug#17848 - if that gets done, this can be simplified).
 +##
 +## Beware: it approximates 'no-byte-compile', so watch out for false-positives!
-         --eval "(ert-run-tests-batch-and-exit ${SELECTOR})" ${WRITE_LOG}
++SELECTOR_DEFAULT = (quote (not (tag :expensive-test)))
++SELECTOR_EXPENSIVE = nil
++ifndef SELECTOR
++SELECTOR_ACTUAL=$(SELECTOR_DEFAULT)
++else
++SELECTOR_ACTUAL=$(SELECTOR)
++endif
++
++
 +%.log: %.el
 +      @if grep '^;.*no-byte-compile: t' $< > /dev/null; then \
 +        loadfile=$<; \
 +      else \
 +        loadfile=$<c; \
 +        ${MAKE} $$loadfile; \
 +      fi; \
 +      echo Testing $$loadfile; \
 +      stat=OK ; \
 +      mkdir --parents $(dir $@) ; \
 +      $(emacs) -l ert -l $$loadfile \
- ## Rerun default tests.
- check:
-       @${MAKE} check-doit SELECTOR="${SELECTOR_DEFAULT}"
++        --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG}
 +
 +ELFILES = $(shell find ${srcdir} -path "${srcdir}/manual" -prune -o \
 +              -path "*resources" -prune -o -name "*el" -print)
 +## .elc files may be in a different directory for out of source builds
 +ELCFILES = $(patsubst %.el,%.elc, \
 +              $(patsubst $(srcdir)%,.%,$(ELFILES)))
 +LOGFILES = $(patsubst %.elc,%.log,${ELCFILES})
 +LOGSAVEFILES  = $(patsubst %.elc,%.log~,${ELCFILES})
 +TESTS = $(subst ${srcdir}/,,$(LOGFILES:.log=))
 +
 +## If we have to interrupt a hanging test, preserve the log so we can
 +## see what the problem was.
 +.PRECIOUS: %.log
 +
 +.PHONY: ${TESTS}
 +
 +## The short aliases that always re-run the tests, with no logging.
 +## Define an alias both with and without the directory name for ease
 +## of use.
 +define test_template
 +$(1):
 +      @test ! -f ./$(1).log || mv ./$(1).log ./$(1).log~
 +      @${MAKE} ./$(1).log WRITE_LOG=
 +
 +$(notdir $(1)): $(1)
 +endef
 +
 +$(foreach test,${TESTS},$(eval $(call test_template,${test})))
 +
 +## Include dependencies between test files and the files they test.
 +## We do this without the file and eval directly, but then we would
 +## have to run Emacs for every make invocation, and it might not be
 +## available during clean.
 +-include make-test-deps.mk
- ## Rerun also expensive tests.
++## Rerun all default tests.
++check: mostlyclean
++      @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
 +
- check-expensive:
++## Rerun all default and expensive tests.
 +.PHONY: check-expensive
- ## Re-run all the tests every time.
- .PHONY: check-doit
- check-doit:
-       -@for f in $(LOGFILES); do test ! -f $$f || mv $$f $$f~; done
-       @${MAKE} check-maybe
- ## Only re-run tests whose .log is older than the test.
++check-expensive: mostlyclean
 +      @${MAKE} check-doit SELECTOR="${SELECTOR_EXPENSIVE}"
 +
- check-maybe: ${LOGFILES}
++## Only re-run default tests whose .log is older than the test.
 +.PHONY: check-maybe
- clean mostlyclean:
++check-maybe:
++      @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
++
++## Run the tests.
++.PHONY: check-doit
++check-doit: ${LOGFILES}
 +      $(emacs) -l ert -f ert-summarize-tests-batch-and-exit $^
 +
 +.PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean
 +
++mostlyclean:
++      -@for f in *.log; do test ! -f $$f || mv $$f $$f~; done
++
++clean:
 +      -rm -f ${LOGFILES} ${LOGSAVEFILES}
 +      -rm make-test-deps.mk
 +
 +bootstrap-clean: clean
 +      -rm -f ${ELCFILES}
 +
 +distclean: clean
 +      rm -f Makefile
 +
 +maintainer-clean: distclean bootstrap-clean
 +
 +make-test-deps.mk: $(ELFILES) make-test-deps.emacs-lisp
 +      $(EMACS) --batch -l $(srcdir)/make-test-deps.emacs-lisp \
 +      --eval "(make-test-deps \"$(srcdir)\")" \
 +      2> $@
 +# Makefile ends here.
index 76985331566ee226bb567c846373905125de3374,0000000000000000000000000000000000000000..b44bb37cc4fd84cd1d854ce799e5016783951f78
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,52 @@@
-                            (defcustom c-e-x 2 "doc" :group 'blah) c-e-x)
 +;;; core-elisp-tests.el --- Testing some core Elisp rules
 +
 +;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
 +
 +;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 +;; Keywords:
 +
 +;; 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 3 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, see <http://www.gnu.org/licenses/>.
 +
 +;;; Commentary:
 +
 +;;
 +
 +;;; Code:
 +
 +(ert-deftest core-elisp-tests-1-defvar-in-let ()
 +  "Test some core Elisp rules."
 +  (with-temp-buffer
 +    ;; Check that when defvar is run within a let-binding, the toplevel default
 +    ;; is properly initialized.
 +    (should (equal (list (let ((c-e-x 1)) (defvar c-e-x 2) c-e-x) c-e-x)
 +                   '(1 2)))
 +    (should (equal (list (let ((c-e-x 1))
++                           (defcustom c-e-x 2 "doc" :group 'blah :type 'integer) c-e-x)
 +                         c-e-x)
 +                   '(1 2)))))
 +
 +(ert-deftest core-elisp-tests-2-window-configurations ()
 +  "Test properties of window-configurations."
 +  (let ((wc (current-window-configuration)))
 +    (with-current-buffer (window-buffer (frame-selected-window))
 +      (push-mark)
 +      (activate-mark))
 +    (set-window-configuration wc)
 +    (should (or (not mark-active) (mark)))))
 +
 +(ert-deftest core-elisp-tests-3-backquote ()
 +  (should (eq 3 (eval ``,,'(+ 1 2)))))
 +
 +(provide 'core-elisp-tests)
 +;;; core-elisp-tests.el ends here
index 159432908d227591fec710c85cc2d979cff28528,0000000000000000000000000000000000000000..b374273c96948ac05ada63d861f76c82b4b59722
mode 100644,000000..100644
--- /dev/null
@@@ -1,313 -1,0 +1,313 @@@
- time-stamp-time-zone: "GMT"
 +<DIV LANG="it" ALIGN="justify">
 +
 +<H2>
 +  Cos'è il software libero?
 +</H2>
 +
 +<P>
 +  Il concetto di software libero discende naturalmente da quello di
 +  libertà di scambio di idee e di informazioni.  Negli ambienti
 +  scientifici, quest'ultimo principio è tenuto in alta considerazione
 +  per la fecondità che ha dimostrato; ad esso infatti è generalmente
 +  attribuita molta parte dell'eccezionale ed imprevedibile crescita del
 +  sapere negli ultimi tre secoli.
 +</P>
 +<P>
 +  La libertà di scambio di idee non è tuttavia una questione puramente
 +  pratica: essa è anche alla base dei concetti di libertà di pensiero e
 +  di espressione.  Analogamente alle idee, il software è immateriale, e
 +  può essere riprodotto e trasmesso facilmente.  In modo simile a quanto
 +  avviene per le idee, parte essenziale del processo che sostiene la
 +  crescita e l'evoluzione del software è la sua libera diffusione.  Ed
 +  ogni giorno di più, come le idee, il software permea il tessuto
 +  sociale e lo influenza, produce effetti etici, economici, politici e
 +  in un senso più generale culturali.
 +</P>
 +<P>
 +  Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la
 +  prima volta il concetto di software libero.  La <A TITLE="definizione
 +  di software libero secondo FSF"
 +  href="http://www.it.gnu.org/philosophy/free-sw.it.html">definizione</A>
 +  di Stallman, che da subito assurse al ruolo di definizione per
 +  eccellenza di software libero, assume la forma di quattro principi di
 +  libertà:
 +</P>
 +<P>
 +<DL>
 +  <DT>Libertà 0, o libertà fondamentale:
 +    <DD>La libertà di eseguire il programma per qualunque scopo, senza
 +    vincoli sul suo utilizzo.
 +
 +  <DT>Libertà 1:
 +    <DD>La libertà di studiare il funzionamento del programma, e
 +    di adattarlo alle proprie esigenze.
 +
 +  <DT>Libertà 2:
 +    <DD>La libertà di redistribuire copie del programma.
 +
 +  <DT>Libertà 3:
 +    <DD>La libertà di migliorare il programma, e di distribuirne
 +    i miglioramenti.
 +</DL>
 +</P>
 +<P>
 +  Il software distribuito con una licenza che rispetti questi principi è
 +  detto <Q><EM>software libero</EM></Q> (in inglese <Q><EM>free
 +  software</EM></Q>).  Nel 1984 Richard M. Stallman <A TITLE="storia
 +  del progetto GNU"
 +  HREF="http://www.it.gnu.org/gnu/thegnuproject.it.html">diede vita al
 +  progetto GNU</A>, con lo scopo di tradurre in pratica il concetto di
 +  software libero, e creò la <Q>Free Software Foundation</Q> per
 +  dare supporto logistico, legale ed economico al progetto GNU.
 +</P>
 +
 +<H3><A NAME="licenze">
 +  Licenze d'uso di un programma
 +</A></H3>
 +
 +<P>
 +  La <EM>licenza d'uso</EM> è un documento legale generalmente
 +  distribuito assieme a ogni programma. Essa, appoggiandosi alle norme
 +  sul diritto d'autore, specifica diritti e doveri di chi riceve tale
 +  programma.
 +</P>
 +<P>
 +  Gran parte delle licenze comunemente usate sono <EM>proprietarie</EM>,
 +  cioè non libere, in quanto non garantiscono le quattro libertà. Quasi
 +  sempre tali licenze non consentono infatti la libera copia del
 +  programma, né la sua modifica.  Spesso, se il programma è installato
 +  sul computer di casa, la licenza impedisce persino di installarlo sul
 +  proprio portatile (per utilizzare il programma fuori casa); se il
 +  programma è utilizzato in uno studio professionale, non consente di
 +  tenerlo installato su un computer di riserva, nel caso che quello
 +  principale si guasti.
 +</P>
 +<P>
 +  La licenza del progetto GNU, la <EM>Licenza Pubblica Generica GNU (<A
 +  TITLE="traduzione della licenza GNU GPL"
 +  HREF="http://softwarelibero.it/gnudoc/gpl.it.txt">GNU GPL</A>)</EM>,
 +  al contrario, concede all'utente del programma tutte e quattro le
 +  libertà suddette.  Inoltre si occupa anche di proteggerle: chi
 +  modifichi un programma protetto da GPL e lo distribuisca con tali
 +  modifiche, deve distribuirlo sotto licenza GPL.  È grazie a questo
 +  tipo di protezione che la GPL è attualmente la licenza più usata per
 +  il software libero.
 +</P>
 +<P>
 +  Con un gioco di parole, il nome dato a questo tipo di protezione
 +  è <EM>permesso d'autore</EM> (in inglese <A TITLE="definizione di
 +  copyleft (inglese)" LANG="en"
 +  HREF="http://www.it.gnu.org/copyleft/copyleft.html"><EM>copyleft</EM></A>):
 +  è il criterio che prevede che le modifiche ad un programma possano
 +  essere distribuite solo con la stessa licenza del programma originale.
 +  Le licenze proprietarie usano le norme sul diritto d'autore (copyright
 +  in inglese) per togliere libertà agli utenti di un programma; il
 +  permesso d'autore usa le stesse norme per garantire quelle libertà e
 +  per proteggerle.
 +</P>
 +<P>
 +  La GNU GPL non è unica nel suo genere.  Diverse <A TITLE="lista di
 +  licenze libere e non"
 +  HREF="http://www.it.gnu.org/licenses/license-list.it.html">altre
 +  licenze</A> garantiscono le quattro libertà e si possono pertanto
 +  qualificare come licenze per il software libero.  Fra queste, merita
 +  una speciale menzione per la sua diffusione la <A TITLE="la licenza
 +  BSD (in inglese)" LANG="en"
 +  HREF="http://www.freebsd.org/copyright/license.html">licenza BSD</A>,
 +  la cui principale differenza dalla GPL è che, non essendo basata sul
 +  permesso d'autore, non ha fra i propri obiettivi quello di proteggere
 +  la libertà del software cui è applicata.  Chi infatti modifichi un
 +  programma protetto da BSD, può distribuirlo con le modifiche usando
 +  qualunque licenza.
 +</P>
 +<P>
 +  Sia BSD che GPL hanno pro e contro.  La licenza GPL riflette l'idea
 +  della cooperazione: se io concedo ad altri la libertà di modificare e
 +  redistribuire il mio programma, costoro sono tenuti a concedere le
 +  stesse libertà sulle loro modifiche.  Il problema è che alcuni vedono
 +  questo vincolo come un'imposizione ingenerosa, se non addirittura una
 +  restrizione insopportabile.  La licenza BSD riflette l'idea del dono
 +  liberale: chiunque può fare ciò che meglio crede del mio programma.
 +  Il problema è che questo significa che chiunque può redistribuire
 +  anche in forma chiusa con una licenza proprietaria un programma BSD
 +  modificato, impedendo così ai propri acquirenti di modificarlo e
 +  redistribuirlo a loro volta.
 +</P>
 +
 +<H3><A NAME="miti">
 +  Sfatiamo alcuni miti
 +</A></H3>
 +
 +<P>
 +<DL>
 +
 +  <DT>Il software libero è gratuito
 +
 +    <DD>È falso: la libertà del software non ha nulla a che vedere con
 +    il suo prezzo.  Benché gran parte del software libero più diffuso
 +    sia distribuito gratuitamente, ci sono programmatori che vivono
 +    della vendita e della manutenzione dei programmi liberi da loro
 +    creati.
 +
 +  <DT>Il software gratuito è libero
 +
 +    <DD>È falso.  Molti programmi proprietari vengono distribuiti
 +    gratuitamente.
 +
 +  <DT>Il software libero è privo di copyright
 +
 +    <DD>È falso.  Benché si possa rinunciare al copyright su un proprio
 +    programma e renderlo così di pubblico dominio, la gran parte del
 +    software libero è distribuito con una licenza.  Per esempio, sono
 +    licenze di copyright la licenza BSD e la GNU GPL, anche se per
 +    qualificare quest'ultima spesso si parla di permesso d'autore
 +    (copyleft).
 +
 +  <DT>L'introduzione del software libero nella scuola e nella pubblica
 +  amministrazione, ma anche nei paesi poveri, ridurrebbe i costi
 +  relativi al software
 +
 +    <DD>Potrebbe essere vero, ma una seria valutazione dei costi è molto
 +    difficile.  Qualunque tipo di software, se usato in ambito non
 +    domestico, ha dei costi di manutenzione che sono solitamente
 +    maggiori del suo prezzo di acquisto.  I motivi per sostenere l'uso
 +    del software libero, specie in ambiti pubblici, riguardano anzitutto
 +    la libertà, non il prezzo.
 +
 +<!-- Discorso inadatto ad un documento introduttivo
 +  <DT>Chi scrive un programma libero lo deve pubblicare su Internet
 +
 +    <DD>È una falsa argomentazione spesso usata per scoraggiare
 +    un'azienda dall'uso di una licenza libera per i suoi programmi.
 +    Sia gli autori che gli acquirenti di un programma libero hanno il
 +    diritto di distribuirlo a titolo oneroso o gratuito, ma non hanno
 +    alcun obbligo in tal senso.
 +-->
 +
 +</DL>
 +</P>
 +
 +<H3><A NAME="oss">
 +  Il movimento open source
 +</A></H3>
 +
 +<P>
 +  Nel 1998 Bruce Perens, Eric Raymond e altre personalità nel campo del
 +  software libero si convinsero che i principi di libertà associati ad
 +  esso fossero malvisti nel mondo degli affari, a causa della loro
 +  carica ideologica.  Decisero perciò di evitare accuratamente ogni
 +  riferimento a considerazioni politiche o di principio, e di lanciare
 +  una campagna di promozione del software libero che ne mettesse in luce
 +  i numerosi <A TITLE="un discorso di Robert Chassell di FSF"
 +  HREF="http://softwarelibero.it/altri/economia-sl.shtml">vantaggi
 +  pratici</A>, come la facilità di adattamento, l'affidabilità, la
 +  sicurezza, la conformità agli standard, l'indipendenza dai singoli
 +  fornitori.  A tal fine scrissero la <Q><A TITLE="la definizione di
 +  Open Source (in inglese)" LANG="en"
 +  HREF="http://www.opensource.org/docs/definition.html">Open Source
 +  Definition</A></Q>, il documento fondamentale del movimento <A
 +  TITLE="il sito di Open Source Initiative (OSI), in inglese" LANG="en"
 +  HREF="http://opensource.org/"><EM>open source</EM></A>.
 +</P>
 +<P>
 +  Il movimento open source fu un successo, e contribuì a sdoganare il
 +  concetto di software libero in campo aziendale, dove era guardato con
 +  sospetto o condiscendenza.  Un esempio di questo successo è
 +  l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i
 +  maggiori investimenti nel campo del software libero, la quale parla
 +  esclusivamente di open source, mai di software libero.
 +</P>
 +<P>
 +  La voluta neutralità del movimento open source verso gli aspetti
 +  etici e politici del software libero è la caratteristica sostanziale
 +  che lo distingue dalla filosofia del software libero, che al contrario
 +  pone l'accento sulle motivazioni ideali.  Parlare di software libero
 +  piuttosto che di open source è una questione politica piuttosto che
 +  pratica; i due movimenti concordano infatti sulle licenze considerate
 +  accettabili, ed hanno obiettivi e mezzi comuni.
 +</P>
 +
 +<H3><A NAME="impatto">
 +  Impatto pratico del software libero
 +</A></H3>
 +
 +<P>
 +  La <A TITLE="usi commerciali del software libero, di Alessandro
 +  Rubini"
 +  HREF="http://www.it.gnu.org/philosophy/software-libre-commercial-viability.it.html">rilevanza
 +  economica</A> del software libero è ancora molto ridotta, ma è in
 +  fortissima crescita ormai da alcuni anni, e tutto consente di supporre
 +  che tale crescita <A TITLE="prospettive del software libero, gruppo di
 +  studio dell'UE"
 +  HREF="http://eu.conecta.it/paper/Economics_open_source.html">continui
 +  nel prossimo futuro</A>, anche grazie ai <A TITLE="vantaggi del
 +  software libero, gruppo di studio UE"
 +  HREF="http://eu.conecta.it/paper/Advantages_open_source_soft.html">vantaggi
 +  tecnici ed economici</A> del software libero.
 +</P>
 +<P>
 +  Ad oggi, il software libero è ampiamente diffuso in ambito accademico,
 +  industriale e fra gli appassionati di calcolatori, soprattutto grazie
 +  ai sistemi GNU/Linux.  Questi sistemi liberi sono disponibili a costi
 +  molto bassi, ben inferiori a quelli di analoghi sistemi proprietari.
 +  Tuttavia, a causa delle loro caratteristiche, il loro uso richiede una
 +  buona cultura di base nel campo del software.
 +</P>
 +<P>
 +  In ambito accademico viene molto apprezzata la possibilità di
 +  personalizzare ogni parte del sistema, visto che i programmi liberi
 +  sono liberamente modificabili (libertà numero uno).  In ambito
 +  industriale, si apprezza l'affidabilità dei sistemi liberi, dovuta al
 +  fatto che quando un utente corregge un errore in un programma
 +  solitamente rende disponibile la correzione agli altri utenti (libertà
 +  numero tre).  Gli appassionati di calcolatori apprezzano lo spirito di
 +  condivisione esistente fra gli utenti di software libero.
 +</P>
 +<P>
 +  Ma le implicazioni dell'uso del software libero non sono soltanto
 +  tecniche ed economiche, perché il software da tempo ormai è avviato ad
 +  occupare un ruolo di primo piano nella nostra vita quotidiana, ed è
 +  destinato a cambiare in maniera profonda la società.
 +</P>
 +<P>
 +  È per queste ragioni che la nostra libertà futura dipenderà anche
 +  dalla capacità di ognuno di noi di controllare il software.  È per
 +  queste ragioni che ai tradizionali principi di libertà sessuale, di
 +  culto, di movimento, di espressione deve essere affiancata la libertà
 +  del software.  È per queste ragioni che la nostra libertà futura
 +  dipenderà anche dall'uso di software libero.
 +</P>
 +
 +<P>
 +  <EM>scritto da <A TITLE="pot@softwarelibero.it"
 +  HREF="mailto:pot@softwarelibero.it">Francesco Potortì</A> per l'<A
 +  TITLE="il sito dell'Associazione Software Libero"
 +  HREF="http://softwarelibero.it/">Associazione Software
 +  Libero</A></EM>
 +</P>
 +<HR NOSHADE>
 +<P>
 +  Copyright &copy; 2002 Francesco Potortì
 +  <BR>
 +  Ultima versione ipertestuale disponibile su <A TITLE="versione
 +  stampabile"
 +  HREF="http://softwarelibero.it/documentazione/softwarelibero.html">&lt;http://softwarelibero.it/documentazione/softwarelibero.html></A>
 +</P>
 +<P>
 +  La copia letterale e integrale e la distribuzione sono permesse con
 +  qualsiasi mezzo, a condizione che questa nota sia riprodotta.
 +</P>
 +
 +<!--
 +Local variables:
 +fill-column: 72
 +time-stamp-active: t
++time-stamp-time-zone: "UTC0"
 +time-stamp-format: "%:y-%02m-%02d"
 +time-stamp-line-limit: 30
 +time-stamp-start: "ultima\\s-+modifica\\s-+è\\s-+del\\s-+"
 +time-stamp-end: "\\."
 +End:
 +-->
 +
 +</DIV>
index 7a29929efcac552a6a116f591c310c5885ee5f1e,0000000000000000000000000000000000000000..02a4a98a8c57d6fbe72c2e9d943a229bae58dbdb
mode 100644,000000..100644
--- /dev/null
@@@ -1,57 -1,0 +1,67 @@@
 +// Comment!
 +
 +nav {
 +    ul {
 +        margin: 0;              /* More comment */
 +        padding: 0;
 +        list-style: none;
 +    }
 +
 +    li { display: inline-block; }
 +
 +    a {
 +        display: block;
 +        padding: 6px 12px;
 +        text-decoration: none;
 +    }
 +}
 +nav ul {
 +  margin: 0;
 +  padding: 0;
 +  list-style: none;
 +}
 +
 +nav li {
 +  display: inline-block;
 +}
 +
 +nav a var
 +{
 +  display: block;
 +  padding: 6px 12px;
 +  text-decoration: none;
 +}
 +
 +$name: foo;
 +$attr: border;
 +p.#{$name} var
 +{
 +    x#{$attr}-color: blue;
 +}
 +article[role="main"] {
 +    $toto: 500 !global;
 +    float: left;
 +    width: 600px / 888px * 100%;
 +    height: 100px / 888px * 100%;
 +}
 +
 +@import 'reset';
 +
 +@mixin border-radius($radius) {
 +    -webkit-border-radius: $radius;
 +    -moz-border-radius: $radius;
 +    -ms-border-radius: $radius;
 +    border-radius: $radius;
 +}
 +
 +.box { @include border-radius(10px); }
++
++// bug:21230
++$list: (
++   ('a', #000000, #fff)
++   ('b', #000000, #fff)
++   ('c', #000000, #fff)
++   ('d', #000000, #fff)
++   ('e', #000000, #fff)
++   ('f', #000000, #fff)
++);