mapbox / carto

fast CSS-like map stylesheets
https://cartocss.readthedocs.io/
Apache License 2.0
652 stars 129 forks source link

Project governance status #495

Open kocio-pl opened 6 years ago

kocio-pl commented 6 years ago

I'd like to ask what is the current status of this project and who would take care of it in case it's needed to update it?

I'm one of OSM Carto developers and we rely totally on CartoCSS, so it's important to know what to do in case the new Mapnik API version will be released (see #494), for example, or there's some bug. If there's no such person and no other solution is proposed, I'm ready to take care of this as a release manager (not a coder though).

I have described the background of this problem here: https://github.com/mapbox/carto/issues/494#issuecomment-412361395

nebulon42 commented 6 years ago

Thank you that you care about the state of this CartoCSS implementation.

The current state is as follows (with a little history): when Mapbox dropped support for carto I was in the same situation as you. I was a maintainer of OSM Carto. This project needs carto (and it also needs Kosmtik btw.). There were bugs and some new features that would have made life easier would have come handy. So I got into carto development and also Kosmtik development. Since this project was inactive nobody looked at my PRs. After I "threatened" several times that I would fork the project (I actually did fork it two times already) I received push access together with @gravitystorm. I then had to "threaten" again to receive access to the NPM package. I started squashing bugs and improving things. I even nearly implemented a brand new variable handling, which would allow you to define variables everywhere in the code. So I made it to the 1.0.0 release.

Then I got a bit fed up by working on my own here and also the code is a bit difficult. It's a full featured parser, but more complicated than CSS (at least to me), because you have another degree of freedom which are the filters. Performance is a issue and today I'm a firm believer that carto should be rewritten from scratch. And I'm not so sure if JavaScript is the right language for it. It maybe should be rewritten in Go or C++ (yes, I also contributed to Magnacarto). Also the future of CartoCSS is unclear. While there is still need for it, nobody cares much for it anymore. And the trend seems to go into different directions. As someone who also works with CSS on a almost daily basis I like the concept for map design. But the nature of a cascading language is difficult where performance matters a lot (ok, browsers also seem to have solved this).

Now for the future: I stopped development after the 1.0.0 release. There are two long-standing PRs with handy features (group symbolizer, formatting of labels) that I should have heaved into master. And it's also a pity about the vars-everywhere branch. I'm still the only "maintainer" left. But I would love to give maintaining to somebody else. But this one would have to show interest for and understanding of the code. So anybody that would want me to make him/her maintainer here would have to submit patches first as it is the case in most open source projects.

As for your specific request it is nice that you want to take care of releasing, but this is not needed. I'm still taking care of that on a case by case basis as you have seen in #494. And it was not even particularly slow. That takes me to the other thing: you won't get guarantees or a SLA. I might not have time or something else. So if you need something immediately fork the thing and see that it gets back into the mainline. It will eventually. Or get into developing carto and become maintainer.

james2432 commented 6 years ago

I could help with the c++ rewrite/conversion, but as you've said yourself javascript is not a performance engine and probably never will be due to it being so high level as a language. Writing new code/patches to something that may be converted to another language is very discouraging for new contributions

nebulon42 commented 6 years ago

Writing new code/patches to something that may be converted to another language is very discouraging for new contributions

Yes, you are right. But I never said that I will attempt a conversion I just expressed my belief that this would be the right way forward in the long term. To avoid to reinvent the wheel https://github.com/omniscale/magnacarto might be the right way forward. But currently it has the downside that it is intertwined with a map design application and has no releases.

imagico commented 6 years ago

Also the future of CartoCSS is unclear. While there is still need for it, nobody cares much for it anymore.

The vast majority of CartoCSS users are satisfied with the current functionality and have no need for either new features or bugfixes i suppose. And since CartoCSS only targets mapnik (in contrast to magnacarto) and mapnik - well, you know the state of mapnik...

I appreciate your efforts to keep the lights on but if there is indeed no one to pick things up with real commitment into further actively developing the program maybe it is time to let the lights go off. Sometimes the demise of old things is a necessary prerequisite for something new being created and flourishing.

nebulon42 commented 6 years ago

Actually the lights are already off. I have just refrained from hitting the button that revoked my push access. But it doesn't hurt to have new releases when the reference is updated.

gravitystorm commented 6 years ago

I'm happy to mind the lightswitch - that is, to keep the permissions that I have, and help any developer who wants to get started in the future. I'm not up to the challenge of significant work on carto e.g. refactoring or other large scale work that @nebulon42 has done over the last few years, but I'm happy to deal with e.g. spelling fixes and other small works.

I use carto extensively in a number of projects, so I do have an interest in keeping it going, even in a small, quiet, "extended maintenance mode" kind of way. Rather than considering carto as "dead" I'd rather consider it "just resting", probably for the medium term.

nebulon42 commented 6 years ago

Thanks, I intended to do releases and probably review patches that might come in. So if there are two of us that's even better. Giving the slow adoption rate I'm not even sure if the 1.x series works the way it should. I have seen that @mojodna uses the 1.x series in some projects and since Kosmtik now integrated the 1.x series there might fall some work off of that. But let's see.

@gravitystorm I think you should get publish rights on NPM. Do you have an account there? Just tell me and I can grant you the needed rights. It might also be good if you would have rights on the readthedocs project. Currently @springmeyer and me are listed there as maintainers.

kocio-pl commented 6 years ago

With two of you willing to do even just the housekeeping, I feel much safer. I also feel much better informed about the state of things (whatever it would be) - thanks a lot!

mmd-osm commented 6 years ago

This issue has been featured both on https://www.openstreetmap.org/user/kocio/diary/44687 and https://lists.openstreetmap.org/pipermail/dev/2018-August/030348.html, that's why I'm posting here.

Honestly, I don't really know where this project is at or what the status of its current issues are, but in case you want to attract some other people, it would good to provide some kind of high level summary as a motivation why they should join, and maybe some hints as to the relevance of the existing issues (sorry, no, I don't volunteer).

nebulon42 commented 6 years ago

Yeah, you are right, there maybe should be something. But I guess I'm well beyond that point already.

kocio-pl commented 6 years ago

@mmd-osm In my experience from OSM Carto attracting people to work is a huge, long-term background task. No single action is enough and stand-by status doesn't help it, so I'm perfectly fine with the current findings.

StyXman commented 6 years ago

I've been thinking about rewriting carto for a while, because waiting 15s+ in kosmtik every time I make a change is really time consuming. But I can't; I really wish I had the time.

One thing for sure is that given the amount of styles around, it wouldn't be so difficult to find a corpus of input/output examples that could serve as a first set for unit test. Given that not much development is happening here, it shouldn't take that much, I think, to match up features.