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

Worth having a page of history of project homes, including latest greatest? #48

Closed
jafingerhut opened this issue Aug 18, 2019 · 9 comments

Comments

@jafingerhut
Copy link

For example, it could be a single page one could link to from all 'old home/README page' of projects when they transfer maintainership elsewhere, including to clj-commons, but perhaps having that page in one place would be useful for projects that transfer maintainership elsewhere besides clj-commons, too.

Example entry:

Project: fs
Current home: https://github.com/clj-commons/fs
Date transferred to current home: (Fill in a date that I do not know yet)
Former homes:
https://github.com/Raynes/fs

This is definitely the kind of thing that a more rigorous data model could be used to structure it, and that data programmatically accessed, if anyone had tools they thought would be useful to write for it, but at the very least having the information in text form would be a way for people to look for the latest greatest versions of things.

Thinking of corner cases for a moment, I understand there can be forks that diverge from a common point, so "latest greatest" isn't necessarily a uniquely defined thing. The page/data could represent such cases explicitly, perhaps even explicitly listing forks that seem not to be following the rules of the license of the original project from which they were derived, for a "here be licensing dragons" warning to people considering using the fork.

@jafingerhut
Copy link
Author

On a related note, in some case for the 'old homes', it would be nice if someone had permission to add a link to such a page, e.g. on the README for Github project https://github.com/Raynes/fs I do not know if that is possible, who might currently have write access, and/or what Github's policies might be for allowing edits to 'abandoned' projects.

@danielcompton
Copy link
Member

Worth having a page of history of project homes, including latest greatest?

Yep, this would be great, I'm a big fan of this idea. Currently the clj-commons.org website doesn't really give much info on which projects have been adopted. I think it'd also be good to show who the maintainers are for different projects, ideally driven off of a CODEOWNERS file.

On a related note, in some case for the 'old homes', it would be nice if someone had permission to add a link to such a page, e.g. on the README for Github project https://github.com/Raynes/fs I do not know if that is possible, who might currently have write access, and/or what Github's policies might be for allowing edits to 'abandoned' projects.

AFAIK this isn't supported, isaacs/github#1385 asks for a similar feature. In the cases where the original maintainer has transferred the repo to CLJ Commons, the old URL will redirect to the new one. I still think it's a good idea to list it, as people may recognise it, but clicking it will redirect to the new home.

@jafingerhut
Copy link
Author

Are there currently any projects with a CODEOWNERS file that you can point at?

Or is that something you are hoping to add to clj-commons projects in the future?

@jafingerhut
Copy link
Author

Ah, I think I found one in the tentacles repo here: https://github.com/clj-commons/tentacles/tree/master/.github

I guess one question to ask is: Do you want the 'ground truth' for this data to come from files inside if each clj-commons repo, but it is OK to periodically run some process that extracts it from all clj-commons repos, and publishes it in one place?

Or is it OK for the data's home to be in one single clj-commons repo?

@danielcompton
Copy link
Member

Do you want the 'ground truth' for this data to come from files inside if each clj-commons repo, but it is OK to periodically run some process that extracts it from all clj-commons repos, and publishes it in one place?

That would be ideal, but requires more work. In the first instance I'd be happy having the website be the home of this information, perhaps using something like Hugo which has data templates which we could use for this.

@jafingerhut
Copy link
Author

So the following vector of maps, one per project, is a first quick draft of what such a data file could look like, of course with more data like that extracted from CODEOWNERS files added later, plus whatever else we think of.

It would take only a fairly small amount of code to generate HTML/whatever for a web page for people to look at, from such data.

It would also take only a fairly small amount of code to create a file like this from whatever files you might later decide should be a common convention for all clj-commons projects.

Comments/questions welcome:

[;; camel-snake-kebab

 {:name "citrus"
  :url       "https://github.com/clj-commons/citrus"
  :releases "https://clojars.org/clj-commons/citrus"
  :former-locations
  [{:url       "https://github.com/roman01la/scrum"
    :url-forwards-to "https://github.com/clj-commons/citrus"
    :releases "https://clojars.org/org.roman01la/scrum"}]}
 
 ;; CLJ-2253
 ;; clj-ca-checker
 ;; clj-ssh
 ;; clj-yaml
 ;; cljss
 
 {:name "conch"
  :url       "https://github.com/clj-commons/conch"
  :releases "https://clojars.org/clj-commons/conch"
  :former-locations
  [{:url       "https://github.com/Raynes/conch"
    :releases "https://clojars.org/me.raynes/conch"}
   {:url       "https://github.com/Raynes/conch"
    :releases "https://clojars.org/conch"}]}
 
 ;; formatter
 ;; friendly
 
 {:name "fs"
  :url       "https://github.com/clj-commons/fs"
  :releases "https://clojars.org/clj-commons/fs"
  :former-locations
  [{:url       "https://github.com/Raynes/fs"
    :releases "https://clojars.org/fs"}
   {:url       "https://github.com/Raynes/fs"
    :releases "https://clojars.org/me.raynes/fs"}]}
 
 ;; iapetos
 ;; multigrep
 
 {:name "ordered"
  :url       "https://github.com/clj-commons/ordered"
  :releases "https://clojars.org/org.flatland/ordered"
  :former-locations
  [{:url       "https://github.com/amalloy/ordered"
    :url-forwards-to "https://github.com/clj-commons/ordered"
    :releases "https://clojars.org/org.flatland/ordered"}
   {:url       "https://github.com/flatland/ordered"
    :releases "https://clojars.org/ordered"}]}
 
 ;; pushy
 ;; rewrite-cljs
 ;; ring-buffer
 ;; ring-gzip-middleware
 ;; secretary
 ;; spinner
 
 {:name "spyscope"
  :url       "https://github.com/clj-commons/spyscope"
  :releases "https://clojars.org/spyscope"
  :former-locations
  [{:url       "https://github.com/dgrnbrg/spyscope"
    :releases "https://clojars.org/spyscope"}]}
 
 {:name "tentacles"
  :url       "https://github.com/clj-commons/tentacles"
  :releases "https://clojars.org/irresponsible/tentacles"
  :former-locations
  [{:url       "https://github.com/irresponsible/tentacles"
    :url-forwards-to "https://github.com/clj-commons/tentacles"
    :releases "https://clojars.org/irresponsible/tentacles"}
   {:url       "https://github.com/Raynes/tentacles"
    :releases "https://clojars.org/tentacles"}]}
 
 ;; unfurl
 
 {:name "useful"
  :url       "https://github.com/clj-commons/useful"
  :releases "https://clojars.org/org.flatland/useful"
  :former-locations
  [{:url       "https://github.com/amalloy/useful"
    :url-forwards-to "https://github.com/clj-commons/useful"
    :releases "https://clojars.org/org.flatland/useful"}
   {:url       "https://github.com/flatland/useful"
    :releases "https://clojars.org/useful"}]}
 
 ;; vizdeps
 ;; zprint-clj
 ]

@jafingerhut
Copy link
Author

Another thought -- having this in data format could also be useful for a future enhancement to tools like lein-ancient. Right now they can tell you when there is a newer version of the same project available on Clojars or Maven Central, with the same artifact name, but I do not think they currently attempt to tell if there is a newer project that you should consider using.

@danielcompton
Copy link
Member

having this in data format could also be useful for a future enhancement to tools like lein-ancient

There is a spec for handling this called relocation that Maven supports, though I've never seen it done, and Clojars doesn't support it AFAIK. Possibly having a manual data file to provide this info would be a useful short-term step for tools like lein-ancient though?

@slipset
Copy link
Member

slipset commented Dec 13, 2020

I've created a projects.html which contains most of this info now, so I'll close this issue

@slipset slipset closed this as completed Dec 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants