Crystal: Unmaintained projects

Created on 29 Jul 2017  路  5Comments  路  Source: crystal-lang/crystal

Crystal is super-duper, but the major issue is that it heavily depends on single contributors. They create shards and then just forget about them. Some examples:

Issues or PRs are created and become stale for months. The community doesn't have a centralized shards repository like RubyGems, as a result most of contributors ignore tagging releases and do shit-code. This is because they don't care! When pushing to rubygems, you understand that your gem might be used by thousands of developers, and you see the download counters - this empowers you to work on.

I propose either to switch to shards repository or to think about migrating from Github to something more... I don't know, I'd like to push to master, but the developer is offline forever, so there might be a way to publicly contribute into one project without a single Owner. Something blockchain-based? :smile:

Most helpful comment

Hi there! Weekend @matiasgarciaisaia here!

My personal take on this - nothing more "official" than "someone's opinion on some random topic".

I love being involved in Crystal's development because you get to see so many different points of view.

This issue amazes me because it's for this very same reason (unmaintained projects) that shards have no central registry. The reasoning goes like this - picture the git shard abandoned by its maintainer. Everybody fights for the git2 name, or they start adding funny pre/suffixes to that. Have you followed Atom editor pre-1.0? I think it was a mess, and I think that was what shards devs (and the core team, for what I've heard and discussed) had in mind when taking this decision. Having no centralized registry means that you pick the version of the shard that works best for you - and you can become THE shard version of you're willing to maintain it, instead of if you just got the best name in the registry.

I think unmaintained projects is not about having a centralized registry, but about Crystal getting _even more_ traction, mature. I think stability improved lately, which basically means that it means less work to keep a shard up to date. We forsee some more breaking changes for the big issues the language still has (parallelism, incremental compilation, Windows support maybe), but for 1.0 we are committed to stability, so less maintainance burden. Crystal getting more mature will mean more production code, which means more resources (both on the core team and on third parties) to maintain projects. Hobbies and pet projects are awesome, but who can force you to maintain a shard you created _just because_? Having more production projects on crystal will improve this. And having a bigger community will increase the chance of having more awesome people like the ones we already have, doing awesome stuff like the ones they are already doing.

Lastly, shards being what it is depends on the community adopting it - and not running to any alternative that someone creates. If the community thinks it's best to have a centralized registry, it will eventually emerge, and either coexist or be adopted over shards. I don't think we'll mishear the community - but I think that has not happened yet.

I'd love to see a Magic card with the companion text "It's open-source - go do it yourself" :P

All 5 comments

On a github, you can always create a fork to an unmaintained shard. There is still a problem to show which fork is "actual", but I think it can be solved with something like awesome-crystal, maybe more automated.

It's not an obvious solution. I may improve a library with a small commit, but posting a link to my repository to an awesome aggregator means taking all the glory and responsibility for maintaining a library. I'm not ready to maintain a library, say Micrate, but my commitment may be useful to others.

And you're right, different forks usually resolve different issues. Creating a fork for uniting forks is an overhead.

Hi there! Weekend @matiasgarciaisaia here!

My personal take on this - nothing more "official" than "someone's opinion on some random topic".

I love being involved in Crystal's development because you get to see so many different points of view.

This issue amazes me because it's for this very same reason (unmaintained projects) that shards have no central registry. The reasoning goes like this - picture the git shard abandoned by its maintainer. Everybody fights for the git2 name, or they start adding funny pre/suffixes to that. Have you followed Atom editor pre-1.0? I think it was a mess, and I think that was what shards devs (and the core team, for what I've heard and discussed) had in mind when taking this decision. Having no centralized registry means that you pick the version of the shard that works best for you - and you can become THE shard version of you're willing to maintain it, instead of if you just got the best name in the registry.

I think unmaintained projects is not about having a centralized registry, but about Crystal getting _even more_ traction, mature. I think stability improved lately, which basically means that it means less work to keep a shard up to date. We forsee some more breaking changes for the big issues the language still has (parallelism, incremental compilation, Windows support maybe), but for 1.0 we are committed to stability, so less maintainance burden. Crystal getting more mature will mean more production code, which means more resources (both on the core team and on third parties) to maintain projects. Hobbies and pet projects are awesome, but who can force you to maintain a shard you created _just because_? Having more production projects on crystal will improve this. And having a bigger community will increase the chance of having more awesome people like the ones we already have, doing awesome stuff like the ones they are already doing.

Lastly, shards being what it is depends on the community adopting it - and not running to any alternative that someone creates. If the community thinks it's best to have a centralized registry, it will eventually emerge, and either coexist or be adopted over shards. I don't think we'll mishear the community - but I think that has not happened yet.

I'd love to see a Magic card with the companion text "It's open-source - go do it yourself" :P

I think Crystal has a great approach to distributed dependency sources. Go is similar in principle but the implementation details suck (as far as I can tell, never really worked with it).

But what's missing is a central hub to share and aggregate information about shards. crystalshards.xyz is currently just a search interface for github repositories, but has no understanding of shards with versions, interdependencies and such. crystal-shards-registry.herokuapp.com looks like it might go into that direction, but I don't know if it is alive... it is used by libraries.io as the backend for shards - but there are only 30 listed so if you're looking at libraries.io it actually seems there are only very few shards!

@mgarciaisaia I see: if the community ever needs something centralized, it will eventually create it; select the forks which work for you; do it yourself.

However, IMO the whole concept of _"open source, freely developed by anyone, a property of the Internet"_ projects being in fact depended on a small group (or even one) of developers, sucks.

I suppose that the issue isn't related to Crystal, but if we all here are Columbus of _the perfect language_, may be we can find out a better OSS solution? :innocent:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

asterite picture asterite  路  3Comments

pbrusco picture pbrusco  路  3Comments

relonger picture relonger  路  3Comments

oprypin picture oprypin  路  3Comments

jhass picture jhass  路  3Comments