#1012  Additional Resources for Contributions
Closed
Andrew Lalis opened 1 year ago

I've been using OneDev internally now for quite a while at my business, and I'm quite satisfied by it, and I'd like to help in improving the project and making it more resilient to the common criticism that's associated with a mostly one-man project that I get when recommending OneDev to others. Their biggest concern seems to always be that they don't want to trust their whole development workflow with a software that's dependent on one person to maintain it even though (in my opinion), that software is of a very high quality.

The thing is, this project is so huge and complex that I'm sure most would-be contributors don't know where to begin. I think we can improve that by doing the following:

  • Adding contribution guidelines.
  • Marking certain issues as "Easy for Beginners", or something of that nature.
  • Providing some form of architectural/design documentation for OneDev as a whole.
  • Improving the existing manual project with some clearer organization of the existing articles, and perhaps a more digestible format for them like VuePress/Docusaurus/etc.
  • Add development instructions for IntellijIDEA, because that tends to be a popular IDE for Java nowadays.

I'd like to help with this in any way I can, but I'd like your input @robin as it is your project after all. The point here is that this project has so much going for it, that I don't want it to be held back in its adoption because it's difficult to develop a community of supporters for it.

Robin Shen commented 1 year ago

@andrewlalis thanks for the suggestions. Several other users also expressed their concerns adopting a one-man project for company use. To address this, I plan to quit my current company and work on the project full time, possibly with help of some other collegues. An enterprise version will be available sharing the same code base, offering enterprise features such as load balance, high availability, etc, as well as providing commercial support.

Features already available in open source version will never be moved back to EE version, and I will continously add features to OS version, including wiki, package management, etc. And it will always welcome external contributors. I will write well-organized user/administration guide for OneDev using Docusaurus soon, and will add development guide of OneDev explaining its architectural design and different parts later.

It might be difficult to use IntelliJ IDEA though, as OneDev's plugin architecture relies heavily on M2E to generate resources and plugin descriptors on the fly. But I will explore more on this.

jbauer commented 1 year ago

It would also be great to have API docs or some sort of documentation in code. For example I had written a groovy script to select the currently logged in user as default value for a custom field. Took me some time until I found SecurityUtils.getUser() and I am still not sure if that is the preferred method to use.

Robin Shen commented 1 year ago

@jbauer yes this is the method to use. Be aware that this will return null for anonymous access.

crash commented 1 year ago

Hey all, I want to add my 2 cents here. Improve docs and attract new contributors is always a good thing, I totally agree with you. Also I can understand that having a single point of failure in Robert isn’t the best overall, but as I said before in other issues, in near 30 years dealing with software (both opensource and commercial) I can say I’ve never found anything with same promptly addressing of bugs and even new feature requests: When I think something (that make sense) could be improved I need just to write it down here (describing it properly) and Robert make it real the day after. If you read the closed issues you can check that it’s happening again and again. It feels like magic ✨ If you have a (even serious) problem with Gitlab CE or even the Enterprise paid license, good luck with the forum or support request. If you go with Gitea as today you can see 1870 open issues and 200 pending pull requests. What I’m trying to say is that when the code quality and the effort is at the OneDev level, being small is the way to be efficient not the opposite.

Fun fact: I’m not a fan o Java and I always try to run anything else on my core infrastructure, but OneDev is too good to not use it.

bufferUnderrun commented 1 year ago

@robin

To address this, I plan to quit my current company and work on the project full time, possibly with help of some other collegues.

You're finaly taking the plunge !! There is some logic deciding to work on it fulltime, so congrat. Quite frankly, i suspected something like this due to your recent commit rate and response time, day and night 😁

Several other users also expressed their concerns adopting a one-man project for company use

As a 4y+ user of OneDev, i used to post issues, send feedback and now subscribing to almost all notifications.

You're project is extremely rock-solid and you're always solving issues at the speed of light. I already talked about you to many threads, persons and companies.

I never felt afraid of this one man project condition. This is usual in OS. Even if OneDev is my main primary tool on which all my work is based : CVS, issue, helpdesk, CI, CD... I've always accept the risk.

An enterprise version will be available sharing the same code base, offering enterprise features such as load balance, high availability, etc, as well as providing commercial support.

That's a game changing for me. Of course, i plan to pay to support you because this tool serve me close to perfection.

But

As soon as you have income, you have a differents priorities than before. Your roadmap can be driven by the money/customers and not the way you want it to go. I hope you will find the correct balance between Enterprise and OS edition.

At last, i will help if you need.

Robin Shen commented 1 year ago

Thanks for all your kind words.

I hope that OneDev go for a different way than other tools such as GitLab. Instead of pursuing more customers, I hope to make existing users happy. Instead of piling more and more features, I hope to polish existing features first. Instead of recruiting others to support, I hope to support users myself.

This means that OneDev will not grow as fast as other tools. This is the reason I rejected some financial investers expecting to get return quickly. I believe that a small and dedicated team focusing on improving the product will give best value to our users, and can feed ourselves as well.

Ilya Vassilevsky commented 1 year ago

The fact that Robin works alone is the biggest obstacle for companies. Bus factor is 1.

We need a GitLab replacement. But if we choose OneDev, move hundreds of repositories in it, and then something happens to Robin, it will be a very unpleasant situation.

I wish best luck to Robin in starting his own company. Like Mitchell Hashimoto's Hashicorp! :)

Unknown commented 1 year ago

@vassilevsky Unfortunately that is a fact of life, but you need to bare in mind any company could turn around the next day and say "we are abandoning this project"

Unknown commented 1 year ago

@robin Be careful here:

Currently OneDev is open source, this means a lot of open source advocates are interested in supporting it. It allows others to contribute to the codebase, if they have the skill and the desire to do so.

If you are trying to avoid becoming Gitlab, remember that an enterprise edition will shell your open source reputation, especially when you state "built on open source". Yes companies want reliability, but making something closed source doesn't make it any more reliable, it just limits who can work on the project and contribute, not only that though, people will stop wanting to donate to fund a project, which is being sold off.

You have to think very carefully, Gitlab tried being open and transparent and has failed, badly, if you follow their footsteps you will just be seen as a knock off bloated java gitlab ripoff, which hopefully will not be true.

Yes, it can be difficult to fund an open source project, what I advice especially before you leave your job is to start a funding campaign to try to get as many people as possible to chip in to help fund development, opencollective or librepay are two methods of doing this. For people like @andrewlalis who would want to use an enterprise edition, I see no reason why they can't sponsor bug fixes, its a strategy open source projects are doing right now which is setting bounties on issues, and the developer(s) who patches it gets the payment.

Bare in mind not to make the same mistake Gitlab did, going open source and proprietary WILL NOT work, it has been tried many times, the number of people using the gitlab FOSS edition is almost zero, they use the free plan of the proprietary edition because "its more convenient".

Unfortunately being one developer, you will not be able to take on massive cooporations, play smart towards a niche market, do not try to take market share away from people like gitlab because you will lose badly and end up destroying the project.

I am Bias as I am a Open Source Developer, however the point still stands, you have to choose a path and stick to it, be aware as soon as you choose to partially or fully close source the codebase, you will lose support from a lot of OSS advocates, it could badly hurt your reputation, so unless a company is offering you a lot of money, I advice sticking to community funding.

This does not mean you can't sell OneDev to companies however, companies love fast pace support, nothing stops you from making companies buy the solution otherwise they do not have support from you, but again this could hurt peoples views as they will feel you are helping companies more than the userbase.

Another idea is you can state in the license that the code can only be used for non-commercial use, this therefore forces companies to pay you to use the code, no matter if it is open source or not, failure to do so could result in a massive lawsuit against them and them losing millions, so no large company will even consider pirating code, whether it is open source or not!

You have a hard choice to make man, quitting your job removes your only reliable source of income, and an enterprise edition which is paid is going into Gitlab territory and you will end up being a knock off. There is way too many proprietary git frontends/servers, you will just be fighting against microsoft and gitlab and fail miserably because you are all alone, not because I doubt your skills.

Good luck man, you will need it, make sure whatever choice you make you consider the downsides of each choice before picking the path for OneDev. I strongly recommend setting up a strong donation base however, I do not know if you have yet or not (because I haven't checked) but I do recommend you update the README stating that OneDev needs funding and link it to opencollective or librepay (or both) so that people can clearly see that the project is in desperate need of funding, be careful not to be too greedy though.

Robin Shen commented 1 year ago

@vassilevsky I am awaring this and looking for some one believing in OneDev future to work together.

@polarian OneDev EE will also make source available in same repository (via a server-ee plugin), so that user can check the code freely if desired. Only that server-ee plugin requires a commercial license.

Frankly speaking, I won't go with funding approach, as that seldomly feeds a team. I also hope that OneDev will not follow GitLab road to become a bloatware. To achieve that, the team should be small and focused, and should not accept external investors expecting quick return, so that we can prioritize polishing existing features over adding more and more half-baked new features...

For the competition, OneDev focuses solely for the on-premise market, while other big players in the market often target both cloud and on-premise market. Using a cloud optimized software for on-premise market has its inherent drawbacks, for instance the software may have some undesired social features cluttering the UI, it might be more difficult to set up and maintain (trying to set up GitLab HA for instance), etc.

Unknown commented 1 year ago
@robin by funding I meant donations. I do not believe investors is a good idea either as they only care about the money, not the product.

Donations however are just to support you in development, they get nothing in return other than supporting a project they love, its very hard to work on a open source project without donations.

Will the EE plugin allow non-commercial use without licence?

By the sound of it you will not accept PR or contributions from the community, is this correct?

Robin Shen commented 1 year ago

I mean donations can seldomly feed a full-time team.

It is a good idea to entitle free license for non commerical usages, I will consider that seriously.

OneDev OS will always welcome external contributions, if it does not belong to any EE features. Let's discuss here to see if the contribution can be accepted before you decide to go further. Features in OS version (both developed by me or by contributors) will never get into EE version.

Unknown commented 1 year ago

Does OneDev currently support donations though?

Commerical entities which plan on making money from using OneDev should be forced into paying, so they can give back some of their profits to you so that you can continue to develop OneDev. But especially people who are hosting open source projects, or ones which are non-commercial, they shouldn't be forced to cough up what little money they have to be able to use OneDev fully.

I thought that EE will be built on the open source edition, as it will be a plugin to add more features to OneDev, thus any changes to the open source codebase will also reflect the EE codebase?

Robin Shen commented 1 year ago

OneDev never tried that. This is my observations over many open source projects. Of course any changes in OS version will also be reflected in EE version. OS version is of MIT license, and it allows anyone to build commercial products using the code base, including OneDev EE itself.

Unknown commented 1 year ago

It would be useful for OneDev to set up a donation system to allow for people to support the codebase, this will hopefully help with your dream of being able to work on OneDev full time instead of as a side project, having a small amount of donations coming in at the least is still better than nothing, and as OneDev grows its community will as well.

I assume for EE you will be very careful about when you package a new version for it, open source editions if a major bug is discovered in the latest build it is not a massive deal because nobody is profiting from using OneDev, however if you are selling EE licenses you are ensuring that the product you are giving is reliable and will withstand the abuse codebases get within the workspace. I assume this will also mean that EE will stay a few versions behind the open source edition while the open sourcers test out new features to see if they are reliable, and only then push it to EE.

Robin Shen commented 1 year ago

Hmm... I do not plan to set up donation system for OneDev. Financial status is good for now, as all my spent is my spare time, with a single EC2 instance running code.onedev.io which is not very expensive.

I guess what you mean is maintaining EE LTS version together with a community feature version. That is also something I am considering. Thanks for the idea though.

Unknown commented 1 year ago

@robin out of curiosity, how much of the VPS does OneDev use, is the load average high? Is the memory and storage capacity got a good amount of extra to allow OneDev to grow?

I have not completely read the docs but it would be cool to have some sort of "baseline" vps to say "this is what you can run onedev on at its cheapest" and then "this is what we recommend to give you good performance" for example, I believe the system specifications needed is in the documentation however, I believe I have seen that already but can't remember too well.

Unknown commented 1 year ago

Out of curiosity, how much storage does all the currently repos on code.onedev.io currently use up so I have a good reference what large git projects need in terms of storage?

bufferUnderrun commented 1 year ago

I maintain severals OneDev instances which work is most consisting of :

  • restarting docker container with the latest image
  • deploy agent
  • checking backup/log
  • being support for some job/config to coworkers

I have a personal instance for my opensource projects, the others for my company. The both are :

  • on-premises, a very important point for us
  • privates, internal use only
  • our central tool to dev and deploy ours softs

But we do not and will never propose onedev hosting for paying customers : even if onedev is opensource, the money from its exploitation must be the earn by robin.

Unknown commented 1 year ago

@robin that is quite good, how much does the vps have in total?

Unknown commented 1 year ago
That is still quite a lot, you sure there is not a cheaper solution?
Robin Shen commented 1 year ago

Docs reorganized, and also IntelliJ IDE is supported now:

https://docs.onedev.io/category/development-guide

Robin Shen changed state to 'Closed' 1 year ago
Previous Value Current Value
Open
Closed
issue 1 of 1
Type
Question
Priority
Normal
Assignee
Issue Votes (0)
Watchers (7)
Reference
onedev/server#1012
Please wait...
Page is in error, reload to recover