The source control for ERPNext is GitHub. There are many guides online. But the general idea is this. You “fork” the ERPNext repository. This is somewhat equivalent to “checkout”. You make your changes. Next, you submit a Pull Request. That is equivalent to requesting a commit. The owners of the ERPNext repository review your Pull Request. If they agree…they merge your changes into the standard code.
Also, in Frappe there is the concept of a custom App. The App has its own sub-folder in the frappe directory. Anything you create for that App is stored in that sub-folder. For example, maybe you want an App for a music playlist. You might create DocTypes for Song, Artist, Playlist. These would reside in the App’s subfolder. You can save/export your App. And later re-apply it to any ERPNext installation. This essentially allows you to create your own code, without worrying about it being overwritten by ERPNext core. However, this App code is somewhat standalone. You can create new features. But your App isn’t modifying the core DocTypes like Customer, Supplier, or Sales Order.
So. We end up with 3 development possibilities:
- You create your own App. In this case, ERPNext changes will not overwrite your App.
- You make changes to the core ERPNext, submit a Pull Request, and they are successfully merged into the master.
- You make changes to the core ERPNext, and they do not get merged into the master. Either because you didn’t submit a Pull Request. Or your request was denied.
I personally think often about #3. Because for customers, this will happen. A lot. I’ve already found clients and prospects asking about this. We must apply changes, and then later manually merge these changes back into our local forks/branches, when we migrate to a new ERPNext version. In this case, backups are essential. Take a complete backup of both your frappe folders and SQL, before doing an upgrade! Currently, there is no standard GUI tool for displaying and merging differences (this is one thing I miss from MS Dynamics). I suspect there are 3rd party tools we might leverage.
Regarding IDE’s. Frappe itself is an IDE. It can handle many (but not all) changes to ERPNext. Certainly you can begin there when creating DocTypes, Print Formats, and many other features.
As for the rest? There is no standard IDE we all use. Sometimes we use a simple text editor to modify a file. Some people use a tool called ATOM, with various plugins. With configuration, this could be somewhat equivalent to Visual Studio. Also, I occasionally use a tool called PyCharm for working with Python files, especially for debugging. For access to the SQL database (besides using the basic terminal), there are various IDEs such as MySQL Workbench, PhpMyAdmin, HeidiSQL, and many, many more.
To answer your final question. Most (but not all) code is saved in files in the frappe subdirectories. One notable exception I’ve found is Print Formats. If you create a custom HTML print format, that text is actually saved in a table in MariaDB. You can modify the text using the Frappe Desk. But it’s embedded in a column of SQL.
Hopefully the above information helps. It’s a very different world than Visual Studio, and other Microsoft tools. And it’s not perfect. But it’s actually quite good. The more time I spend in Linux, Frappe, and ERPNext, the more comfortable and confident I become.