Expected Behavior in the Lift community
A top-level goal of the Lift community is to be a warm and welcoming place. Helping people who invest their time and effort in Lift and build applications with Lift be successful is a core value in the community. The Lift community is a place where the open exchange of ideas is very important. I personally take the Lift culture very seriously. As the Lift community grows, more and more people with more and more views, opinions, and perspective enter the community and enter the conversation. Keeping the discussion a positive exchange of ideas and keeping the dialog open so that people are encouraged to ask questions and share their views requires a very delicate balance and the maintenance of a decorum in the community. Firstly, it's important that the vast majority of discussions take place on the Lift Google Group. The committers discuss design choices, etc. on the main mailing list so that the whole community can see how decisions are made. This is why I actively discourage people from contacting me privately (except for zero-day security issues.) This is also why we ask that people discuss issues on the mailing list before opening tickets and we redirect discussions from tickets back to the mailing list. The discussion of the design choices in Lift should be available for everyone to see and available as a history of Lift in the Google Group. If you are new to the Lift community, please approach the community is a polite and respectful way. This means:
- If you identify deficiencies in the Lift wiki or other public documentation, please work to fix those deficiencies rather than complaining about them. If you've got questions, we'll gladly answer them on the Lift list. You are just as capable as anyone else at updating the wiki or writing a blog post about the issue.
- If Lift is not behaving as you expect, please ask questions about what you're seeing. The ideal form of these questions is "When I do X, my Lift app does Y, but I expect it to do Z, why?" This provides a set of language to discuss your application and the way that Lift responds to requests. Perhaps there's a way of improving Lift. Perhaps there's a concept that's different in Lift than you might be used to. Perhaps there's a documentation issue that can help bridge the gap between what Lift is doing and what you expect it to do. Most importantly, just because Lift is behaving differently than you expect it to, it's not necessarily a bug in Lift. Starting off a discussion by claiming unexpected behavior is a bug sets the tone of the discussion to a negative one. It's no different that responding to a post on the mailing list with RTFM or "you clearly don't understand" or some other statement that puts the poster on the defensive.
- Your priorities are necessarily different from the rest of the community's priorities. If your post doesn't get answered immediately, please don't "bump" it or repeat it. Somebody will most likely get to you when they can or if they have a solution to the post. If you report an issue and the committers don't set a high priority on addressing the issue, being a squeaky wheel doesn't help (although being a production site does help a lot... if you've put Lift into production and you're facing a non-trivial issue, let us know and we will prioritize the issue up.)
- The person that addresses your question may ask you to post an example. This has a very specific meaning (See https://www.assembla.com/wiki/show/liftweb/Posting_example_code) This allows everyone to see the issue you're facing in running code. This allows everyone to see the patch that solves the issue.
- Please say please and thank you.
- Wait for an answer. If you haven't received an answer in a week, then, yes, you can ask if anyone has seen the issue or has an answer to your question.
- If you get an answer, please take the time to update the wiki or write a quick blog post about the question and answer and then post the link to your work on the Lift mailing list.
- If you know the answer to someone else's question, please help them out.
- When you're new in the community, please tread lightly. The Lift community is likely different than other open source communities and learning about out community will help you get the most out of it while contributing to it.
- Good: "Lift is not behaving the way that I expect it to. When I do X, Lift does Y, but I expect it to do Z." Bad: "Lift is buggy." "You don't really support X even though you claim to." "Lift has a design flaw." or "I contacted you privately because I didn't want to air dirty laundry about Lift on the public mailing list." (Note, that unexpected behaviors, bugs, performance problems and even security vulnerabilities are not dirty laundry, but a normal part of any complex piece of software and should be discussed on the public Lift list unless the security vulnerability could be exploited [a zero-day flaw], in which case I ask that you contact me privately so that we can fix the vulnerability before it can be exploited in the wild.)
- Good: "Lift does not meet my performance requirements." Bad: "Lift isn't ready for production use."
- Good: "Can you help me understand the way this API should be used?" Bad: "I've only been using Lift for a week, but I would get rid of Lift's DOM manipulation and replace it with String manipulation" or "The behavior this API that's used through the Lift code base should be changed because I don't like it."