Nov 06

Making a Django Uber-Community

My workload at work is about to get a lot less critical and time consuming, so I was looking for a project to start on. I am really interested in the social aspects of the web, and below I will outline an idea that I think will be my next project.

At Djangocon there was talk by Adrian and Jacob in their Future of Django talk about having a common identity for a person across all Django sites. I think that this would be a really interesting thing to work on, and make all of our Django sites much more approachable. So in this post I'm going to lay out what I think this would look like, how it would likely be done, and then hopefully get some other people that are interested in it to help me brainstorm. There is a ticket open about it currently.

Information Aggregation

So first off, we need to figure out what this is going to look like. I imagine there being a central site that would organize all of our Django related activity. The best option at the moment is Django People, because it already has a lot of that data. I talked to Simon at Djangocon about his plans for Django People v2, and it sounds like this is the direction he was wanting to go. So Django People could serve as a personal aggregator for people. I view Django People as kind of the "Profile Page" of a person in the realm of Django. The main page could also function as a kind of "Life stream" of the project, so people could see what is going on Right now. I think a killer feature would be to have people be able to join into groups, based on projects, and have a life stream for that project. This would give people an idea of how active a project is, how many people use and develop it, and other interesting information that weighs into whether we decide to use a project. Simon in his scary brilliant way already has most of this information on the site. We just need to build a way to pull information that we care about in, and display it well.

Then we need some kind of large aggregator of content from all of the people in Django. I think that This week in Django is the place to do that. The Django Community Aggregator on the official Django site is lacking. I think this functionality could be pushed off to TWID. I think that this aggregation site would replace the aggregation of blog posts. It would hopefully support tagging, syndicated comments, language preferences, and other thing. I have talked to the TWID guys about doing this, and they said it sounded like a great idea.

I view these 2 sites as the foundation for what I hope to build. Then the question is, what other sites do we include in this 'django information stream'? I'm going to list the ones that I think have relevant information, and I would love to have suggestions for other sites that would provide a service.

Sites to include

  • Django Plugables - This site is a directory of Django reusable apps. It is a great resource, and better than searching Google Code for 'django-'. Now that projects are getting hosted on Github, Bitbucket, Google Code, Pypi, and others, this aggregator of projects is useful. We could bring in data about what projects a person owns. The site currently supports handling commits, and it would be really neat to have able to pull in all of the commits to a project, as that is the big thing that this is all about, code.
  • Django Snippets - This is a great site for Django. It allows people to submit snippets of useful code for others. We could bring in data about their posts and tags.
  • Django Sites - This is a site that lists all of the sites that are made in django. We could pull in the Django Sites that people have made. We could also use this data to determine what host each site uses, and have a tally of hosts of Django web apps.
  • Django Gigs - The place to look for Django work. Pull in people looking for work, and people with job postings.
  • Other non-django sites - We could also pull in data from popular sites about Django. Think the Django popular section of Delicious, Reddit Django subsection, Twitter Search for Django, etc.

Ponies

Luckily in this day and age, most of the data we want is available in RSS feeds. For other things, there are APIs available. Luckily, most of the owners of the sites are members of the community, and I'm hoping they would be willing to have the information aggregated. I don't think that there is much of a technical challenge behind this, it is mostly just social and getting people to push their data in suitable formats.

I think it would be interesting to talk about microformats, and other ways of having the data on the public sites be available to be pulled. I think it would also be interesting to have OpenID enabled on all of the sites (Django people already has it). This would allow you to have a kind of floating profile. If a layer was built on top of this (white listed information providers?), you could edit your information on one site, and it would be sent to all the others in the inner circle.

This is mainly just a braindump, but I am willing to take the lead on this project and get people talking. The code would be released open source and I think we could even make it into a series of reusable apps (and maybe APIs) that could be extended to other communities. I think we could create a best of breed/proof of concept implementation of a community linked shared profile.

Using OAuth to share the information across the sites, and as authentication for that and more is also another thing that I think would be possible. I haven't implemented anything like this before, so I don't know if it's the correct technology.

There is a lot of possibility for this project, and I am really excited to get started on it. This is just mainly a feeler to see who would be interested in participating, and to get the ball rolling. I'd love to hear people's comments and criticisms.


Comments

1 Marty Alchin says...

I've actually been giving a lot of thought to this topic for quite some time, though not to the level of technical detail you're touching on. Django really does have a fantastic community that has put up a number of special-purpose sites that are great at targeting a specific aspect of the community. I've long wished there was a good way to tie it all together.

Initially, my interest was just about the data. We're writing code, emails, blog posts, taking pictures, attending events, posting jobs, swapping links, a ton of stuff. I wanted to pull some aggregates of that kind of data together, so I started to put together DjangoStats (http://github.com/Gulopine/djangostats/wikis/home) and got a few other people interested. The more I thought about it, though (and came up with other sites we'd need to make it complete), the more I came to the same conclusion, where it'd be great to have a true network of sites, with shared identity, linking of features and everything.

There are two new community sites I had planned but haven't managed to follow through on (books take a lot of energy!) that might help kick off more creative juices. Django Chatter would be an aggregate everything the community's saying, including blog posts, Twitter/Pownce updates, mailing list threads, etc. Django Events would be an upcoming.org of sorts for the community, posting things like PyCon, DjangoCon, local Django group meetings, official releases, major feature additions, new site launches, book releases, etc.

It was when thinking about Django Events that I realized how much a technologically integrated community would be awesome. You could head over to Django Events and claim your attendance at an event by using your Django People account, no extra signup or login required. Simon seemed open to the idea when I mentioned it in passing, but I haven't made anything of it yet. Maybe you're the catalyst we need. :)

The book's not off my plate quite yet, and I have a few other things I'd like to do afterward, but I'd be very (very!) interested in helping make this happen.

Posted at 8:47 p.m. on November 6, 2008

2 Marty Alchin says...

For the record, I think TWID could be the place to put the Django Chatter idea, but it would be quite a bit of work, and might detract from the podcast's presence there. For a little perspective, in preparation for Django Chatter, I set up a dedicated email address and signed it up on all the Django mailing lists I could find on Google groups. It's currently a member of 115 lists (in probably dozen languages) and has amassed well over 10,000 emails (somewhere over 11,000 when I checked last week) in over 3500 threads in just two and a half months since I set up the accounts. And that's not counting trying to get ahold of archives of lists from before I started collecting. I don't even know how many There's definitely some work in managing to filter that list into what's useful for each user, so it's not a task to be taken lightly.

Posted at 9:10 p.m. on November 6, 2008

3 Will Larson says...

This sounds like a great idea, but I think it's important to move forward in a way that keeps the community open and doesn't prevent or discourage newcomers from joining.

I realize that sounds kind of silly, but I think this could be done in ways that really inspire creativity and make people want to join the Django community, and also in ways that make the community look cliquish and would discourage participation.

As you start planning more seriously, I'd be interested in helping out as well.

Posted at 9:18 p.m. on November 6, 2008

4 David, biologeek says...

Unfortunately, it's not exactly the right timing (nor the place) to announce that but anyway, I'm always impatient when it talks about Django, identity and semweb :-)

I have a similar approach (but not only for Django community) so I had created my pony, SemanticDjango: http://www.bitbucket.org/david/semanticdjango/overview/ which is a fork of Django with built-in Open Stack stuff (OpenID, OAuth and PortableContacts for now, work still in progress, the real goal is to create a semantic contrib). I'm not sure of your goals but it seems to be an interesting first step because you'll need at least an OpenID provider if you'd like to consolidate a Djangonaut identity and OAuth to deal with data access and so on.

Let me know if I can help, I'd love to hear your thoughts on that initiative.

Posted at 10:35 p.m. on November 6, 2008

5 Eric Holscher says...

David: Wow! It's amazing that people have already thought about this way more than myself. Semantic Django looks amazing. Sorry for calling you all out on it, but I'm glad that I did. It looks awesome!

Marty: That's so awesome this has already been looked at. This is exactly the kind of response I was hoping for. Our amazing community shines through one again. Now that your book is done, I'm glad that you have the time to think about this stuff again. Seems like this blog post a month thing is working out :)

Will: I agree completely. This needs to be done in a way where people are encouraged to join the community, and they are happy when they do. I think that our community is great in this respect as it is, and I don't want to do anything but enhance that fact.

I've been talking to some people about this, and I think that this really needs to be done. I'm completely floored, but not surprised that people are already working on this. It was my main goal of this post to kind of figure out what was going on in this regard.

I think that we need to talk about this, because you all have given more thought to this than I have. I think that we could make something great, and I'm excited about the possibilities.

Posted at 8 a.m. on November 7, 2008

6 Sean O'Donnell says...

It feels like cloud27.com from the pinax project might have some role to play

Posted at 1:52 p.m. on November 7, 2008

7 Kevin Teague says...

It would be worthwhile considering going beyond just a Django uber-community to a Python web uber-community. For myself, I'd like a "Grok uber-community" site, but then I also do work in Plone, and tinker with Django (and keep an eye on what's going on in TurboGears, BFG and Zope 3 - whew!). Instead of a Zope uber-community, Pylons uber-community, Django uber-commmunity, TurboGears uber-community, etc. it would be very cool to be able to indicate the major elements of the stack for each content type.

It would be quite useful, I think, if you were able to search across different development platforms. Searching for "type: recipe and tag: LDAP" for example and bringing up examples of LDAP approaches used in different platforms could be quite helpful. It's true you can rarely lift code wholesale between different dev platforms, but often there are excellent snippets and sources of inspiration floating around out there.

Posted at 9:12 p.m. on November 9, 2008

Comment are disabled for this post.