79d0da0196f1c67435915c71e432f97d.ppt
- Количество слайдов: 21
Gallery Building Open Source Software Los Alamos National Laboratory May 17 th, 2006 Bharat Mediratta
What is Gallery? • • • Web based photo sharing product Founded in May, 2000 Installed on 300, 000+ websites Most widely used web photo sharing application In the top 25 most active projects on Sourceforge Requires your own webserver with: – Windows, Linux, Solaris, Mac OS X – PHP 4 or PHP 5 – My. SQL, Postgres, Oracle or DB 2 • Gallery 2 alone is 273 K lines of code and comments
Demo • Big sites! – Care 2. com – commercial site, 1. 3 M photos – Technobilder. de – personal site, 101 K photos • ISPs – Allenhost. com – ISP based photo hosting, 25 K photos • Personal sites – Menalto. com – My own site, 8 K photos – Opticalpork. com – Christian Mohn’s photography site
Self-hosting is better! • • Your users stay on your website Your photos are integrated with your content Photo host services are crippled, or expensive Photo hosting services may not give you back your originals, or may go out of business • Features!!
What are the challenges? • • • We don’t get paid We have no office We (almost) never meet in person We have day jobs (or are full time students) Many of us are married. . with little kids! We don’t have trained professionals in every role
Who’s on the Gallery team? • 20 core members (7 different countries) – developers, user interface designers, tech support, documentation • ~10 -15 significant supporters – Users who help out in forums, wiki, submit code patches • ~20 -30 localizers – Gallery 2 is localized into 34 languages (10 are >90%) • Hundreds of minor contributors – Bug reporters, feature suggesters, • Thousands of users who help test – People like you, who give a little back
How do you build a project? • Focus on the community • Users helping each other reduces load on the developers • Users help developers understand what’s important in the product • Properly prepared users provide invaluable testing • Happy users spread the word! • Unhappy users spread the word further!
How do you build a community? • Give users a place to meet and talk • Empower users to report (and maybe fix) problems that they find • Treat users with humility and respect – they are experts in their own fields! • Give users whatever responsibility they ask for – some of them will grow into team members! • Be unbelievably polite, no matter how provoked • Be open, involving in your decision making
Leveraging the community • Focus on your users – Take them seriously – they speak from the heart – Welcome them – they can turn into team members – Give them what they want – or they’ll stop being users • Put users to work! – Match strengths to tasks – contributing back to the project makes users happy! – Find the value in each user, give them an outlet
Evolve the community into a team • • Encourage the users who really stand out Create a vacuum and let users step up to fill it Identify passionate users and share responsibility Build a culture of passion and productivity – curb negative influences • Create a nucleus of dedicated individuals and encourage others to glom onto it • Communicate, communicate!
Communication • Forums are way better than mailing lists • Mailing lists have a barrier-to-entry (subscription) • Forums offer control (moderators can edit, promote, lock topics). • Forums are search engine friendly! • Forums encourage way more cross traffic • Mailing lists are good for private discussions
More Communication • • Real time communication is necessary! Chat encourages off-topic discussion insight Chat encourages socializing team bonding Chat has a lower barrier to entry encouraging devs to pair up for problem solving • Chat enables online meetings, necessary for distributed team coordination.
Put your team to work! • • Create and publish best practices Set a good example Let consensus drive decisions, up to a point Choose level-headed individuals to represent the group
Best Practices • • • Automated Testing Continuous Integration Continuous User Testing Continuous Usability Global Code Ownership Product Pride • User driven feature selection • Developers participate in tech support • Set high standards!
Set High Standards • Coding standards are very important when you have a decentralized team • Fix the little things first – they have a big impact on user happiness • Encourage product pride • Maximize global project ownership • Encourage everybody to participate in fixing things that are wrong
Write Automated Tests! • • If it’s not tested, it is broken! Tests are the most up-to-date design documents Tests eliminate code ambiguity Tests increase development velocity Tests drive better design Tests improve code quality 35% (96 K lines) of Gallery 2 is test code
Continuous Integration • Frequent small commits expose bugs faster, making them easier to fix • Notify devs about commits via email and chat so they know to update quickly • Encourage devs to sync several times daily • Implement features end-to-end, no broken links!
Continuous User Testing • If you: – Release stable nightlies! – Provide an easy upgrade path for nightlies • You get: – Widespread user testing – Instant feedback about features and bugs – Valuable insights about prioritization
Continuous Usability • Encourage professionals and nonprofessionals to provide a steady stream of user interface feedback • Engage in discussion where useful • Act on the feedback!
Let the users decide the features! • You can’t please everybody • Let the users vote on which features they want • Design a modular system so that users can pick and choose • Don’t let the vocal minority drive! • Make it easy for users to customize it the last 10% • Fix bugs!
Learn More • Gallery website: http: //gallery. menalto. com • Talk to us! – Email: gallery@menalto. com – Chat: #gallery on freenode
79d0da0196f1c67435915c71e432f97d.ppt