Tech stuff
Jul. 29th, 2012 08:25 amSo, how are we going to build this thing?
A bit of background: from, oh, 1996-2007 I was a full time web developer on the LAMP stack (Linux, Apache, MySQL, Perl). I've had experience building and working on quite large websites with those technologies. However, I stopped around 2007 which, of course, is five years ago, and five years is a long time in tech. So, whatever we do, I'm going to have to refresh my skills.
Since I'd be doing that anyway, I feel like it's a good idea to consider using other tools/languages/platforms. To that end, I'm strongly considering doing this thing in Ruby on Rails. Why RoR? Well, it's easy for people to learn, and I want to get people involved who might not have previously worked on this sort of thing before. I know that one other project (AO3) has been successful in this (they've had problems with scaling, but I suspect with my previous web dev experience and the help I know I can pull in, we may have less trouble with this than they did). Ravelry is also built on Rails, so I know that similar sites can do it well. And it's a modern, marketable language which means learning it is good for people's resumes if that matters to them.
That said, I could be convinced to go with something else, if someone has an idea and can address the points I've mentioned above (especially the ease-of-getting-started issues). I presume Python has a comparable web framework, so that would be one possibility.
Needless to say, there'll be a bunch of frontend stuff, which will be in Javascript, presumably with JQuery, and lots of design/UI/UX work to do. My housemate and co-gardener is a UI/UX person and has expressed interest in working on this, so I feel reassured that we have some skills in that area already, since I'm not great at it.
Apart from that, I'd like us to keep our code on github, one of the most popular version control platforms around. (AO3 already does this, and Dreamwidth is planning a move to git, so it's likely to be a handily transferrable skillset for those who've had experience on either of those projects or any of the squillions of other open source projects that use it. It also has good transparency and community features in place, which I think matches our ethos.)
I'd also like us to use test-driven development methods, and generally take an "agile" approach to the whole project. My background in that regard is in Extreme Programming, so I'd like to bring in as many of the practices from there as possible. That means short iterations (aka "release early release often" as they say in open source), flexible/lightweight planning and design (not trying to specify the whole thing up front), constant refactoring, and yes, if we can manage it, pair programming! Or at least the closest we can get to pair programming in a distributed, (mostly-)online dev community. I think XP (as it is also called) is a great match for a project that wants to be sustainable and inclusive.
So that's where my head's at and what I'm thinking of. As with everything (and you'll hear me saying this a lot especially at first) all this is up for discussion, and I promise to listen carefully to any suggestions you make.
So what I'd like to ask at this point is...
1) Roll call! If you would like to get involved in a technical way, please comment and say what part interests you. If you have existing skills in any of the areas mentioned above (or any others you think might be relevant), please mention them. If you don't know yet or would like to learn, that's fine too.
2) Tools and resources! If you know of something we should be using or looking at, whether or not it's listed above, let us know. For instance, if you know a good learning resource for new Rails developers, have opinions on database backends, or know a good web app for managing distributed XP projects, let's hear about them.
A bit of background: from, oh, 1996-2007 I was a full time web developer on the LAMP stack (Linux, Apache, MySQL, Perl). I've had experience building and working on quite large websites with those technologies. However, I stopped around 2007 which, of course, is five years ago, and five years is a long time in tech. So, whatever we do, I'm going to have to refresh my skills.
Since I'd be doing that anyway, I feel like it's a good idea to consider using other tools/languages/platforms. To that end, I'm strongly considering doing this thing in Ruby on Rails. Why RoR? Well, it's easy for people to learn, and I want to get people involved who might not have previously worked on this sort of thing before. I know that one other project (AO3) has been successful in this (they've had problems with scaling, but I suspect with my previous web dev experience and the help I know I can pull in, we may have less trouble with this than they did). Ravelry is also built on Rails, so I know that similar sites can do it well. And it's a modern, marketable language which means learning it is good for people's resumes if that matters to them.
That said, I could be convinced to go with something else, if someone has an idea and can address the points I've mentioned above (especially the ease-of-getting-started issues). I presume Python has a comparable web framework, so that would be one possibility.
Needless to say, there'll be a bunch of frontend stuff, which will be in Javascript, presumably with JQuery, and lots of design/UI/UX work to do. My housemate and co-gardener is a UI/UX person and has expressed interest in working on this, so I feel reassured that we have some skills in that area already, since I'm not great at it.
Apart from that, I'd like us to keep our code on github, one of the most popular version control platforms around. (AO3 already does this, and Dreamwidth is planning a move to git, so it's likely to be a handily transferrable skillset for those who've had experience on either of those projects or any of the squillions of other open source projects that use it. It also has good transparency and community features in place, which I think matches our ethos.)
I'd also like us to use test-driven development methods, and generally take an "agile" approach to the whole project. My background in that regard is in Extreme Programming, so I'd like to bring in as many of the practices from there as possible. That means short iterations (aka "release early release often" as they say in open source), flexible/lightweight planning and design (not trying to specify the whole thing up front), constant refactoring, and yes, if we can manage it, pair programming! Or at least the closest we can get to pair programming in a distributed, (mostly-)online dev community. I think XP (as it is also called) is a great match for a project that wants to be sustainable and inclusive.
So that's where my head's at and what I'm thinking of. As with everything (and you'll hear me saying this a lot especially at first) all this is up for discussion, and I promise to listen carefully to any suggestions you make.
So what I'd like to ask at this point is...
1) Roll call! If you would like to get involved in a technical way, please comment and say what part interests you. If you have existing skills in any of the areas mentioned above (or any others you think might be relevant), please mention them. If you don't know yet or would like to learn, that's fine too.
2) Tools and resources! If you know of something we should be using or looking at, whether or not it's listed above, let us know. For instance, if you know a good learning resource for new Rails developers, have opinions on database backends, or know a good web app for managing distributed XP projects, let's hear about them.
no subject
on 2012-07-29 06:56 am (UTC)* Former Perl developer, specialising in websites of about this size
* Learned some Ruby years ago, and enough Rails to get a simple website up and running.
* Know a bit of Python and PHP too, for that matter.
* Some Linux sysadmin, fairly outdated.
* Lots of experience/high level skills in designing database schemas and mapping real-world information into a structured form.
* Some Javascript including JQuery, but not l33t skills (would like to learn more)
* Some experience with github and other distributed version control
* Lots of experience with test driven development, refactoring, and teaching people how to do them
* Moderate experience with the process of user interface design, from the point of view of a stakeholder and/or coder... meaning I can work pretty well with UI people and speak the language, though I'm not one myself
Tools and resources:
* Git for ages 4 and up, an entertaining introduction to git by a friend of mine, Schwern.
* C2 wiki (I've linked to the XP page again) for people who think a lot about people- and quality-oriented parts of software development. Lots of good language and ideas about how to build good programming teams and products.