Below are my personal thoughts on Hibernate development work, which are what make Hibernate popular so quickly.
1. Quick version release
Maintain active development speed, frequently release versions, and even develop from the previous version to the next version within a few days. This is the best way to keep the software away from bugs, and it can also make users feel relieved and convinced that Hibernate is very active. In addition, there is also a great advantage in doing so, which is to discover which functions are what users really need.
2. Regression test
I think the entire Java community must attach great importance to automatic regression testing. If the software's functions and design are relatively largely modified, then a comprehensive test suite is really important for the software maintainability and stability. We should have the awareness that if a new feature of the software is not regressed, we shouldn't do it at all.
3. Make a function the best
Either don’t do it, and you must do it your best. We don’t do the best functions we can’t do, just throw them to other software to do.
4. Avoid over-design
It is better to waste a lot of time and energy on abstracting software functions and expanding software flexibility, it is better to spend more time solving the practical problems faced by your users! Just be simple! It's OK to run the software, don't try to solve problems that your users don't care about at all. Even if your software design is not elegant enough, it doesn’t matter, it’s still the initial stage anyway! In the future, the issue you should pay attention to is to create useful functions in a timely manner.
5. Centralization
At least you have already made the software profile before you need to make a vote. Software development needs to be led by one or two enlightened people, which can ensure the consistency of software development without too much disagreement, and can ensure that the development team concentrates its efforts to achieve the best functions. I think the biggest risk of OSS software is that it has disagreement and the stall is too big, and in the end nothing is done.
(Translator's note: I agree that all successful OSS software is released after a great man has made the software, and then everyone adds functions to it, and continues to make progress under the leadership of the great man. OSS software that lacks great man is not very successful, such as Mozilla)
6. Documentation
Nothing is more important than documentation. If your users don't know that your software has such a function, it means that there is no such function. You can simply remove it to save the complexity of the source code.
7. Avoid standardization
Good standards can bring about interoperability and portability of software, while bad standards can suffocate software innovation! "Supporting the XXX standard" is not a real user need at all, especially when this XXX standard is formulated by an expert committee that does not plan its own politics. (Translator's note: Could it be that Sun, IBM and other big names?) The best software is produced in the process of continuous attempts, continuous errors, and continuous accumulation of experience. In fact, standards are often closer to user needs.
8. Run Hibernate within 10 minutes
Potential Hibernate users downloaded Hibernate and it was impossible for them to spend half an hour installing, configuring and troubleshooting for the first time. They have long lost their interest in Hibernate. Our slogan is that new users (assuming they have enough JDBC knowledge) run the Hibernate demo within 5 minutes, and they can write the simplest Hibernate program in "Hello World" style within 1 hour and run it normally.
9. Developers’ sense of responsibility
Users are always inevitably encountering problems, and the development team has the responsibility and obligation to provide assistance. The user let us know about the vulnerability in the document, and the user let us know about the small bugs in the test case. In addition, no users come to use our Hibernate, what do we do? Isn’t it a waste of time!
There is a joke about bugs: users don't mind finding bugs with new features (translator's note: Windows users seem to be like this), as long as you can quickly change the bugs. "Sense of responsibility" means that bug fixes should be within 1 week. From receiving bug reports to submitting bug fix codes to CVS, it is an ideal goal to achieve an average of about 24 hours.
10. Easy to use, updated wiki pages
1. Quick version release
Maintain active development speed, frequently release versions, and even develop from the previous version to the next version within a few days. This is the best way to keep the software away from bugs, and it can also make users feel relieved and convinced that Hibernate is very active. In addition, there is also a great advantage in doing so, which is to discover which functions are what users really need.
2. Regression test
I think the entire Java community must attach great importance to automatic regression testing. If the software's functions and design are relatively largely modified, then a comprehensive test suite is really important for the software maintainability and stability. We should have the awareness that if a new feature of the software is not regressed, we shouldn't do it at all.
3. Make a function the best
Either don’t do it, and you must do it your best. We don’t do the best functions we can’t do, just throw them to other software to do.
4. Avoid over-design
It is better to waste a lot of time and energy on abstracting software functions and expanding software flexibility, it is better to spend more time solving the practical problems faced by your users! Just be simple! It's OK to run the software, don't try to solve problems that your users don't care about at all. Even if your software design is not elegant enough, it doesn’t matter, it’s still the initial stage anyway! In the future, the issue you should pay attention to is to create useful functions in a timely manner.
5. Centralization
At least you have already made the software profile before you need to make a vote. Software development needs to be led by one or two enlightened people, which can ensure the consistency of software development without too much disagreement, and can ensure that the development team concentrates its efforts to achieve the best functions. I think the biggest risk of OSS software is that it has disagreement and the stall is too big, and in the end nothing is done.
(Translator's note: I agree that all successful OSS software is released after a great man has made the software, and then everyone adds functions to it, and continues to make progress under the leadership of the great man. OSS software that lacks great man is not very successful, such as Mozilla)
6. Documentation
Nothing is more important than documentation. If your users don't know that your software has such a function, it means that there is no such function. You can simply remove it to save the complexity of the source code.
7. Avoid standardization
Good standards can bring about interoperability and portability of software, while bad standards can suffocate software innovation! "Supporting the XXX standard" is not a real user need at all, especially when this XXX standard is formulated by an expert committee that does not plan its own politics. (Translator's note: Could it be that Sun, IBM and other big names?) The best software is produced in the process of continuous attempts, continuous errors, and continuous accumulation of experience. In fact, standards are often closer to user needs.
8. Run Hibernate within 10 minutes
Potential Hibernate users downloaded Hibernate and it was impossible for them to spend half an hour installing, configuring and troubleshooting for the first time. They have long lost their interest in Hibernate. Our slogan is that new users (assuming they have enough JDBC knowledge) run the Hibernate demo within 5 minutes, and they can write the simplest Hibernate program in "Hello World" style within 1 hour and run it normally.
9. Developers’ sense of responsibility
Users are always inevitably encountering problems, and the development team has the responsibility and obligation to provide assistance. The user let us know about the vulnerability in the document, and the user let us know about the small bugs in the test case. In addition, no users come to use our Hibernate, what do we do? Isn’t it a waste of time!
There is a joke about bugs: users don't mind finding bugs with new features (translator's note: Windows users seem to be like this), as long as you can quickly change the bugs. "Sense of responsibility" means that bug fixes should be within 1 week. From receiving bug reports to submitting bug fix codes to CVS, it is an ideal goal to achieve an average of about 24 hours.
10. Easy to use, updated wiki pages