"Other developers are just like us - weird"
"If you ever need to deploy Django, you're good. If you know Capistrano and Unicorn they've got rip-offs of all that stuff."
"I think we should all admit we're horrible coders and move on" "We're all drug addicts - we're fighting methods..."
"It's easy to learn to play the guitar and be able to play Bob Dylan and Weezer and never get better."
"This is basically a talk that was given 30 years ago. We just have to keep giving it every few years because young guys come along and forget it."
"There's a difference between distributing software and releasing it."
"[the lieutenant model] might be overkill if you have three contributors, for example."
"Even though this is a Ruby conference and we all do open source with our closed iPhones and Macs..."
- No LICENSE file
- Installation - a lot of times the installation process holds software back
- MySQL and Postgres are an example - MySQL is easy to install, Postgres isn't
- The quick start is what's really important - the Rails 15 minute blog as an example
- jQuery noConflict as an example... "it's really innocent.... it's like "come try me""
sudo gem install <foo>
doesn't work if you're a CLI tool
- Lack of examples
- ASIHttpRequest has excellent docs
- All common tasks are covered
- Having a Public API is a good thing
- A list of methods that don't change - not something that has a special keyword, but a social thing
- If you're using RDoc - strip out all the internal stuff and only document the public APIs, then RDocs become useful
- Manuals
- ronn - markdown file to manpages
- In Linux - it's considered a bug if there's not a manpage
- Dependencies
- I don't even know if I want to wade into this... cause it sucks
- Expectations
- If a project says it does one thing, and you can't make it - your expectations are let down
- Projects that aren't maintained
- Say if you don't maintained
- Leave it there - but say "no longer maintained, looking for a good home."
- Features
- It's too easy to add new features
- Encourage plugins
- It's much harder to remove a feature
- If you don't except it now, you can always send it later
- Maybe your project has no users
- "You don't even use it... say so"
- Lack of competition
- He thinks "don't invent the wheel" is "bull crap"
- Too few releases
- Release things when you fix things
- worst thing is to get a bug report and have a developer say "oh yeah, I already fixed that"
- Changelog
- Add one - it's useful to show people what has changed
- Are there new methods, is there code I can delete and use the new features
hoe
automates that
- Version numbers
- Points people to semver.org
- It creates trust by giving people an idea of what they can expect during an upgrade
- Beta vs production
- "semver says if your code is in production, that means its 1.0"
- "We have a lot of numbers... we're not gonna run out of 'em."
- READMEs
- Where do you go for help?
- IRC, mailing lists, etc.
- Contributing guide
- How do you submit a patch
- Development guide
- How do you run tests
- It's much worse in Python, cause they don't have Rake
- Be a lazy maintainer
- Do the minimal amount of work
- Points to schacon/showoff
- Linkrot
- Documentation gets updated, blog posts don't
- Hates it when a project has a domain name
- Once the domain expires, you just broke all of the links everywhere
- Google your project name
- Make sure you have a name that isn't autocorrect, etc.
- Poor marketing
- Distill the essence, then show that
- "I mean, it sounds social media to say that..."
- Project's he used as inspiration
- Rails
- jQuery
- Redis
- Quick start using redis-cli
- Homebrew
- Django has really great documentation
- Unicorn
- ASIHttpRequest
- "Life is too short to release crappy software"