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

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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 StreamsRoshan Dwivedi
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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 productivityPrincipled Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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 AutomationSafe Software
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

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