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

Reply via email to