Engineering for Free Network Services <ul><ul><li>Evan Prodromou, Control Yourself, Inc. </li></ul></ul><ul><ul><li>Libre ...
Who the...? <ul><li>Evan Prodromou </li></ul><ul><li>Free Software since 1995 </li></ul><ul><li>Wikitravel </li></ul><ul><...
What do we want? <ul><li>To use Network Services in a way that preserves our freedom in the same way that  </li></ul>
Free Network Services <ul><li>Franklin Street Statement </li></ul><ul><ul><li>Free Software + Free Data = Free Service </l...
The Sandwich <ul><li>Client </li></ul><ul><li>Operating System </li></ul><ul><li>GUI Framework </li></ul><ul><li>Browser <...
What we can do <ul><li>Make tasty Free Software replacements for services harnessing  Internet  technology </li></ul><ul><...
Our advantages <ul><li>The Right Thing </li></ul><ul><li>Longevity </li></ul><ul><li>Paranoia </li></ul><ul><li>Selfishnes...
Structure <ul><li>Principles for building Free Network Services </li></ul><ul><li>Using example of Identi.ca/Laconica </li...
1. Be pragmatic. <ul><li>We're doing this  now. </li></ul><ul><li>Use existing technologies. </li></ul><ul><li>Use the str...
2. Use a Hub-and-Spoke Architecture. <ul><li>AKA “client-server”. </li></ul><ul><li>Most desktop/laptop/netbook computers ...
3. Use the Web. <ul><li>It works. </li></ul><ul><li>It scales. </li></ul><ul><li>It's rich. </li></ul><ul><li>It's ubiquit...
4. Use the FNS-savvy License. <ul><li>Affero General Public License v3 (AGPLv3) </li></ul><ul><li>Make software license ea...
5. Build in licensing. <ul><li>Use a Free Culture license by default </li></ul><ul><li>Let users pick their own licenses (...
6. Use DNS and URLs for Identity. <ul><li>Example: email addresses </li></ul><ul><li>Example: XMPP </li></ul><ul><li>Examp...
7. Build in federation early <ul><li>Prodromou's principles: </li></ul><ul><ul><li>If your software has a social aspect, i...
8. Support open standards. <ul><li>Makes it easy to build compatible software. </li></ul><ul><li>FOAF for social graph </l...
9. Be semantic. <ul><li>Support microformats, RDFa, as many feed formats as possible. </li></ul><ul><li>Meet 3rd-party pro...
10. Be SEM Savvy. <ul><li>Gets more people to see your software </li></ul><ul><li>Gets more people to use your software </...
11. Build 0.x protocols. <ul><li>Do something dead simple and obviously stupid to get it started. </li></ul><ul><li>Exampl...
12. Support a range of usage. <ul><li>Download for individual usage </li></ul><ul><li>Hosted service for communities </li>...
13. Build to scale. Small installations on commodity Web hosting Medium installations on virtual or leased servers Large i...
14. Data dumps. <ul><li>Make a dump available of  all  public data. </li></ul><ul><li>Make a dump available of each user's...
15. Data feeds. <ul><li>Make feeds available by default. </li></ul><ul><li>Push feeds to aggregators. </li></ul><ul><ul><l...
16. Support other Free Network Services. <ul><li>We advance faster if we work together. </li></ul><ul><li>OpenStreetMaps <...
17. Engage with proprietary services. <ul><li>Find users where they are. </li></ul><ul><li>This is the environment we have...
18. Make it easy to share the source. <ul><li>Have a source link on the site by default. </li></ul><ul><li>Have links to p...
19. Provide a remote API. <ul><li>Stimulates third-party development </li></ul><ul><li>Allows “mashups” </li></ul><ul><li>...
20. Provide a plugin system. <ul><li>Stimulates contribution. </li></ul><ul><li>Makes it easy to integrate. </li></ul><ul>...
21. Support themes/skins. <ul><li>People like sexy-looking Web sites. </li></ul><ul><li>Site owners like putting their mar...
22. Be international. <ul><li>“Everybody there speaks English.” </li></ul><ul><li>Let non-English speakers drive the compe...
23. Make it easy. <ul><li>Your competition is  very easy . </li></ul><ul><li>Installation should be really simple. </li></...
24. Use PHP/MySQL <ul><li>C and POSIX for Unix-like systems </li></ul><ul><li>Build a healthy Free Software community </li...
Further <ul><li>http://autonomo.us/ </li></ul><ul><li>http://identi.ca/evan </li></ul><ul><li>[email_address] </li></ul>
Upcoming SlideShare
Loading in …5
×

Libre Planet 2009 Presentation

672
-1

Published on

My presentation at LibrePlanet 2009 about engineering free network services.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
672
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Libre Planet 2009 Presentation

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×