I'll bite, but I actually authored two tools I use to manage personal / open source projects. So while I can't fit your question exactly, I'll share what's worked well for me over the past years.<p>Break your project out into open source components. This gives the community a library, which makes it possible (but not guaranteed) to share responsibility to it.<p>It also keeps things fresh, you can keep the core of your personal project closed, so there is less moving parts to track, and hopefully less dead code on it. I’ve many “personal projects” end up getting mothballed amounting to time wasted due to me just chucking all my code in one repo and not breaking out components / pulling in the right libs when I could.<p>I've participated on a lot of open source projects over the years, so I’ve developed a workflow to organize the minutiae. There are times where I won’t re-open a project for a few months, so I need to be able to “snap back into” a familiar environment.<p>- tmuxp [1], a session manager for tmux. It allows using a .tmuxp.yaml file [2] to load a project workspace in combination with a bootstrap file [3] to automatically launch a tmux environment with tests, documentation, etc. I mimic this workflow in all my other projects.<p>It has worked for me across OS X, Linux, FreeBSD. On local and ssh machines. No IDE required.<p>Passively, another thing I do is document very well. If its python, I keep docstrings, autodoc for API generation and sphinx everywhere. Even personal projects I do at work have sphinx docs for other developers to peruse. I’m consciously doing everything possible to be helpful to other programmers on the project. Give them API docs, examples, as much as you can.<p>- vcspull [4] is a tool I use to declaratively manage projects in a yaml file [5]. When I want to update I just type ‘vcspull project1 project2 project3’. What’s nice is being able to pattern match projects I have, ‘vcspull django-\*’ to grab django extensions.<p>On projects I patch, I add my fork as a remote to keep it in sync.<p>So the above are my taste. YMMV. Here are some other things:<p>For C/C++ projects / libs, stuff like CMake [6] for build systems is great. Gets me a build that finds libs on OS X, FreeBSD and Linux. I’ve ported windows only projects in SDL2 to work across all 3 easily thanks to it.<p>There are other mindset things, try to strike a balance between being opinionated in your own flow (as I am), because you’re going to have another person who swears to Eclipse, then another one to Atom, you can’t make everyone happy. Invest in things universally helpful (api documentation, tests, linting), they end up helping you in the end no matter where your project ends up: Even if you wrote stuff, if you don’t document, you’ll be at a loss when you wrote stuff a year ago “Did I really write that”? With other developers, they can't read your mind, they keep into the grind faster when you explained what your project does and what your code quality / expectations are.<p>[1] <a href="https://github.com/tony/tmuxp" rel="nofollow">https://github.com/tony/tmuxp</a>
[2] <a href="https://github.com/tony/tmuxp/blob/master/.tmuxp.yaml" rel="nofollow">https://github.com/tony/tmuxp/blob/master/.tmuxp.yaml</a>
[3] <a href="https://github.com/tony/tmuxp/blob/master/bootstrap_env.py" rel="nofollow">https://github.com/tony/tmuxp/blob/master/bootstrap_env.py</a>
[4] <a href="https://github.com/tony/vcspull" rel="nofollow">https://github.com/tony/vcspull</a>
[5] <a href="https://github.com/tony/.dot-config/blob/master/.vcspull.yaml" rel="nofollow">https://github.com/tony/.dot-config/blob/master/.vcspull.yam...</a>