development

You are currently browsing the archive for the development category.

I just wrote a brief blog entry in my SFLC blog about the announcement that Launchpad’s planned license is AGPLv3.

Now that Canonical has made an indication that they want to respect the freedom of network users, it’s very important for the community of users to pay careful attention to Launchpad’s process, to help them make it a user-freedom respecting network service.

A few weeks ago, I wrote a post here about the state of Free Network Services for social news. I think we’re moving forward in that area. I’ve got a very initial implementation of the Pligg software, without license metadata, at Criti.ca set up, and I hope to get it ready for full release RSN. I think it might be worthwhile to apply the same attention to some of the other sectors of the Web 2.0 space to help set some goals for Free Network Services.

In this article, I’m going to attempt to cover social networking sites like MySpace, FaceBook, Friendster, Hi5, Bebo, Tribe.net, and Orkut as well as special-purpose networks like LinkedIn. It’s hard to provide a focused definition of this kind of site, but prinicipally users can create a profile page in the service, and then declare that other users are their “friends” and link from their profile page. Some allow “group” pages for affinity groups, sharing music, images, videos and other media, or even custom applications that tap into the social network data.

The format has been wildly successful and many other types of Web applications, like microblogs, social bookmarking, and photo-sharing, provide similar social-networking paradigm and functionality. There’s a fine line between this kind of site and a social aggregator like FriendFeed or SocialThing. Probably the main difference is that social aggregators pull together functionality from around the Web, while social networking sites tend to provide this kind of functionality within the site.

The news in this space is good and bad. Good, because there are a lot of Free and Open Source applications in the area, and also good because most of these work in a distributed model. Bad, though, because there are few or no existing well-known sites that provide social networking services to the public with Free Software (compare Reddit in the social news space). The worst news? Social networking sites like Facebook are some of the most egregious walled gardens on the Internet today — yet they remain incredibly popular.

A lot of software

These are some of the more promising Free Software packages that provide social networking services.
  • Elgg is pulling away as the leader in this area and is rapidly becoming the poster child for Free and Open Source social networking software. I’ve played around a bit with the version at community.elgg.org and it’s definitely a nice piece of software. The developers have put a lot of work into supporting distributed protocols like OpenID, OpenSocial and Open Data Definition, to their credit. The main downsides? First, there’s not a well-known flagship service for general public use — a head-on competitor to Facebook or MySpace. Second, although the data portability is impressive, it would still be nice to have cross-site sociality — so if your profile is on site A and I’m on site B, we can still be “friends” and interact. Finally, there doesn’t seem to be much emphasis in the code for Free and Open Content licenses; I don’t know if it’s possible to mark up pages for Creative Commons licenses, allow users to choose licenses for their data, and require license agreement at signup. I think these can come, though.
  • DiSo is a project we’ve discussed on this blog before (see my Interview with Steve Ivy of the Diso Project). DiSo is built on top of the ubiquitous WordPress blogging software, with special extensions to support semantically-rich links to other people’s blogs. The goal is to create a social network of independent sites — one site per person. I think this is a strong contender, and the emphasis on distribution is laudable; using WordPress gives the opportunity to leverage that platform’s wide array of data-licensing tools, media-sharing, and other cool features. But the software remains pretty new. The ease-of-use is nowhere near competitive with proprietary sites like Facebook. I think DiSo still has a long way to go.
  • AroundMe is another interesting, distributed product, using PHP and MySQL. It used to be aimed at a one-site-per-user model, but has recently moved to a group-collaboration model: one site per group. Each group has a collaboration site, group blog, and wiki; users join the group using OpenID (using, for example, the related Prairie software). I think this is an awesome way to push typical group dynamics into a distributed model, and it uses the increasingly popular OpenID network to achieve that. The downside? Very little of the sociality propagates back to people’s identity server. If I look at your OpenID page, for example, I can’t see the AroundMe groups you’re part of or the people you consider “friends”. I think this model, although promising, needs to push more sociality back into the identity page.
  • NoseRub is a package similar to AroundMe but with more of a global network model. It seems to be doing a better job at “profile aggregation” — tying together people’s profiles from elsewhere on the Web — rather than centralizing in itself. The downside of that, though, is that people are still using non-free services for photo-sharing, video-posting, etc. Probably the most exciting thing about NoseRub is its distributed sociality model — it does a very good job of synchronizing data between sites. There are also a few sites with medium-high profile, like identoo.com, that are providing the software as a service to the public.
  • HelloWorld (de) is a new project that autonomo.us reader Matthias Weiler recently notified us about. I haven’t got the German language skills to decrypt the site, so I’m not 100% sure there’s even software to check out, yet. I think this will be one to watch.
  • I’ve only just poked at it a bit, but the CC Network looks promising, and the software is available under the AGPLv3.
  • The Mugshot Project, part of/related to the Gnome Open Desktop initiative, is an attempt to make something like a social aggregator. I think it’s a step in the right direction, but the functionality hasn’t been built out very well, and the project seems to be moribund (no posts on the blog in 2008, for example). This may not be cause for alarm; Gnome projects are renowned for going dormant for years on end and eventually re-emerging with incredible strength.
  • Many general-purpose community/CMS software packages, such as TikiWiki, Drupal, or Joomla!, have social-networking tools or plugins. To be honest, their social networking tools leave a lot to be desired, and with the exception of Drupal’s well-intentioned but poor efforts in cross-site login, there’s little or no cross-site sociality. The penetration of these kinds of community software packages is incredible, and activating them as a distributed social network would be a huge step forward for this effort.

The protocols

The outlook on the protocol level isn’t particularly heartening. The philosopher’s stone for social networking on the Web will be a standard for distributed sociality: defining “friend” relationships between people and groups with identities on different servers. With the exception of NoseRub, there’s not been much advancement in the area. However, some of the pieces are coming together, and I’d like to mention them here.
  • The aforementioned Open Data Definition standard is intended to allow users to transfer their identities from one server to another. (This has been a goal for the Data Portability project, which seems to be getting more attention.) Currently, it’s only supported by Elgg; I’d like to get it built into Laconi.ca, too, if only for solidarity’s sake.
  • OpenSocial is a project led by Google. It’s an interesting development, but ultimately it’s about providing a platform for widgets that fit into existing (mostly proprietary) social networking services. It does not, for example, allow users of one OpenSocial container site to be social with friends on another container site. I think ultimately social networking software like Elgg will do well to implement this protocol to encourage development and deployment of widgets, but I think it’s insufficient for building a Web-wide social network.
  • Although it’s not normally considered a social networking protocol, OpenID holds a lot of promise in this area. The protocol allows people to associate their identity with a single URL and then use that identity to interact with other people, groups, and data objects on the rest of the Web. To a large part, that’s mostly what a distributed social network is about. What’s missing? Group and social data doesn’t back-propagate to the OpenID provider sites; my identity URL on for example certifi.ca doesn’t have a full-featured profile, links to groups I belong to, or links to the profile pages of my friends. There are some protocols for back-propagating data in the OpenID world, but no one has applied them to the social networking space. A great opportunity, though!
  • XMPP is also an interesting part of this space. It’s distributed, it’s got lots of Open Source implementations, it’s got a strong concept of universal identity and it’s got a refined model for social connections. I think there’s a lot to watch here, and the xmpp social mailing list is an important place to monitor.
There’s a big vacuum in this area in terms of projects and leadership; hopefully efforts like the W3C’s Workshop on the Future of Social Networking will bring more attention to the problem.

What is to be done?

Clearly, we’re reaching a cusp for Free Network Services for social networking. First and foremost, we need some flagship sites with high visibility and traffic. I think public services here are crucial to mass adoption; it’s simply infeasible for inexperienced Facebook or MySpace users to install and manage their own software instances.

A smart business person who wants to break into this crowded market could use the Free Network Service model as a strong differentiator and attract a sophisticated and influential crowd of early adopters to such a site. Using Elgg as an initial platform and applying serious development resources to it would probably give a big leg up. Alternately, non-profit groups may want to provide this kind of service, too.

More important, I think, is going to be the development of a featureful social-networking protocol that the developers of Elgg and other social networking software can implement. I think that such a protocol should definitely include OpenID as an enabling technology for user identity and as the base URL for profile pages; attribute exchange might be a good data platform to start with.

The great part about a good open protocol here is that it can be implemented in software that’s not specifically about social networking. Free and Open Source photo-sharing, video-sharing, microblogging, and social bookmarking software could implement the protocol and tie themselves into a Web-wide social net. Additionally, community CMSes like Drupal and blog software like WordPress could implement the protocol and expand the open network even farther.

There are a lot of challenges. A lot of the advocacy around opening up social networks has been around petitioning existing networks like MySpace or Facebook to open up to the wider world. This has been almost entirely unsuccessful; there’s a strong incentive for these companies — especially the more successful ones — to keep their customer base captive. Social networks are extremely sticky sites; abandoning one means leaving behind all the friends you have there. Finally, thought leaders on the Web have a strong incentive to maintain their presence on existing social networks; they already have influence there. Taking a principled stand is hard. (Let me note that I personally still have a Facebook account and probably will for some time.)

But I believe this is a fight worth fighting. (Some of my colleagues at autonomo.us will probably disagree; hackers are typically pretty sniffy about popular sites and software, and social networking is no exception.) Today’s social Web is one with too many walls, too much manipulation, and too much lock-in. We need to make the social Web look more like the document Web — open, distributed, and interconnected.

Ben Webb (aka bjwebb) has announced the launch of a project called AGPLMail.

bjwebb has been asking me questions on and off on IRC about starting this project, and I am very glad to see his announcement. He asks in his blog post am I doing something valuable?. My unequivocal answer is yes!

As developers, we have to clone each application that has become a standard in “the Cloud” and make sure there is a Free-as-in-Freedom (FaiF) equivalent. We need readers and signers of the Franklin Street Statement to get to work writing FaiF applications that embody its ideas. That’s the only way we will meet and overcome the challenge of truly distributed network services that respect user freedom and autonomy.

It’s tough to always be playing catch-up, but the Free Software world has shown that we “get there in the end”, and that the final result is something that really respects the freedom of the users. I’m glad bjwebb is taking a stab at the FaiF Web 2.0 mail client, and I hope others will help him make it better.

As a final note, I wanted to point out the admirable humility bjwebb has shown in putting his code out there. What he’s looking for is others to join him on the journey and try to make the application into something interesting. He doesn’t purport to have the answers, but he’s certainly asking the right questions in the best possible way for a developer — putting some code out there under a Free license and asking his peers to give him some feedback!

Our most important statement to date is the Franklin Street Statement on Freedom and Network Services. It calls upon developers, implementors and users of network services to do a series of things to help ensure software freedom for network services.

Now we run a blog, of course, so, in that capacity, we’re one of the implementors our statement speaks to. We use Wordpress with a downloaded theme and a couple extra plugins — all of which are free and available online. We export our blog’s content using RSS and Atom under the Creative Commons Attribution ShareAlike License — a licensed approved for Free Cultural Works.

In the Franklin Street Statement, we ask implementors to choose free software for their services. We’ve done that. We ask them to release customizations under a free software license. Like most people who run blogs, we’ve not made any changes, so no action seems to be required. We don’t host any private data other than passwords. Public data on our blog is accessible via RSS and licensed freely.

So are we doing enough to comply with the statement’s guidelines? It seems so. But have we provided an ideal example? Perhaps not. We’ve argued that a free service is one that can be copied, changed and reimplemented by its users. With a little extra work from us, that could certainly be easier with regards to our service.

To work toward being a better example, I’ve put together a new page on our blog that links to local copies of source code for all the software running our blog. In building this list, I made several observations.

While I think many people running blogs would be happy to provide such information, perhaps they won’t be as motivated to take the time I did to put it together. Perhaps we need a plugin to generate such sets of links automatically. Perhaps such a plugin can go further than just RSS by providing database dumps that are automatically and appropriately cleaned of sensitive information like passwords and unpublished posts.

The process of building and auditing the list raised several important issues related to the software we use. The theme we’d been using had unclear and potentially problematic licensing status so I switched to one clearly released under the GNU GPL. It’s not clear to me what to make of the Akismet plugin which, while presumably free itself, uses a separate service and database to do spam checking. The freedom status of this system is much less clear. Now, the whole point of Akismet is build a centralized database resistant to spammers. Should we uninstall Akismet? Possibly. I’m not sure yet, but I hadn’t even considered it before I went through this process.

As more people try to implement the Franklin Street Statement, these types of questions, problems, reports, and shared solutions will help make it easier for others to comply in the future. Other’s who’ve gone through this process and have useful advice, tips, or code to share should contribute that to the Autonomo.us wiki or help write an article on this blog.

Social News

Social news Web sites have become a staple of many people’s Web experience. Examples include Reddit, Digg, Mixx, Yahoo! Buzz and Propeller. In my opinion, a flagship free network service for social news could be an important part of an open software services ecology.

The Wikipedia article on social news redirects to social bookmarking, which I think is incorrect. Here’s my description: on a typical social news site, users submit URLs for Web sites, images, videos, or news articles. Other users comment on and rate the URLs — usually a binary thumbs-up/thumbs-down vote. Submitted URLs with the highest ranking are shown on the social news site’s front page, and users may also have “personalized” front pages that include only URLs recommended for them. Typically (not always) there’s a social network involved, such that a friend’s submissions or votes matter more than a stranger’s in recommending links for the user.

Digg, in particular, has become an important arbiter of popularity on the Web in 2008. Getting a new link “dugg” and ranked highly, or even put on the front page, can be a make-or-break driver of traffic for bloggers and other site owners. The once-famed Slashdot effect is now dwarfed by Digg’s ability to send traffic to a new site.

There are, of course, some serious downsides. The algorithms for ranking submitted links on most social news sites are proprietary. Data on URLs’ popularity, voting records, the social network itself and the profiles of users on the service is typically put under a strict no-reuse policy (Digg’s public domain dedication being a notable and refreshing exception) and is usually hard to retrieve in bulk. Finally, no current social news site supports a distributed model, e.g. cross-site voting or “friending” protocols.

Software

All of which makes the social news a ripe market for an Open Software Service to move into. There are several Free and Open Source social-news packages available for download. Here are a few notable ones:
  1. Slynkr. This Apache-licensed package drives Sun’s interesting but little-used SDN Share site. Slynkr has a good professional look, but my guess is that its dependence on Java technology is inhibiting its spread on the Web. Getting cheap Java hosting is just not that easy today.
  2. Reddit. A site once neck-and-neck with Digg, but with flagging popularity, Reddit released its source under the CPAL. Reddit’s software, written in Python, has stood the test of time, and has undergone a lot of revisions based on feedback from the site’s active users. reddit.com also supports a Unfortunately, Reddit didn’t follow through with a release of its data under an Open Data license — all data is under a no-lookee-no-touchee personal-use-only user agreement. It would be interesting to see if Reddit can take this important next step and become a real Open Software Service.
  3. Menéame is a fairly popular (Alexa rank: 6878) social news site in Spanish. Its software is available under the old AGPL, and all contents are licensed under the very liberal Creative Commons Attribution 2.5 Spain. As far as I can tell, Menéame is a model Open Software Service, and I strongly suggest its use for Spanish-speaking Web users. The main downside I see is that the software doesn’t seem to support any distributed sociality, so each new installed version will be isolated from existing sites.
  4. Pligg (sounds like…) was originally started as an English-language fork of Menéame, but has been under heavy development for the last two years and is probably at this point significantly more mature than its ancestor. However, the software remains under the old AGPL (ah, copyleft…), although the status of add-on packages in the Pligg Pro shop is kind of mysterious. In any event, the really slick interface (see the interactive demo) and active dev community make Pligg a natural go-to for an Open Software Service. However, no clear leader for a general-purpose social news site using Pligg has come forward, and those that do exist (see http://pliggsites.com/ or Ten Pligg Sites Worth Visiting) don’t typically have an Open Data license. And, again, distribution across installed sites hasn’t happened yet.
  5. sux0r.org is a brand new piece of software, AGPL-licensed, and the default license for shared data on the site is Creative Commons Attribution 3.0. It’s got a lot of interesting features, including Bayesian classification of submissions, and I think it’s worth a close watch.

Next moves

What could a social news site (or sites) that works well in an Open Software Services ecology look like? First, it’s probably clear that a single leader is necessary, to get the kind of traffic numbers that will drive people to submit and rank stories. Second, it will have to leverage its Open Source software with a networked voting system, such that adding more services to the site will stimulate a network effect. Letting groups and users create their own sites that use the same software, but feed data and users into the rest of the network, would really grow the project and make it more valuable.

I encourage anyone interested in helping to move forward Free Network Services to look into this problem. Just installing Pligg or Reddit and adding liberal data-sharing provisions is going to be a big win. (If it was me, I’d scrape that nice public-domain data from Digg, too. Why not?) The distributed social news problem is a hard one, but ultimately (I think) necessary to the project.

So often, a particular strategy becomes dogma. Copyleft licensing constantly allures us in this manner. Every long-term software freedom advocate I have ever known — myself included — has spent periods of time slipping on the comfortable shoes of belief that copyleft is the central catalyst for software freedom.

Copyleft indeed remains a successful strategy in maximizing software freedom because it backs up a community consensus on software sharing with the protection of the law. However, most people do not comply with the GPL merely because they fear the consequences of copyright infringement. Rather, they comply for altruistic reasons: because it advances their own freedom and the freedom of the people around them.

Indeed, it is so important to remember that many of the FLOSS programs we use every day are not copylefted, yet do not actually have any long-term proprietary forks (for me, Subversion, Trac and Twisted come to mind quickly). Examples like this helped me to again re-eradicate some clouded thinking about copyleft as central tenant.

With this mindset fresh, Mike Linksvayer and I had an excellent discussion last month that solidified this connection to network services, and specifically, the licenses for network services software. Many GPL’d network service software give no source to users, but that may have little to do with the authors’ “failure to upgrade” to the AGPL. In other words, the non-source availability of network service applications that are otherwise licensed in freedom is probably unrelated to the lack of network-freedom provisions in the license.

In fact, more likely, the network service world now mimics the early days of the BSD licenses. Deployers are “proprietarizing” by default merely because there is no social effect to encourage release of modified source. Often, they likely haven’t considered the complex issues of network service freedom, and are following the common existing practices. Advent of the GPL did help encourage software sharing in the community, but the general change in social standards that accompanied the GPL probably had a more substantial impact.

Therefore, improved social standards will help improve source sharing in network services. We need to encourage, and more importantly, make it easy for network service deployers to make source of network applications available, regardless of their particular FLOSS license. No existing non-AGPL FLOSS licenses prohibit making the source available to network users. Network providers can and should simply do it voluntarily out of respect for their users. Developers of network service software, even if they do not choose the AGPL, should make it easy for the deployers to give source to their users. I hope to assist in this regard more directly before the end of 2008.

It’s interesting to see that fairly popular social bookmarking site Magnolia has announced their plan to make the next version of their software Free and Open Source Software. Magnolia’s had an “open” strategy for a while, with support of OpenID for authentication, xFolk for bookmarks HTML, and other open-ish things that give them an edge in the early adopter community.

Social bookmarking is a pretty crowded field on the Web, with delicious.com (formerly del.icio.us) taking the greatest amount of mindshare, although I have no idea if they’re still holding the majority of the market. The increased use of bookmarking tool aggregators like ShareThis show that the gaggle of bookmarking sites is a little confusing for everyone. In this kind of market, taking the Free Network Service road is a great chance to differentiate.

I hope that the plan to make their “next version”, dubbed “M2″, Free Software doesn’t devolve into never making the software Free and Open Source. I also hope they review carefully the Open Software Service Definition and consider making ma.gnolia.com an OSSD-compliant site. Ma.gnolia.com already allows users to apply a Creative Commons license to their bookmark stream, although they default to the Attribution-NonCommercial-ShareAlike which doesn’t meet the Free Cultural Works Definition. I think they should consider long and hard how to make all data (except data the user marks as private) Open Culture.

What I find most heartening is the M2 project charter (PDF, 190KB), which shows they’ve really thought through the distributed nature of the software. As I mentioned with identi.ca, making a social networking site’s software Open Source is an empty gesture if people on different servers can’t connect socially. It looks like M2 will have ways to aggregate various M2 instances together, and even aggregate the aggregators.

Good luck to Ma.gnolia.com on this project. I hope they can rally a community around it, reach out to other Open Source bookmarking projects to implement a common distributed protocol, and generally just rock out. A Free Network Service for social bookmarking would be an excellent addition to an open software services ecology.

The announcement of the DiSo Project in December of 2007 was a great encouragement for people on the Web who are worried about identity silos, “walled gardens”, and user lock-in on social networking platforms. Since so many of these subjects are closely related to user autonomy, I did an interview with Steve Ivy about the origins and goals of DiSo, current progress, and where he things things are going in the future.

Read the rest of this entry »

bkuhn (aka Bradley M. Kuhn) is a member of the autonomo.us group, and is best known for his work in various FLOSS non-profits. He is the inventor of the Affero clause of the AGPL, and currently works at the Software Freedom Law Center and as president of the Software Freedom Conservancy.

Jesse Vincent gave a talk at OSCON today entitled Prophet, your path out of the cloud. Every hacker who is interested in implementing a network service that respects the freedom of its users should look at Jesse’s work.

Read the rest of this entry »

Evan Prodromou is one of the bloggers on autonomo.us. As with most blog posts on the site, the following is his personal viewpoint.

One of the suggestions of the Franklin Street Declaration is for programmers to “[d]evelop software that can replace centralized services.” I’ve taken that suggestion to heart in creating the Laconica microblogging platform, which powers my site Identi.ca. I was using microblogging services a lot, and I wanted to have one that would preserve my autonomy; so I created my own.

I’d like to put forward some suggestions for other Web applications that are ripe for an Open Software Service implementation. These are Web applications that I use on a regular basis. I’d prefer to instead use services that respect my autonomy, and I’m looking forward to a point where I can live my life on-line that way. Here are some services that I use on-line regularly, and that I’d love to have Open alternatives for.

Read the rest of this entry »