2012-11-15 UTC
dascher, tantek, tantek_, friedcell, barnabywalters, morrocco_mole, spinnerin and zztr joined the channel
# 22:08 aaronpk Email is not a messaging protocol. It's a todo list."
# 22:09 tantek email is not a to-do list, because you wouldn't let just any random person put something in your to do list would you? whereas random people can put things in your email inbox.
# 22:10 tantek no - the page itself attributes it to paul graham
# 22:13 tantek here, this is close (though I didn't use the exact phrase "to-do list") tantek.com/w/EmailHandling#Emailisnotyourinbox
# 22:14 tantek so I'll add some explicit language accordingly then
dascher joined the channel
singpolyma joined the channel
# 22:35 tantek aaronpk - while you're here, I had a question of about doing release management, from an indieweb perspective in particular.
# 22:36 tantek real world problems: installing, updating, reverting open source software for an indie web site is currently *too hard* (evidence: Wordpress installs of smart people getting hacked, regularly, to the point where some even revert to Tumblr domain hosting)
# 22:37 tantek use-case: I want to run my own website, with some open source software behind it, and be able to maintain it *easily*, including doing updates when necessary and I want to, and having the option to easily revert in case such updates break something on my site.
# 22:37 tantek as far as I can tell, no one has solved this problem, nor satisfied the use-case
# 22:38 tantek e.g., "hire a sysadmin" is not a reasonable answer for the indieweb
# 22:38 aaronpk wordpress has done a pretty good job of the upgrade flow
# 22:38 aaronpk but I don't think they've done downgrades, which is also important as you pointed out
# 22:38 tantek aaronpk - wordpress has been iteratively improving their upgrade experience, but I wouldn't call it "pretty good"
# 22:39 aaronpk it's gotten to the point where it takes literally one click to upgrade
barnabywalters joined the channel
# 22:39 tantek if you have *any* configuration problems/mistakes, e.g. owners of files/directories are not quite right, then you'll get cryptic error messages, password interfaces, etc.
# 22:40 tantek so no, I don't accept that in the general case
# 22:40 tantek too many people have encountered those kinds of problems
# 22:40 aaronpk and in those situations there is often no recovery path other than command line access
# 22:40 tantek that may be true, however the UI should walk you through that
# 22:41 aaronpk seems like easier deploy systems would be the first step in solving this, like pushing an app to heroku has taken all of the sysadmin burden off of people at this point
# 22:41 tantek they still warn you to backup your database first
# 22:41 tantek until that warning is history, it's not "one click"
# 22:41 tantek yes, the heroku example is a good one to analyze
# 22:41 aaronpk i think the main problem is that people still assume that FTP access is the only way to deploy sites
# 22:41 tantek I think FTP is a good baseline assumption actually
# 22:42 aaronpk and that will always lead to the problmes you mentioned, cryptic errors that are hard to resolve
# 22:42 tantek 1. every web hosting company gives you FTP access
# 22:42 tantek 2. everyone can be reasonably easily taught how to FTP (have done it on a number of occasions)
# 22:43 aaronpk I think that between Heroku, AppFog, and now Amazon offering git-push interfaces to launch apps with no knowledge of the underlying filesystem, it's getting more reasonable to leave the FTP method behind
# 22:43 tantek btw, biggest problem with "the heroku way" is that it seems to equate to "depend on heroku.com" - which is obviously a non-starter from a indieweb perspective.
# 22:43 tantek "pushing an app to heroku" is too proprietary essentially
# 22:44 aaronpk yes, but I was using that as an example, and now that there are three companies doing it that way there will undoubtedly be more coming in the future
# 22:45 barnabywalters I have been thinking about this a little recently. One potential option I thought of was to make a native app which offers a GUI for building a project, managing depencencies, modules/plugins/whatever. Then it spits out a folder which you upload via FTP/other transfer mechanism
# 22:45 aaronpk not literally, but a "git push" deploy structure is a good way to do it IMO
# 22:45 barnabywalters if PHP was being used, the entire project could be spat out into a single .phar file, which is pretty easy to upload
friedcell joined the channel
# 22:46 tantek aaronpk - a "git push" deploy structure depends on the web host having git installed, which is too much of an assumption
# 22:46 aaronpk today it is supported by only a few, but I expect it will become much more common
# 22:46 tantek e.g. my web host doesn't have git installed, and I have no desire to walk down the sysadmin rabbithole of installing git on my web host
# 22:47 tantek same thing can be said about Node.js: today it is supported by only a few, but I expect it will become much more common
# 22:47 tantek but that's not the way to build deployable things today
# 22:47 tantek hence why I started and continue to develop #cassis.js
# 22:47 aaronpk btu you *can* deploy things to Heroku, AppFog, and Amazon today without filesystem access
# 22:47 tantek because I'm not going to wait for Node.js to be available everywhere
# 22:48 tantek people don't pick web hosts because of git push / deployment without filesystem access
# 22:51 tantek also, the more that you require "works by default" on your web host, the fewer options you have to switch to
# 22:51 tantek in case companies go away, go down, get too expensive, share your private data, whatever
# 22:51 tantek I think part of the indieweb way has to be maintaining low switching costs, and many switching options
# 22:52 aaronpk case in point: eran sent me a .zip file of the oauth.net site, I dropped it onto my server and the oauth.net site was moved over in a matter of minutes
# 22:52 tantek only by commoditizing the services we depend on can we become somewhat independent of them
# 22:53 aaronpk I never even needed to know where he had it hosted
# 22:53 tantek I think that's a good pattern for an indieweb baseline
# 22:54 tantek all my currently deployed sites are like that, with maybe just a little more logic in the PHP layer
# 22:54 aaronpk Can your site be toleld into a single file (.zip, .git, .phar, whatever) and deployed on a new host in under 5 minutes?
# 22:55 Loqi aaronpk meant to say: Can your site be rolled up into a single file (.zip, .git, .phar, whatever) and deployed on a new host in under 5 minutes?
# 22:55 tantek if I zipped my site folder into a single file it would deploy as is
# 22:55 tantek PHP + Apache are the assumptions it currently makes
# 22:55 tantek and that's true for tantek.com, for H2VX.com, for asin.cc
# 22:56 tantek I was discussing this a bit with kevinmarks last night at the microformats meetup in SF
# 22:57 tantek or rather about software updating/reverting in general
# 22:58 tantek when I pointed out the heroku-specific silo nature of their deployment tool(s) (e.g. "heroku" command line tool), he mentioned www.12factor.net
# 22:58 tantek and my evaluation was that it's a bit heavy-weight for my purposes.
# 22:58 tantek and that I may try to simplify to a way of doing "MVRM" - minimum viable release management.
# 22:59 tantek huh - Google says, No results found for "minimum viable release management"
spinnerin and dascher joined the channel
# 23:29 tantek aaronpk - are you using Heroku for aaronparecki.com?
# 23:30 tantek or are you managing your site with just git based deploys (independent of any Heroku tools etc.)
# 23:36 aaronpk would like to get something slicker set up, but it's not enough of a problem for me yet
# 23:38 aaronpk going to bed now, talk to you later! (12:30am in Berlin right now)
tantek_ joined the channel
# 23:41 tantek_ aaronpk - how do you revert? in case something breaks on your site after a "git pull" and it's not immediately obvious how to fix it?
# 23:41 tantek or do you let it stay broken live while you debug it?
# 23:41 aaronpk I run a copy of my site locally first so I see everything before I launch it
# 23:42 aaronpk if there's an environment difference between my dev setup and production which causes an error, then I either debug live, or if it's going to take < 5 minutes I revert by checking out a previous revision from git
# 23:42 tantek so you have a set of local tests, like checking your home page? or do you have a test suite like posting a note etc.?
# 23:43 tantek ok cool. by "checking out a previous revision from git" does that mean you tag/name your revisions in git before you deploy?
# 23:43 tantek or how do you identify *the* previous revision in git that you had deployed before you updated?
# 23:43 tantek since you might have made many changes in git between deploys
# 23:44 tantek ah ok, you have better memory than me then ;)
# 23:44 aaronpk if i'm doing significatn changes (like adding a new checkin type) then I"ll develop on a branch
# 23:45 tantek I'm more worried about the "need to revert" use case
# 23:45 tantek without having to remember what was the exact version running beforehand
# 23:46 aaronpk yea, gets more complicated to formalize that, but certainly possible
# 23:46 aaronpk when i'm doing other ad-hoc deploys of other sites I often `cp -R` the folder to a .bak folder so I can quickly revert if neere
# 23:46 tantek I figure the easier it is to revert, then the less fear there is in aggressively deploying updates, because if anything *does* go wrong, you can easily/quickly revert.
# 23:47 aaronpk for geoloqi production stuff we spin up a new amazon server for the site and get everything running there, then switch the load balancer over when ready to deploy. reverting is then a matter of switching the load balancer back
# 23:47 tantek so your revert is a delete of the current deploy folder then a renaming of the .bak?
# 23:48 tantek this is exactly the kind of thing I think we have to document, simplify, etc. for viable indieweb software
# 23:48 tantek there's too much alchemy in release management
# 23:49 aaronpk yes, I should definitely document my different strategies just to get them out on the table
# 23:49 tantek I like the switching load balancer as an atomic action to update/revert
# 23:49 tantek that may be a bit high-end for most indieweb setup/folks, but still good to document it in case someone wants to go that route
# 23:50 aaronpk yea definitely not super portable to different environments, but works well
# 23:57 tommorris tantek: so, the simplest solution for tracking deploys in Git is to use `git tag`
# 23:57 tommorris basically tag lets you add a signed pointer to a particular commit
# 23:58 tommorris it's widely used for release management, because you can cryptographically sign the tag with GPG. which is in wide use in Linux distro land.