SlideShare a Scribd company logo
1 of 33
Download to read offline
Engineering for Free
  Network Services
Evan Prodromou, Control Yourself, Inc.
     Libre Planet, 20 March 2009
Who the...?
●   Evan Prodromou
●   Free Software since 1995
●   Wikitravel
●   Identi.ca
●   autonomo.us
What do we want?
●   To use Network Services in a way that
    preserves our freedom in the same way
    that
Free Network Services
●   Franklin Street Statement
    –   Free Software + Free Data = Free Service
●   Open Software Service Definition
    –   Free Software
    –   Free Culture/Data
    –   Open Standards
The Sandwich
     Server
     •Operating System
     •Web Server
     •Database Server
     •Programming Language


Services Harnessing Internet Technology


     Client
     •Operating System
     •GUI Framework
     •Browser
     •Plugins
What we can do
●   Make tasty Free Software replacements
    for services harnessing Internet
    technology
●   Use them ourselves
●   Encourage their use
Our advantages
●   The Right Thing
●   Longevity
●   Paranoia
●   Selfishness
●   Greed
●   Pride
Structure
●   Principles for building Free Network
    Services
●   Using example of Identi.ca/Laconica
1. Be pragmatic.
●   We're doing this now.
●   Use existing technologies.
●   Use the structure of the Internet as it
    exists.
2. Use a Hub-and-Spoke
          Architecture.
●   AKA “client-server”.
●   Most desktop/laptop/netbook computers
    don't have a universal permanent
    address.
●   Most “servers” do.
●   You can put a client and a server on the
    same machine if you want to.
●   Example: SMTP server
3. Use the Web.
●   It works.
●   It scales.
●   It's rich.
●   It's ubiquitous.
●   Very smart people are working on it.
●   Installations drop by ~3 orders of
    magnitude.
4. Use the FNS-savvy
             License.
●   Affero General Public License v3
    (AGPLv3)
●   Make software license easily visible.
5. Build in licensing.
●   Use a Free Culture license by default
●   Let users pick their own licenses
    (emphasizing Free Culture ones)
6. Use DNS and URLs for
            Identity.
●   Example: email addresses
●   Example: XMPP
●   Example: Blogs
●   Example: OpenID URLs
7. Build in federation early
●   Prodromou's principles:
    –   If your software has a social aspect, it
        should support distributed sociality
    –   All software has a social aspect
●   OpenID for authentication
●   OAuth for authorization
8. Support open standards.
●   Makes it easy to build compatible
    software.
●   FOAF for social graph
●   Atom/RSS
●   RDF where possible.
9. Be semantic.
●   Support microformats, RDFa, as many
    feed formats as possible.
●   Meet 3rd-party processors halfway or
    more.
●   Smart data neutralizes the advantage of
    proprietary/patented/really smart
    software.
10. Be SEM Savvy.
●   Gets more people to see your software
●   Gets more people to use your software
●   Use sitemaps (sitemaps.org)
●   Use ping servers
●   Make everything addressable
●   Use good descriptions, H1s, status
    codes
●   Bonus: easier for 3rd-party tools to use
11. Build 0.x protocols.
●   Do something dead simple and
    obviously stupid to get it started.
●   Example: HTTP/0.9
    –   GET URL => <data>
●   Example: OpenMicroBlogging 0.1
12. Support a range of
             usage.
●   Download for individual usage
●   Hosted service for communities
●   Major service for individuals
13. Build to scale.



10^0 10^1       10^2 10^3     10^4   10^5 10^6 10^7 10^8



Small              Medium             Large
installations      installations      installations
on                 on virtual or      on many
commodity          leased             owned
Web hosting        servers            servers
14. Data dumps.
●   Make a dump available of all public data.
●   Make a dump available of each user's
    private data to that user.
15. Data feeds.
●   Make feeds available by default.
●   Push feeds to aggregators.
    –   Search
    –   Directory
    –   Archive
16. Support other Free
        Network Services.
●   We advance faster if we work together.
●   OpenStreetMaps
●   Geonames
●   Search Wikia
17. Engage with proprietary
        services.
●   Find users where they are.
●   This is the environment we have now.
●   As we fill out the Free Network Services
    ecology, this becomes less necessary.
18. Make it easy to share the
           source.
●   Have a source link on the site by default.
●   Have links to plugins on a “versions”
    page (like MediaWiki).
19. Provide a remote API.
●   Stimulates third-party development
●   Allows “mashups”
●   Allows desktop/laptop/mobile clients
20. Provide a plugin system.
●   Stimulates contribution.
●   Makes it easy to integrate.
●   Gives people a reason to install your
    software.
21. Support themes/skins.
●   People like sexy-looking Web sites.
●   Site owners like putting their mark on the
    site.
●   “Lite” theming through CSS.
●   “Heavy” theming through e.g. template
    engines.
22. Be international.
●   “Everybody there speaks English.”
●   Let non-English speakers drive the
    competition.
●   Our translation resources are a huge
    advantage.
●   Use wikis for documentation.
23. Make it easy.
●   Your competition is very easy.
●   Installation should be really simple.
●   Setting up an account on an existing
    server should be cheap or free.
●   Setting up an instance on a hosted
    service should be reasonably priced and
    quick.
24. Use PHP/MySQL
●   C and POSIX for Unix-like systems
●   Build a healthy Free Software
    community
●   Install on commodity hosting
●   (Should this change? Make it change!)
Further
●   http://autonomo.us/
●   http://identi.ca/evan
●   evan@controlyourself.ca

More Related Content

More from elliando dias

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
elliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
elliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
elliando dias
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
elliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
elliando dias
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
elliando dias
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
elliando dias
 

More from elliando dias (20)

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Engineering for Free Network Services

  • 1. Engineering for Free Network Services Evan Prodromou, Control Yourself, Inc. Libre Planet, 20 March 2009
  • 2. Who the...? ● Evan Prodromou ● Free Software since 1995 ● Wikitravel ● Identi.ca ● autonomo.us
  • 3. What do we want? ● To use Network Services in a way that preserves our freedom in the same way that
  • 4. Free Network Services ● Franklin Street Statement – Free Software + Free Data = Free Service ● Open Software Service Definition – Free Software – Free Culture/Data – Open Standards
  • 5. The Sandwich Server •Operating System •Web Server •Database Server •Programming Language Services Harnessing Internet Technology Client •Operating System •GUI Framework •Browser •Plugins
  • 6. What we can do ● Make tasty Free Software replacements for services harnessing Internet technology ● Use them ourselves ● Encourage their use
  • 7. Our advantages ● The Right Thing ● Longevity ● Paranoia ● Selfishness ● Greed ● Pride
  • 8. Structure ● Principles for building Free Network Services ● Using example of Identi.ca/Laconica
  • 9. 1. Be pragmatic. ● We're doing this now. ● Use existing technologies. ● Use the structure of the Internet as it exists.
  • 10. 2. Use a Hub-and-Spoke Architecture. ● AKA “client-server”. ● Most desktop/laptop/netbook computers don't have a universal permanent address. ● Most “servers” do. ● You can put a client and a server on the same machine if you want to. ● Example: SMTP server
  • 11. 3. Use the Web. ● It works. ● It scales. ● It's rich. ● It's ubiquitous. ● Very smart people are working on it. ● Installations drop by ~3 orders of magnitude.
  • 12. 4. Use the FNS-savvy License. ● Affero General Public License v3 (AGPLv3) ● Make software license easily visible.
  • 13. 5. Build in licensing. ● Use a Free Culture license by default ● Let users pick their own licenses (emphasizing Free Culture ones)
  • 14. 6. Use DNS and URLs for Identity. ● Example: email addresses ● Example: XMPP ● Example: Blogs ● Example: OpenID URLs
  • 15. 7. Build in federation early ● Prodromou's principles: – If your software has a social aspect, it should support distributed sociality – All software has a social aspect ● OpenID for authentication ● OAuth for authorization
  • 16. 8. Support open standards. ● Makes it easy to build compatible software. ● FOAF for social graph ● Atom/RSS ● RDF where possible.
  • 17. 9. Be semantic. ● Support microformats, RDFa, as many feed formats as possible. ● Meet 3rd-party processors halfway or more. ● Smart data neutralizes the advantage of proprietary/patented/really smart software.
  • 18. 10. Be SEM Savvy. ● Gets more people to see your software ● Gets more people to use your software ● Use sitemaps (sitemaps.org) ● Use ping servers ● Make everything addressable ● Use good descriptions, H1s, status codes ● Bonus: easier for 3rd-party tools to use
  • 19. 11. Build 0.x protocols. ● Do something dead simple and obviously stupid to get it started. ● Example: HTTP/0.9 – GET URL => <data> ● Example: OpenMicroBlogging 0.1
  • 20. 12. Support a range of usage. ● Download for individual usage ● Hosted service for communities ● Major service for individuals
  • 21. 13. Build to scale. 10^0 10^1 10^2 10^3 10^4 10^5 10^6 10^7 10^8 Small Medium Large installations installations installations on on virtual or on many commodity leased owned Web hosting servers servers
  • 22. 14. Data dumps. ● Make a dump available of all public data. ● Make a dump available of each user's private data to that user.
  • 23. 15. Data feeds. ● Make feeds available by default. ● Push feeds to aggregators. – Search – Directory – Archive
  • 24. 16. Support other Free Network Services. ● We advance faster if we work together. ● OpenStreetMaps ● Geonames ● Search Wikia
  • 25. 17. Engage with proprietary services. ● Find users where they are. ● This is the environment we have now. ● As we fill out the Free Network Services ecology, this becomes less necessary.
  • 26. 18. Make it easy to share the source. ● Have a source link on the site by default. ● Have links to plugins on a “versions” page (like MediaWiki).
  • 27. 19. Provide a remote API. ● Stimulates third-party development ● Allows “mashups” ● Allows desktop/laptop/mobile clients
  • 28. 20. Provide a plugin system. ● Stimulates contribution. ● Makes it easy to integrate. ● Gives people a reason to install your software.
  • 29. 21. Support themes/skins. ● People like sexy-looking Web sites. ● Site owners like putting their mark on the site. ● “Lite” theming through CSS. ● “Heavy” theming through e.g. template engines.
  • 30. 22. Be international. ● “Everybody there speaks English.” ● Let non-English speakers drive the competition. ● Our translation resources are a huge advantage. ● Use wikis for documentation.
  • 31. 23. Make it easy. ● Your competition is very easy. ● Installation should be really simple. ● Setting up an account on an existing server should be cheap or free. ● Setting up an instance on a hosted service should be reasonably priced and quick.
  • 32. 24. Use PHP/MySQL ● C and POSIX for Unix-like systems ● Build a healthy Free Software community ● Install on commodity hosting ● (Should this change? Make it change!)
  • 33. Further ● http://autonomo.us/ ● http://identi.ca/evan ● evan@controlyourself.ca