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 Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando 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 Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando 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 Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando 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 Facebookelliando 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 Studyelliando 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 Introductionelliando 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 Clojureelliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypseelliando dias
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lispelliando dias
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmerselliando 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

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

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