cloudspannerecosystem/memefish

Proposal: Deprecate the `analyzer` Package and Improve the Repository Layout

makenowjust opened this issue · 5 comments

memefish consists of two features: parser and analyzer. parser is mostly complete implementation, but analyzer is incomplete. In addition, parser is used by someone, but analyzer seems to be used by no one. I have no time to finish implementing the analyzer package and I'm hard to maintain this package. Therefore, I would like to deprecate the analyzer package.

The repository layout of memefish looks strange to me. Placing implementations under the pkg directory may be useful if memefish is an application and the implementations are used for implementing the whole application. However, memefish is just a library, and the pkg directory does not help users. Thus, I also want to change the repository layout at this time.

My considering to-do list is as follows:

  • Add v1 tag so that we can fetch the current source code by the path github.com/cloudspannerecosystem/memefish
  • Move the parser package to the top of the repository and other packages except for the analyzer under the top. (I have no idea what to do with example or docs.)
  • Release v2 on this layout.
  • (Maybe, we need to update docs.)

Perhaps if we do the above, users can continue to use the current code, and v2 will allow them to use a clean layout.

/cc @kazegusuri @tyamagu2 @nktks

I have no time to finish implementing the analyzer package and I'm hard to maintain this package. Therefore, I would like to deprecate the analyzer package.

In my opinion, they can be improved by contributors so I don't think maintainers should implement and maintain some features. There is no good place (repository) for analysis currently. Someone may think those features should be inside memefish or someone may think it's enough to create an independent repository. It depends on the policy or purpose of this project. If we want to provide advanced features like analyzer than just parsing statements, we can keep it as is and look for contributors. However if we want to focus parser in this repository, it's good to omit those advanced features.

The repository layout of memefish looks strange to me. Placing implementations under the pkg directory may be useful if memefish is an application and the implementations are used for implementing the whole application. However, memefish is just a library, and the pkg directory does not help users. Thus, I also want to change the repository layout at this time.

Agreed. I think parser package should be placed on top directory.

Add v1 tag so that we can fetch the current source code by the path github.com/cloudspannerecosystem/memefish

In my optimistic thought, we can just move the package without creating v2. Now we haven't create a release and there are not so much users of this library. It's just a small change about moving package. There are many projects that do breaking changes in a minor version. However removing package has a large impact basically. In this case, it seems analyzer package is not used by anyone, so the impact is small. So I think we can just change the package structure without creating new version at this time.

I have no idea what to do with example or docs.

I think we can keep the packages on the top directory as is.

In my optimistic thought, we can just move the package without creating v2.

Agreed with @kazegusuri's point. Also, memefish didn't have any release version, so it should be fine to do this change. And as a user(parser only), I'm glad to change the import path as well since it didn't break anything.

We should start versioning at some point. However, this point may not be here.

Okay, I will only fix the repository layout and remove the analyzer package.

We should start versioning at some point. However, this point may not be here.

Yes, my point is fine to break since it has no release version, so it even didn't promise compatibility or breaking change at all. And it's always nice to have the release version.