Skip to content
This repository has been archived by the owner on Dec 20, 2024. It is now read-only.

[Roadmap] Golang Refactoring Plan of the Whole Dragonfly Project #346

Closed
allencloud opened this issue Jan 23, 2019 · 12 comments
Closed

[Roadmap] Golang Refactoring Plan of the Whole Dragonfly Project #346

allencloud opened this issue Jan 23, 2019 · 12 comments

Comments

@allencloud
Copy link
Contributor

allencloud commented Jan 23, 2019

Why to refactor Dragonfly with Golang?

Dragonfly team wishes to refactor Dragonfly project with Golang. The following reasons tell why:

  • build Dragonfly with API of more scalability and more powerful functionalities;
  • build Dragonfly with a cloud native language. Golang has been used widely in cloud native area. Building Dragonfly with Golang will bring lots of convenience to attract more cloud native developers and make Dragonfly to integrate more cloud native projects;
  • Build Dragonfly with a unified programming language. Dragonfly was built by Java, Python and Python when it was born. Mixture of programming will bring no benefit for maintaining it.

This issue and its sub-issues are managed by GitHub project: https://github.com/dragonflyoss/Dragonfly/projects/1

What to do to refactor Dragonfly?

Refactoring Dragonfly means that there are huge work to do for Dragonfly community. During the refactoring period, Dragonfly team emphasizes not only the code-related work, but also each of other things, which are needed for a successful cloud native open source project, such as well-designed architecture, sufficient quality guarantee, well-written kinds of documents and so on.

To be specific, Dragonfly team takes the following aspects as the urgent one to be high priority. However if you feel that other aspect also plays a big role, please do not hesitate to comment to request addition:

DFGET

dfget is the client of Dragonfly's Client/Server Architecture. It is called by dfdaemon and used to interact with supernode of Dragonfly.

For more details about dfget's Golang refactoring, please refer to another issue .

P.S. dfget is built by golang currently, while the interact way with user and its calling API is not so ready in terms of scalability.

For more details about dfdaemon's Golang refactoring, please refer to another issue dfget refactoring details.

DFDAEMON

dfdaemon is the proxy for container engine's image pulling requests. And it calls dfget to distribute images from supernode.

SUPERNODE

Supernode is the brain of Dragonfly. It takes over the image CDN from remote registry, and schedules peer node according the actual situation of themselves. In addition, flow control, security guarantee are also what it is responsible for. And supernode is also supposed to de designed with HA(High Availability).

For more details about supernode's Golang refactoring, please refer to another issue Supernode refactoring details.

Test

Quality is also taken serious when refactoring Dragonfly. And it is one kind of continuous work which needs persistence.

For more details about Dragonfly's test, please refer to another issue dragonfly testing details.

Document

Dragonfly Document is written, drawn, memorialized representation of all things about Dragonfly. For those who are generally interested in Dragonfly, README.md of this repo is sufficient. While for end users, all details contained in /docs is the best guide all should have. And for developers, contents in Developer Guide part is that all need.

So, all the things above are essential for documents part.

Tool Chain

Tool Chain part makes Dragonfly more general and more usable. For example, how to integrated with Harbor, deploy Dragonfly with Helm in Kubernetes, Support integration of Dragonfly and Prometheus, create a dashboard of Dragonfly to monitor for users and so on.

@TG1999
Copy link

TG1999 commented May 11, 2019

Hi I will like to work on this project in this summer can you explain me a little more about this ?

@allencloud
Copy link
Contributor Author

Hi I will like to work on this project in this summer can you explain me a little more about this ?

Thanks for your interest. @TG1999
We do really need your participation into Dragonfly.

We have all details on this GitHub repo, docs, roadmap, refactoring plan, use cases and so on.
I recommend that you can have more understanding on Dragonfly. In the procedure, if you have any questions, please do not hesitate to file an issue to tell me.

In addition, if you have adopted Dragonfly, could you help to finish your details in dragonflyoss/dragonfly#219. Thanks a lot.

@TG1999
Copy link

TG1999 commented May 12, 2019

I want to work on this project as a part of Alibaba summer of Code, So any kind of specifications regarding to that. I am a college student I don't use it for any organization.

@allencloud
Copy link
Contributor Author

@TG1999 Thanks you greatly for participating Alibaba SoC.
The following link if for Alibaba SoC: dragonflyoss/dragonfly#526.
Please take a look if it meets your interest. In addition, please feel free to get involved widely. In addition, have you ever entered the chatting group of Dragonfly, which is described in dragonflyoss/dragonfly#291.

@xiaoerlaigeid
Copy link

我对测试这部分比较感兴趣,之前也做过一些测试床的工作,想问下我该怎么入手呢?看了下test的issue,是要在暑假把所有的工作都完成吗还是说先写自己预期工作?

@allencloud
Copy link
Contributor Author

allencloud commented May 28, 2019

我对测试这部分比较感兴趣,之前也做过一些测试床的工作,想问下我该怎么入手呢?看了下test的issue,是要在暑假把所有的工作都完成吗还是说先写自己预期工作?

Could you help to write a test framework for Dragonfly? And you can talk to us via dragonflyoss/dragonfly#291 for more details. @xiaoerlaigeid
The testing details plan is here: dragonflyoss/dragonfly#352.

@Manas-kashyap
Copy link

I want to work on this project in summer of code , i have woorked before on docker and with golang .

@Shuenhoy
Copy link

Shuenhoy commented Jun 5, 2019

Are you interested in a Rust version of this project or some rust components of this project? I am wondering whether this could be a project of Alibaba SoC.

@allencloud
Copy link
Contributor Author

Rust version of this project or some rust components of this project

I am afraid we have not planed for this. We are trying to make it implement all project with Golang. @Shuenhoy

@allencloud
Copy link
Contributor Author

I want to work on this project in summer of code , i have woorked before on docker and with golang .

@Manas-kashyap Welcome. I think we have the guidance for Alibaba Soc. You can follow that to do plans. If you have any question, please feel free to tell me.

@Shuenhoy
Copy link

Shuenhoy commented Jun 5, 2019

Rust version of this project or some rust components of this project

I am afraid we have not planed for this. We are trying to make it implement all project with Golang. @Shuenhoy

That's OK. I will try to find out what I can do with Golang then.

@allencloud
Copy link
Contributor Author

Since the Golang refactoring has finished, I think I can close it.
Honestly speaking, it is a big step for Dragonfly. Thanks for your work. @starnop @lowzj and some other important contributors. 🌷

@allencloud allencloud unpinned this issue Aug 20, 2019
sungjunyoung pushed a commit to sungjunyoung/Dragonfly that referenced this issue May 8, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants