<p>A more generic approach would be use a separate virtualized environment for each project, see <a href="/questions/tagged/virtualization" class="post-tag" title="show questions tagged &#39;virtualization&#39;" rel="tag">virtualization</a>. That could be either:</p>

<ul>
<li>a container image - more lightweight, faster and definitely more popular these days, see <a href="/questions/tagged/containers" class="post-tag" title="show questions tagged &#39;containers&#39;" rel="tag">containers</a></li>
<li>a virtual machine (VM) image, slower and a bit more heavier to maintain than containers</li>
</ul>

<p>You'd have all the project dependencies (IDEs, libraries, tools, etc) installed inside the virtualized environment, not on your system itself. </p>

<p>You'd need to create/bring the project's corresponding image on your machine when you start working on it and you can delete or save it for later re-use on some external storage when done. A shared artifact respository would be recommended as storage if more than one developer can work on these projects.</p>

<p>A huge advantage of this approach is that such virtualized environments play really well with automated CI/CD pipelines, in true DevOps spirit, helping to minimize/eliminate the differences between the development and staging/production environments.</p>

<p>Depending on the programming language and/or the supporting development tools being used on a particular project you may have some more specific approaches/alternatives. For example <a href="https://docs.pipenv.org/" rel="nofollow noreferrer"><code>Pipenv</code></a> or <a href="https://virtualenv.pypa.io/en/stable/" rel="nofollow noreferrer">Virtualenv</a>/<a href="/questions/tagged/virtualenv" class="post-tag" title="show questions tagged &#39;virtualenv&#39;" rel="tag">virtualenv</a> can be used to obtain such isolation for Python projects. But these solutions are typically not usable in other contextes.</p>

CC BY-SA 3.0
2018-04-29T17:43:30.037Z
2018-04-29T17:43:30.037Z
Dan Cornilescu
<p><a href="http://microservices.io/" rel="nofollow noreferrer">http://microservices.io/</a></p>

<p>This website explains that microservices are not the holy grail but gives an impression how it could be implemented and how it could be useful.</p>

<p>Regarding the question:</p>

<blockquote>
  <p>Best way to isolate programming projects?</p>
</blockquote>

<p>there is no one-size-fits-all. It depends on the goal. If your company is commercial then the most important thing is that new features while be added. So a monolith would be good first. If issues occur one could apply the cheese-slicer method and extract the problematic functions into microservices. The most important thing is to get it to the customer as soon as possible.</p>

CC BY-SA 3.0
2018-04-29T15:46:55.497Z
So you do not use a Version Control System (VCS)?
030
CC BY-SA 3.0
2018-04-29T16:35:26.120Z
@ACKmySYN Could you include your comment in the question and remove the comment? I think that it would really help if you extend your question.
030
CC BY-SA 3.0
2018-04-29T14:42:43.103Z
2018-04-29T14:50:09.833Z
2018-04-29T14:50:09.833Z
030
<p>Not sure if this is the best place for the question but I have multiple development projects with different dependencies.. I want to know what the best practice is to isolate each project?</p>

<p>I have many unrelated projects that a designed and updated on my laptop but I typically push them to a rPi or VMs (esxi). I would like to isolate the various projects so its easier to track which dependencies belong to which project and to stop the OS from having libs and other deps that aren't needed after a project is 'completed'. I do code some for work but its largely a hobby helping neighbors and the local SPCA.</p>

<p>What I use:
I typically program on a Debian box or Windows 10 depending on what I need to accomplish.
I program in Java, Python, and the typical web stuff (jscript, html, css).. 
Bash and Powershell if you consider either programming too.
Version control is done via Gitlab.</p>

CC BY-SA 3.0
2018-04-29T17:02:24.623Z
My understanding is that your question is about isolating the (development) environments for the projects, not about isolating the projects's codebases, is this correct?
Dan Cornilescu
CC BY-SA 3.0
2018-04-29T17:09:25.177Z
I think that is correct, Git already isolates the code base. I want to improve my 'work flow' and reduce the amount of bloat I tend to subject my systems to. For instance I wrote some code using pyCam and after that project completed I didn't need that lib anymore, it essentially just wasted space.
blah
CC BY-SA 3.0
2018-04-30T06:53:23.857Z
I use VMs for this - it's easy to separate and maintain specific to language and project - I just have oracle vbox with android-dev, python dev, c++ dev, etc. and then use for example python env in pycharm for specific python project for example.
Drako
CC BY-SA 3.0
2018-05-01T19:24:22.627Z
I have workstation pro but I wanted to see if there was something out there that I didn't know about. I am not really a dev by trade.
blah
<python><java>
Best way to isolate programming projects?
blah
# Best way to isolate programming projects?

(Asked by: username_0 on 2018-04-29)

Not sure if this is the best place for the question but I have multiple development projects with different dependencies.. I want to know what the best practice is to isolate each project?

I have many unrelated projects that a designed and updated on my laptop but I typically push them to a rPi or VMs (esxi). I would like to isolate the various projects so its easier to track which dependencies belong to which project and to stop the OS from having libs and other deps that aren't needed after a project is 'completed'. I do code some for work but its largely a hobby helping neighbors and the local SPCA.

What I use:
I typically program on a Debian box or Windows 10 depending on what I need to accomplish.
I program in Java, Python, and the typical web stuff (jscript, html, css)..
Bash and Powershell if you consider either programming too.
Version control is done via Gitlab.

**Tags:** python, java

> **Comments:**
> **username_1**: My understanding is that your question is about isolating the (development) environments for the projects, not about isolating the projects's codebases, is this correct?  
> **username_0**: I think that is correct, Git already isolates the code base. I want to improve my 'work flow' and reduce the amount of bloat I tend to subject my systems to. For instance I wrote some code using pyCam and after that project completed I didn't need that lib anymore, it essentially just wasted space.  
> **username_2**: I use VMs for this - it's easy to separate and maintain specific to language and project - I just have oracle vbox with android-dev, python dev, c++ dev, etc. and then use for example python env in pycharm for specific python project for example.  
> **username_0**: I have workstation pro but I wanted to see if there was something out there that I didn't know about. I am not really a dev by trade.  

---

## 2 answers

### Answer by username_1 on 2018-04-29. Score: 1 | Accepted answer

A more generic approach would be use a separate virtualized environment for each project, see [virtualization](/questions/tagged/virtualization "show questions tagged 'virtualization'"). That could be either:

* a container image - more lightweight, faster and definitely more popular these days, see [containers](/questions/tagged/containers "show questions tagged 'containers'")
* a virtual machine (VM) image, slower and a bit more heavier to maintain than containers

You'd have all the project dependencies (IDEs, libraries, tools, etc) installed inside the virtualized environment, not on your system itself.

You'd need to create/bring the project's corresponding image on your machine when you start working on it and you can delete or save it for later re-use on some external storage when done. A shared artifact respository would be recommended as storage if more than one developer can work on these projects.

A huge advantage of this approach is that such virtualized environments play really well with automated CI/CD pipelines, in true DevOps spirit, helping to minimize/eliminate the differences between the development and staging/production environments.

Depending on the programming language and/or the supporting development tools being used on a particular project you may have some more specific approaches/alternatives. For example [`Pipenv`](https://docs.pipenv.org/) or [Virtualenv](https://virtualenv.pypa.io/en/stable/)/[virtualenv](/questions/tagged/virtualenv "show questions tagged 'virtualenv'") can be used to obtain such isolation for Python projects. But these solutions are typically not usable in other contextes.


---

### Answer by username_3 on 2018-04-29. Score: 0

<http://microservices.io/>

This website explains that microservices are not the holy grail but gives an impression how it could be implemented and how it could be useful.

Regarding the question:

> Best way to isolate programming projects?

there is no one-size-fits-all. It depends on the goal. If your company is commercial then the most important thing is that new features while be added. So a monolith would be good first. If issues occur one could apply the cheese-slicer method and extract the problematic functions into microservices. The most important thing is to get it to the customer as soon as possible.

> **Comments:**
> **username_3**: So you do not use a Version Control System (VCS)?  
> **username_3**: @ACKmySYN Could you include your comment in the question and remove the comment? I think that it would really help if you extend your question.  

---

