banner
lencx

lencx

https://github.com/lencx

Traffic Password: Some Thoughts on ChatGPT Open Source

This article I don't want to involve too much technical description, I will write a separate technical article later to talk about the ChatGPT project.

Background#

I have been studying Tauri-related technologies for the past six months and have written some scattered articles. I know some functional APIs and have also read some source code (because pure documentation and issues are not enough), but I have never made a real usable project.

Simply put, Tauri is a cross-platform desktop application packaging solution (macOS, Windows, Linux, etc.). Its mobile packaging (Android and iOS, etc.) has also released an alpha version (Announcing the Tauri Mobile Alpha Release), and its production version will be released soon.

Tauri is designed for security, and all its architectural designs revolve around security. In Tauri's view, packaging external links is an unsafe thing and functionality will be restricted. So recently, I have been studying how to elegantly or in a better way wrap remote URL links. Because this is of great significance for quickly desktopizing links.

It is in this context that ChatGPT suddenly became popular on my friends' circle. At that time, I didn't pay much attention to it, thinking it was just another chat tool (after all, it starts with "chat"). After a few days, more and more people in my friends' circle posted about it, and I felt that things might not be that simple. So I looked into it and found out that this thing is not simple at all, it can solve some professional problems, such as: writing code, fixing bugs, writing novels, acting as a girlfriend to chat, and acting as a second search engine, etc. (accuracy still needs to be improved...).

At this point, I had an idea. This thing is so powerful, but it only has a web version. What if it is combined with Tauri? It happens to be in line with the direction I have been studying recently, which can allow me to show my skills and verify my recent research and ideas (at that time, my mentality was still pure, and I didn't think about riding the wave of popularity).

Just do it#

Daydreaming won't bring you anything.

So I created the repository on the afternoon of December 7, 2022. Because I have written so many demos and Hello World, I am very familiar with it. It took me about four to five hours to complete the initial version, package the URL of ChatGPT into a Tauri desktop application, and add some menu items and automatic updates. Then, in the process of drawing the logo, I spent another two to three hours (almost as much time as writing code), although it is small, it is very important because it is the soul of your product.

I believe that doing a project also requires a product mindset. Here, I want to talk about my understanding of products:

  • Product Loop: It can be small, the functionality can be simple, but it must form the minimum loop to ensure its usability (the core functionality of the product can be used normally).
  • Speed is important: Development speed, update speed, and problem response speed should be fast because it can help you seize the first wave of users (accumulating seed users is important, it can form word-of-mouth and help the product spread again).
  • User experience: This requires careful consideration. Although you are a developer, you are also a user. So without a product, you are the product; without design, you are the design (you are the user, and you may even understand the user better, learn to make trade-offs).
  • Product plan: Your plan for the future direction of the product, what cool features to add, needs to be clearly written in the documentation. It is like drawing a pie for users, which can impress some users who want to follow it for a long time (note: drawing a pie does not mean unrealistic ideas, but plans that can be realized but temporarily cannot be implemented due to time constraints).
  • Differentiation: Because when you find an opportunity, others may have already started harvesting in it, so the differentiation of product features will be your breakthrough (being unique when others don't have it is an advantage).
  • Stability: The initial architecture of the product is very important, it may accompany it for its entire life. Refactoring is sometimes not realistic because it involves many historical burdens, data compatibility, and manpower costs, etc. (scalability is important).

What is the core functionality?#

I have been talking about the core functionality all the time, what is the core? Actually, it is what problem your product is intended to solve. If you don't understand the problem you want to solve, you may end up doing everything. Taking my project as an example, its core functionality is one thing, desktopizing website URLs. So I have completed the core functionality by packaging URLs into cross-platform desktop applications. Once you grasp the core, you can make choices about the functionality, and the time saved from making choices is speed.

Why focus on user experience?#

User experience is very important, in my opinion, it is second only to the core. It directly affects the user's feeling of using the product. Once the first impression is missed, the user may not be able to be recovered. Once we have the core goal, we need to consider how to build functions that align with user behavior around this core. It is inevitable to encounter problems that are difficult to avoid, but don't compromise by using errors for things that should not be done for now, sometimes the cost of trial and error may be high. We are users ourselves, and you can think about the problem from the perspective of both a developer and a user. As a programmer, logical thinking is important, and product thinking is equally important.

Why iterate quickly?#

Rapid iteration is to let users see the direction in which your product is constantly evolving, and it is also to increase stickiness with users. Small steps and fast running are actually to solve the part that was abandoned when making choices about the core functionality, they are not that important during the pioneering stage (in the face of life and death, money is just something external). But once there is a carrier for the core functionality, they become flesh and blood, and can make the product gradually become full.

Why respond quickly?#

During the product development process, various bugs are difficult to avoid. The speed of your response to users directly determines whether they stay or leave. It is best to solve the problems that can be solved in a short period of time, and if you can't solve them, explain the reasons.

Why stability?#

This question is also a cliché, and it is easy to say. But when it comes to actually doing it, in front of speed, many things will be abandoned (I temporarily handled it that way, and then I will change it. As a result, the more code I write, the harder it is to change...). I made this fatal mistake this time because I didn't need a very complex functionality in the early stage, so I didn't consider the structure of the data too much. As a result, in the latest version upgrade, I modified some fields without doing data compatibility exception handling. This caused many users to crash directly and unable to start the program after upgrading. I spent a lot of time explaining this issue in the issues, and later I provided a solution in the README.md of the project, but not all users will see it. If they leave because of my mistake, it is indeed a bit regrettable.

Summary#

All of the above are interrelated and progressive. Taking big steps does not necessarily mean being fast, so it is most important to be steady and take each step well.

Riding the wave is not shameful#

On the crest of the wave, there is an invisible hand pushing you forward. Opportunities need to be seized, it can make you achieve twice the result with half the effort.

ChatGPT is a hot topic, and it can be said to be a hot topic that has ignited the global programmer community. Of course, it has also extended to various fields, causing OpenAI's servers to crash frequently. As a popular project, projects derived from it can naturally attract much more attention. So this is the trend. Once this trend is combined with open source, it can harvest a wave of ⭐️ Stars. Stars are still attractive to open source programmers because they are difficult and easy to obtain (because projects may not be well-known just because they have technical content).

I have been in front-end development since 2015 and started learning programming. I registered a GitHub account at that time. Then, intermittently, I started my open source career. It took me five years to go from 0 to 18 followers. And on June 29, 2021, I got my first 100-star project, which took me nearly 6 years. But this time, with this project, I gained more than 300 stars in five days. The sum of all my projects in the first five years is not even a fraction of it. What I want to say is that riding the wave is not shameful, but persistence is more precious. Because the time required for quantitative change to qualitative change is huge, and no one knows how long the darkness before dawn will last.

Tips for riding the wave#

All social content dissemination is similar, including open source projects. Seed users in the early stage are very important, they can push you, who are unknown, into the spotlight. Once you become the focus, natural traffic will flow to you. In the case of open source projects, it is GitHub Trending, this trend list will become an important fulcrum for you, it will leverage natural traffic (please ignore those with built-in traffic, the power of fans is too strong). Based on my experience, the freshness of the project and the attention (stars) attracted in a short period of time are indicators of being listed. So many people will try to get stars, but I think open source needs the feeling of being recognized, and the stars obtained by brushing cannot bring genuine happiness. So the storm may be caused by the flapping of a butterfly's wings. This is also the fulcrum to move the earth. Although freshness, attention, etc. are important, strength is still the most important thing to speak with.

Conclusion#

As a programmer, I am proud because even if you don't go out, you have the power to change the world with your own hands. Even if it cannot be achieved, it can be set as a goal to strive for.

Conclusion#

In the final conclusion, I want to share a few screenshots as evidence of my writing this article. The power of persistence is unimaginable. So never try to define yourself, you are infinite possibilities.

  • After 5 years of open source, I gained 18 followers and almost no stars
    chatgpt-1
  • The first 100-star project I gained after 6 years of open source
    chatgpt-2
  • ChatGPT project gained over 300 stars in 5 days
    chatgpt-3
  • The last two screenshots are from my current GitHub homepage, which will be the starting point for my next journey
    chatgpt-4
    chatgpt-5
Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.