Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: split this repository in five different (maybe more) repositories #2542

Closed
JJ opened this issue Jan 7, 2019 · 15 comments
Closed

RFC: split this repository in five different (maybe more) repositories #2542

JJ opened this issue Jan 7, 2019 · 15 comments
Labels
big Issue consisting of many subissues meta RFCs, general discussion, writing style, repository organization, etc.

Comments

@JJ
Copy link
Contributor

JJ commented Jan 7, 2019

The problem

The main problem is testing time #2498. But that's not the only one. There are so many things in this repo, with more added every month, that it comes a time when it's become unmanageable, with author tests only run from time to time due to time restrictions, for instance, and the requisites of some tools conflicting with the requisites from others. The different parts are also too tightly coupled (described somewhere as a "rats nest") that it's difficult to think about testing (see #2529 #2539) lots of parts (including the main site-generation app) that are not being tested right now.
The five parts here are:

Suggestions

I already proposed #2295 to general indifference, but I think we should go further tnan that, leaving the docs in this directory, and filter commits to create all new repositories that keep the history, which could be called App::doc, doc-site, several repos, one for each lib Module which is functionally independent and doc-kerfile (pun intended).

@JJ JJ added the meta RFCs, general discussion, writing style, repository organization, etc. label Jan 7, 2019
@moritz
Copy link
Collaborator

moritz commented Jan 7, 2019

Isn't that approach a bit backwards? Shouldn't you/we first reduce coupling, and then possibly move things into a separate repositories, should it be still necessary afterwards?

If we just split without reducing coupling, we're in for a world of pain without any benefits.

@lizmat
Copy link
Collaborator

lizmat commented Jan 7, 2019

I agree that there should first be an effort to reduce coupling. But such an effort only makes sense if we decide on splitting into multiple repos as a final goal. What would otherwise be the incentive for reducing coupling?

@moritz
Copy link
Collaborator

moritz commented Jan 7, 2019

@lizmat you can achieve easier testing, and run tests for decoupled components, even if you don't split into repos.

(FTR I don't really care about the splitting either way, as long as it doesn't happen before the decoupling).

@JJ
Copy link
Contributor Author

JJ commented Jan 7, 2019

@moritz the problem is that most of the stuff outside the documentation is not tested. In order to reduce coupling (or rat-nesting) we would need to devise a good amount of tests; but in order to to that, we need to eliminate coupling since it's not clear what's there because it needs to be there or what's simply a side effect. It's really a catch-22 situation, so I would really start by splitting, which will force decoupling.
Mind you, we would not tear down the site meanwhile; we'll approach that piecewise and in the best fashion possible.
@lizmat reducing coupling is needed because it's impossible right now to fix some of the bugs listed above unless we refactor the whole thing, and refactoring needs testing, and testing needs decoupling. Also, I don' t really think there should be a single documentation repo to serve them all, and also to download it all! People who want to use p6doc shouldn't need to install Mojolicious (which is a dependency of the site, not the app).

@Altai-man
Copy link
Member

FWIW, one can get a fresh repo clone and cut it in pieces locally. Any number of file moving or changes can be done without breaking anything in current process.

When one will achieve a separate set of components(directories), instructions for each one and other things like that ready, it will be easy to just git init & commit & push given directoried into created repositories.
I am not sure it is a piece of work that necessarily has to be shared for various contributors to be able to be involved. Even if it's like that, a throwaway repo can be created with all partially separated directories included.

@finanalyst
Copy link
Collaborator

I am actively working on this whole set of problems.
I agree with JJ. There are several sets of inter-related issues.

  1. The documentation of the language.
  2. A web interface to the documentation, including the possibility to edit the documentation.
  3. A local interface to the documentation, such as p6docs.
  4. Support software, such as Pod::To::HTML.
    I do not think there should be an immediate split because there is too much coupling.
    My goal is to replicate the website without any coupling.
    Then get a way for p6docs to work separately.

@JJ JJ pinned this issue Jan 18, 2019
@JJ JJ added the big Issue consisting of many subissues label Jan 18, 2019
@pmurias
Copy link
Contributor

pmurias commented Jan 18, 2019

Splitting the repository contents into a bunch of subdirectories that are still in the repository itself is an option.
This would maintain a degree of separation while still maintaining the ability to work on multiple things together without juggling PRs/commits across multiple repositories.
node.js land example: https://github.com/parcel-bundler/parcel/tree/master/packages/core

@coke
Copy link
Collaborator

coke commented Mar 13, 2019

A related discussion just came up on #2662 - Specifically addressing the thought of splitting out some items from the documentation itself - if the goal is to have targeted distributions of docs via p6doc, or a copy of the website, that is something that can be done by generating user-specific artifacts at regular interviews (say, quarterly) for the users. IMO, this isn't something we should solve at the git repo level. That said, having it installable (say via a CPAN module via zef) would be great, but we don't need separate repos to accomplish that.

Additionally, one of the comments on #2662 was regarding the size of downloads for the user; note that removing a file from HEAD doesn't mean it's not in the repo anymore; it's still there and being transferred, so any solution that simply removes the file from one repo and puts a copy in the other isn't helping on that front, if they're using git. (And if they're not using git, that's another pro for same repo, different artifacts, IMO)

Regarding pulling out modules - it very much depends on purpose of those modules; Pod::Cache, for example, is very basic and only for build/testing, and exists as a module only to avoid code duplication. (The issue that it's untested is a separate one and can be addressed in place.) Pulling it out into a separate repo complicates development for little benefit.

@JJ
Copy link
Contributor Author

JJ commented Mar 13, 2019 via email

@coke
Copy link
Collaborator

coke commented Mar 13, 2019

Strongly disagree that breaking the repository into smaller repositories is the correct approach.

JJ added a commit that referenced this issue Sep 1, 2019
Its functionality has been superseded by the new Documentable. It's had a nice run, but previously I deleted a couple of libraries that depended on it, so it was no longer functional.

Refs #2996. But also:

* Closes #2883 since disambiguation files are no longer generaed.
* Closes #2801 since that's been fixed in documentable.
* Closes #2592 since it works correctly in documentable.
* Closes #2575 since indexing is now specified by a grammar in documentable.
* Refs #2542: this is an ongoing work.
* Closes #2539: initial tests were mede in a mini-docs site, then a staging site, then in production.
* Closes #2529: mini-docs were used in the process of the new documentable, https://github.com/antoniogamiz/mini-doc/
* Closes #2499: Disambiguation is deprecated #2974 and is currently eliminated from production.
* Closes #2498: It takes now around 15 minutes (in staging site) to generate documentation the first time, less than a minute to do it; 8 minutes in CircleCI.
* Closes #2392: Now pages include metadata, and it's been resigned and disambituated.
* Closes #2270: fixed in documentable.
* Closes #1973, documentable now does not generate temporary files.
* Closes #1952: caches can now be shared, since there exists one. However, it's not shared yet between pod2onebigpage, for instance.
* Closes #1937, since this has been already spun off and released to the ecosystem
* Closes #1854: fixed either here or in Documentable
* Closes #1823: It's totally refactored and working independently.
* Refs #516: the new Documentable allows, by specification, several types in the same page.
@JJ
Copy link
Contributor Author

JJ commented May 21, 2021

@lizmat this is the "big split" issue.

@coke
Copy link
Collaborator

coke commented May 21, 2021

Strongly disagree that breaking the repository into smaller repositories is the correct approach.

Several of these steps were already done, please feel free to ignore my old opinion here for the remaining items.

@coke
Copy link
Collaborator

coke commented Apr 16, 2022

@JJ , can you summarize what's left to do before we can close out this ticket?

@JJ
Copy link
Contributor Author

JJ commented Apr 16, 2022 via email

@coke
Copy link
Collaborator

coke commented Nov 16, 2022

p6doc has been migrated out; the site generation will be included with @Altai-man's new site, Documentable, etc.

I think the main thrust of this ticket has been accomplished. Once we complete the spin off of the web site, we'll revisit and open tickets for remaining/new issues as we find them.

Thanks, everyone.

@coke coke closed this as completed Nov 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
big Issue consisting of many subissues meta RFCs, general discussion, writing style, repository organization, etc.
Projects
None yet
Development

No branches or pull requests

8 participants
@JJ @moritz @coke @pmurias @finanalyst @lizmat @Altai-man and others