Engineering for Free Network Services
-
Upload
elliando-dias -
Category
Technology
-
view
696 -
download
2
description
Transcript of Engineering for Free Network Services
![Page 1: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/1.jpg)
Engineering for Free Network Services
Evan Prodromou, Control Yourself, Inc.Libre Planet, 20 March 2009
![Page 2: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/2.jpg)
Who the...?
● Evan Prodromou● Free Software since 1995● Wikitravel● Identi.ca● autonomo.us
![Page 3: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/3.jpg)
What do we want?
● To use Network Services in a way that preserves our freedom in the same way that
![Page 4: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/4.jpg)
Free Network Services
● Franklin Street Statement– Free Software + Free Data = Free Service
● Open Software Service Definition– Free Software– Free Culture/Data– Open Standards
![Page 5: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/5.jpg)
The Sandwich
Services Harnessing Internet Technology
Client•Operating System•GUI Framework•Browser•Plugins
Server•Operating System•Web Server•Database Server•Programming Language
![Page 6: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/6.jpg)
What we can do
● Make tasty Free Software replacements for services harnessing Internet technology
● Use them ourselves● Encourage their use
![Page 7: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/7.jpg)
Our advantages
● The Right Thing● Longevity● Paranoia● Selfishness● Greed● Pride
![Page 8: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/8.jpg)
Structure
● Principles for building Free Network Services
● Using example of Identi.ca/Laconica
![Page 9: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/9.jpg)
1. Be pragmatic.
● We're doing this now.● Use existing technologies.● Use the structure of the Internet as it
exists.
![Page 10: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/10.jpg)
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
![Page 11: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/11.jpg)
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.
![Page 12: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/12.jpg)
4. Use the FNS-savvy License.
● Affero General Public License v3 (AGPLv3)
● Make software license easily visible.
![Page 13: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/13.jpg)
5. Build in licensing.
● Use a Free Culture license by default● Let users pick their own licenses
(emphasizing Free Culture ones)
![Page 14: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/14.jpg)
6. Use DNS and URLs for Identity.
● Example: email addresses● Example: XMPP● Example: Blogs● Example: OpenID URLs
![Page 15: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/15.jpg)
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
![Page 16: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/16.jpg)
8. Support open standards.
● Makes it easy to build compatible software.
● FOAF for social graph● Atom/RSS● RDF where possible.
![Page 17: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/17.jpg)
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.
![Page 18: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/18.jpg)
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
![Page 19: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/19.jpg)
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
![Page 20: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/20.jpg)
12. Support a range of usage.
● Download for individual usage● Hosted service for communities● Major service for individuals
![Page 21: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/21.jpg)
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^510^5 10^6 10^7 10^8
![Page 22: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/22.jpg)
14. Data dumps.
● Make a dump available of all public data.● Make a dump available of each user's
private data to that user.
![Page 23: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/23.jpg)
15. Data feeds.
● Make feeds available by default.● Push feeds to aggregators.
– Search– Directory– Archive
![Page 24: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/24.jpg)
16. Support other Free Network Services.
● We advance faster if we work together.● OpenStreetMaps● Geonames● Search Wikia
![Page 25: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/25.jpg)
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.
![Page 26: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/26.jpg)
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).
![Page 27: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/27.jpg)
19. Provide a remote API.
● Stimulates third-party development● Allows “mashups”● Allows desktop/laptop/mobile clients
![Page 28: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/28.jpg)
20. Provide a plugin system.
● Stimulates contribution.● Makes it easy to integrate.● Gives people a reason to install your
software.
![Page 29: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/29.jpg)
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.
![Page 30: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/30.jpg)
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.
![Page 31: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/31.jpg)
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.
![Page 32: Engineering for Free Network Services](https://reader034.fdocuments.us/reader034/viewer/2022042813/548443a25906b5ad158b475d/html5/thumbnails/32.jpg)
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!)