#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
# Copyright© 2003 Francesco Potortì
# The Python classes are distributed under the GNU LGPL
# The text of the slides can be copied verbatim in any form
#
# Use the Slides package from <http://itamarst.org/software/slides/>
# also available as the python-slides Debian package (not in woody)
#
# Execute this file to obtain a series of HTML files in the current directory
from slides import Lecture, NumSlide, Slide, Bullet, SubBullet, PRE, URL, \
		   Center, Image, Heading, TitleSlide, toHTML


class Tag:
  """Surround with <tag>..</tag>."""
  def __init__(self, tag, *texts): self.tag = tag; self.texts = texts
  def toHTML(self):
    return '<%s>%s</%s>' % (self.tag, "".join(map(toHTML, self.texts)), self.tag)

class Text:
  """Sequence of strings and instances."""
  def __init__(self, *texts): self.texts = texts
  def toHTML(self):
    return "".join(map(toHTML, self.texts)) + '\n'

class Html:
  """Sequence of strings."""
  def __init__(self, *texts): self.texts = texts
  def toHTML(self):
    return "".join(self.texts)

class Newline:
  """Newlines (specify number)."""
  def __init__(self, number): self.number = number
  def toHTML(self):
    result = '\n'
    for i in range(0, self.number): result += '<br>&nbsp;<br>'
    return result+'\n'

lecture = Lecture("Free software licenses<br> " +
                  "<small>Francesco Potort&igrave;, 2004</small>",

#-------------------------------------------------------------------------
TitleSlide
("Free software licenses",
 Tag("big", "an overview of free and non free licenses"),           
 Tag("big", "for software and documentation"),
 Newline(2),
 Html("Francesco Potort&igrave;"),
 "researcher at ISTI - CNR, Pisa (IT)",
 Newline(2),
 Text("this presentation is at ",
      URL("http://fly.isti.cnr.it/sl/licenze-pres/licenses-00.html")),
 Text("source code in ", URL("licenses.py")),
),

#-------------------------------------------------------------------------
Slide
("The four dimensions of free software",
 Bullet("Free software is a license model", SubBullet(
  Bullet("the four software freedoms by Richard Stallman, 1985"),
  Bullet("the open source definition, 1998"))),
 Bullet("Free software development models", SubBullet(
  Bullet("the cathedral and the bazaar"))),
 Bullet("Free software social ideals", SubBullet(
  Bullet("free software is about freedom and society, "
         "quality and convenience may come as a consequence"),
  Bullet("open source is about quality and convenience, "
         "freedom may come as a consequence"))),
 Bullet("Free software communities", SubBullet(
  Bullet("hackers, groups and mailing lists"))),
),

#-------------------------------------------------------------------------
Slide
("What is free software?",
 Bullet("Free software is software that grants freedom to its users"),
 Bullet("Freedom is granted by use of an appropriate copyright license"),
 Bullet("Free licenses grant the users the right to run, study, copy, ",
        "modify and redistribute modified copies of the software"),
 Bullet("Without a copyright license, none of the above is permitted by "
        "international copyright laws (Berne copyright convention); ",
        "see also ", URL("http://www.templetons.com/brad/copymyths.html")),
),

#-----------------------------------------------------------------------
Slide
("The four freedoms",
 Text("The four software freedoms by Richard Stallman, 1985 (",
     URL("http://www.gnu.org/philosophy/free-sw.html"), "):"),
 Tag("p", "0: The freedom to run the program, for any purpose"),
 Tag("p", "1: The freedom to study and modify the program"),
 Tag("p", "2: The freedom to redistribute copies"),
 Tag("p", "3: The freedom to release your improvements"),
 Bullet("Freedoms 1 and 3 require access to the source code"),
),

#-------------------------------------------------------------------------
Slide
("Proprietary and semi-free software",
 Bullet("Usually comes without source code"),
 Bullet("Sometimes can be freely copied: shareware"),
 Bullet("Sometimes can be freely used: freeware"),
 Bullet("Sometimes source is available under an NDA (non disclosure agreement)"),
 Bullet("Most often its usage is strictly defined"),
 Bullet("Code that comes without a license is proprietary!"),
 Bullet("Semi-free is loosely defined as free for some users"),
),

#-------------------------------------------------------------------------
Slide
("Copyleft",
 Bullet("Copyleft licenses force redistribution in the same ",
        "or similar terms", SubBullet(
  Bullet("software remains free even if modified or incorporated"),
  Bullet("private or internal modification does not mandate distribution"),
  Bullet("any price, or none, can be demanded for distribution"),
  Bullet("derived works may become a thorny issue"))),
 Bullet("Non-copyleft licenses give the maximum freedom", SubBullet(
  Bullet("no problems ever with derived works or linking or reusage"),
  Bullet("software can be redistributed in different terms"),
  Bullet("maximum incentives to diffusion, useful for diffusing a standard"),
  Bullet("few requirements from the recipient"))),
),

#-------------------------------------------------------------------------
Slide
("How to make a program free",
 Bullet("Always accompany your software with a ", Tag("kbd", "LICENSE.TXT"),
        " file"),
 Bullet("On the top of each source file, write", SubBullet(
  Bullet("Copyright© 2002, 2003 Name Surname"),
  Bullet("This software is released with the terms contained in ",
         Tag("kbd", "LICENSE.TXT")))),
 Bullet("Use one of these three licenses", SubBullet(
  Bullet("GNU GPL: for programs that should remain free in any case, ",
         "whether  modified or not"),
  Bullet("GNU LGPL: same as above, plus it allows linking with "
         "GPL-incompatible programs"),
  Bullet("New BSD or MIT X licenses: no restrictions, ",
         "for programs that should have maximum diffusion"))),
),

#-------------------------------------------------------------------------
Slide
("The GNU GPL",
 Bullet("The GNU General Public License is the most used free software license"),
 Bullet("Born with the GNU project, 1985"),
 Bullet("A copyleft license"),
 Bullet("Protects authorship and reputation of original authors"),
 Bullet("Covers any derived work", SubBullet(
  Bullet("derived work is anything incorporating or linking GPL code"),
  Bullet("usage and calling is not covered"),
  Bullet("aggregation on the same media is not covered"),
  Bullet("dynamic loading, component usage may be covered"),
  Bullet("read the GPL FAQ at ", URL("http://www.gnu.org/licenses/gpl-faq.html")))),
),

#-------------------------------------------------------------------------
Slide
("The GNU LGPL",
 Bullet("The GNU Lesser General Public License is useful for libraries and components"),
 Bullet("Originally called the GNU Library General Public License"),
 Bullet("A copyleft license"),
 Bullet("Allows linking with other, GPL-incompatible works"),
 Bullet("Is GPL-compatible"),
 Bullet("If a proprietary program uses an LGPL library, it must give provisions "
        "for upgrading the LGPL code", SubBullet(
  Bullet("usually not a problem if the LGPL code is a shared library, a DLL "
         "or a component"))),
),

#-------------------------------------------------------------------------
Slide
("The new BSD and the X MIT license",
 Bullet("The Berkeley Software Distribution license was first used in 1989"),
 Bullet("A non-copyleft license"),
 Bullet("The original had an obnoxious advertising clause", SubBullet(
  Bullet("all advertising material had to include a line of text, "
         "a problem as different authors used many different lines of text"),
  Bullet("it made the original BSD incompatible with the GPL"),
  Bullet("the new BSD license has not had this problem since 2000"))),
 Bullet("Is GPL-compatible"),
 Bullet("Gives maximum freedom to recipients, even of releasing the "
        "software under any other license"),
),

#-------------------------------------------------------------------------
Slide
("Contributing to already existing free software",
 Bullet("Normally try to use the same existing license"),
 Bullet("Changing the license is legally dangerous "
        "because of possible errors or incompatibilities"),
 Bullet("It is also socially dangerous because old contributors "
        "and authors may not agree with your choice"),
),

#-------------------------------------------------------------------------
Slide
("Free software documentation licenses",
 Bullet("Use the same license as the software, or else a documentation license"),
 Bullet("The GNU Free Documentation License (GFDL)", SubBullet(
  Bullet("copyleft"),
  Bullet("good for books, much criticised for software manuals"))),
 Bullet("The Creative Commons Attribution-ShareAlike license", SubBullet(
  Bullet("copyleft"),
  Bullet("requires giving credit"))),
 Bullet("The Creative Commons Attribution license", SubBullet(
  Bullet("non-copyleft"),
  Bullet("requires giving credit"))),
),

)
lecture.renderHTML(".", "licenses-%02d.html", css="licenze.css")

#Local variables:
#compile-command: buffer-file-name
#py-indent-offset: 2
#end:
