About these 2 years, do open source project some feeling

Time:2021-5-8

For two years, an open source project has been iterating a little bit from the initial idea, and now it has a little bit of users. From a project at the beginning, it has become a micro ecosystem with micro service components and gateway components. Along the way, it has really suffered a lot. There are doubts, encouragement and ridicule.

Sometimes I really want to stop and give up the maintenance. The project is just hanging there. If you like, just have a look and learn from Jiang Taigong. If you want to take the bait, I’ll be relaxed. But I always feel a little pity. After all, I spent a lot of effort to do it.

Speaking of why I want to do this project, I may not remember clearly. I only remember that I didn’t intend to do it at the beginning. I just wanted to verify my understanding of the principle of springboot, so I tried to implement a similar framework myself. When I realized the basic functions, I was reluctant to delete the code, so I put it on GitHub for hosting. At that time, I had no idea of open source, that is, I took GitHub as a network disk to store the code. No open source protocol, no readme, even the code structure is a mess.

This code has been saved in this way, but every time I am free, I can’t help thinking in my mind, where to write it is not good enough, where to optimize it, whether the directory structure can be more elegant, and whether the details can be polished. Every time I think of something, I will go to maintain it, and then enjoy it, Let this code become more and more robust, so I have the idea to share with you. So I started my official website and began to share it with some technology groups, but the feedback I got was not very friendly, almost totally sarcastic and questioning. Most of the taunts are focused on [no new ideas, personal projects are too junk, etc.]. Every time I face these taunts, I think about how to make everyone accept and be willing to try. Instead of reading an article introduction, I immediately deny it. So I try my best to optimize my code and add some new features (maybe not new features, because each feature is not new), Projects with this feature can be found in the world.)

That’s it.

  • I changed the controller to a declarative API,
  • We developed [semi ORM] to save the trouble of integrating mybatis,
  • Provide annotation parameter verification, annotation redis lock,
  • The exception of the server side is also encapsulated, so that it does not have to return 500, but a JSON to avoid adding try catch to each interface.
  • At the same time, the original AOP, IOC and declarative transaction are still retained

It can be said that the completion of a set of small, a project can provide some function points commonly used in the development of small and medium-sized projects. But the reaction was general. No one cared. No one cared what it was. Every time we shared it, it was a spray meeting. However, there are also some rational people, they will rationally say some of their own views, which has given me great help, and I am very grateful to them.

When it comes to this stage, I can also say that it’s hard to ride a tiger. I’ve invested so much and I can’t give up. I have to stick to my head and move forward. I keep thinking about it. What’s the reason why people are reluctant to try? Maybe the label of “personal project” itself is the original sin, or maybe I don’t provide enough ecology, so I made the following plan:

  1. Once again to the project weight loss, lose some in my ability, can replace the tripartite dependence
  2. Develop micro service components and gateway components to enrich the ecosystem
  3. Once again to optimize the documents, official website, try to reflect that this is a project with the heart and professional sense

Therefore, Tomcat is gone, and httpserver is directly adopted (tested on jdk8-jdk14, no problem). The microservice component without registration center has been developed, and the gateway has been put on the agenda. At the same time, the official website and documents are becoming more and more perfect. I even found a professional person to design the logo (I think it’s very good-looking)

After two years, these have become a reality. With the micro service component, the gateway component, and its own logo, the official website is much better than before, and the documents are more refreshing and concise than before.

At the same time, there is another problem. The high integration of the project makes the scalability insufficient. For example, when httpserver is not good, can we switch to Tomcat? Can load balancing plug in and plug out the fuse of microservice, or even let users develop it by themselves? Can users develop their own components? So, in the next period of time, I started the optimization in this direction. So far, it has been realized, but there are still some problems

  • The Tomcat launcher has not been optimized yet, so it can only be started with the default Tomcat configuration
  • If you don’t want to use httpserver, you can only switch to Tomcat launcher at present, but users can develop the launcher by themselves. I provide the API
  • Although the fuse is pluggable, it has not developed its own fuse
  • Load balancing is pluggable. At present, only two algorithms are officially provided [ordinary random, ordinary polling]
  • Although users can develop their own components, there are still too few official components

Next, I will focus on the optimization of these points. As for the more long-term plan, it must be infinitely close to the enterprise level development, so that it can be competent for large-scale projects.

Over the past two years, continuous optimization, trial and error, and various kinds of ridicule have become a habit. In a word, I wish I knew what I was doing. It doesn’t matter if no one was interested in it. At least I can learn something and experience something from it. It’s also a kind of value, just like returning to my original heart, At the beginning, I just wanted to verify my understanding of the principle of springboot. I just enjoyed it and let it go.

Oh, by the way, this project is called Martianhttp://mars-framework.com