open source
Here I want to share my understanding about open source technology and our team’s goal with it:
Firstly, People has many choices in Open source world. There’s bunch of excellent frameworks which can save us a lot than develop similar function by ourselves from scratch. Like we can develop a website quickly with Django, which even not require us design backend database. Maybe its function is simple but why not use them directly if it fit us.
Microsoft software is good. Maybe because it’s free for us and many company in China in the past few years, many users and developers are binding to it, includes myself. For example, SQL Server might be the only choice in Microsoft world while many famous company, they are new, grow very fast, have strong creative ability and store huge data in other storage. Think out of Microsoft, there are so many talents who contribute to free software. With the help of Internet, their great ideas/designs/frameworks are widely used all around the world.
Secondly, Choosing open source can save money from purchasing license of OS, database, development tools. This is not the mainly reason to chose it but free is very attractive.
Using open source technology is our team’s long goal. Hopefully we can have our system built by great and robust open source framework, running in free OS and cheap hardware eventually. But Rome is not built in one day. My idea is as the following:
- “Using open source” is mostly a way to achieve our business goals, not as much a goal by itself.
- Continue to provide excellent system and service to user
User care more about whether the system is stable, easy to use, efficiency than what kind of technology it use. We cannot postpone user’s requirement just because we are planning or learning some new technology. They are transparent for user.
- Learn from current system
Open source technology is just a kind of technology, tool or platform, not everything. Bad design and practice plus the most excellent tool or framework equal to bad system. Thinking about what aspect Currently DM not do well and how to improve it. What process we using is good and what is not that good can help us develop a robust, maintainable and stable system with new technology finally.
- Master business from current system.
We know its code is not easy to read, few comments in code, few Design doc left. Many tricky logic there and some of them even nobody can understand them today. When we use open source to refactor them, we are not just translate them. We implement the same requirement by new design. So we should understand what function currently system provide.
We added lots of doc in recently months. This is good and we need to continue to do it. Ideally we have everything in document.
- Make currently system stable to reduce maintenance cost. So we have more time to focus on open source.
- Team Accumulate experience by start some small or independent service.
Rewrite Missing report with Python and deploy it in Linux is a example: we have design for it and The design is the same No matter what technology is selected. Refactor it can bring obvious benefit: Improve its efficiency, maintainability and expandability. At the same time team learn something about open source and how to maintain system in Linux from it. So we can support user’s requirement and at the same time start with some module. This way we build on our successes and gain expertise and confidence to make the next steps. Just as important, this approach allows us to make progress while fully supporting current business & operation needs.