Hi all, Currently we have a bunch of 3.x applications in the main branch which are not functional. Some even start supervisors and expose HTTP endpoints, like _reshard (mem3). Initially the idea was to keep those applications there to make it easy to merge fixes back and forth, but I wonder if it is time to clean them up.
I gave this a try locally and got it to where we pass `make check`. Here is what it looks like: * mem3, rexi, ken, smoosh, ddoc_cache, dreyfus are pretty easy to remove. * couch_mrview and couch_index : a bit trickier as those are called from couch_views for some utility functions. In some cases there is some duplicated code, for example we have two ddoc_to_mrst copies with one a one line difference: https://github.com/apache/couchdb/blob/main/src/couch_mrview/src/couch_mrview_util.erl#L142-L194 vs https://github.com/apache/couchdb/blob/main/src/couch_views/src/couch_views_util.erl#L31-L84. I managed to consolidate that into couch_views and remove couch_mrview and couch_index * couch app : Half of the modules here can be removed, btree, couch_file, most of the couch_server functionality, couch_compress along with snappy. But couch_server is still used in many parts of the code to get the couch version, as the backend of the _uuid endpoint and also for hashing passwords. I have stripped it down to do just those 3 things. * Some applications we want to have in main, but the way they are implemented currently rely completely or mostly on 3.x code: purge logic, couch_peruser, global_changes, setup. I am thinking it may be better to remove them from main as we'll have them on the 3.x branch they'll be recent (working) there. When we're ready to fix them up, we can copy that code from there to the main branch. What does everyone think? Thanks, -Nick