1. 1

    Thanks for existence, lobste.rs!

    I don’t participate in the comments section as much, but it’s always a pleasure to read reasonable people having reasonable discussions. And the fact that politics is of the board… Love it!

    1. 4

      I’m trying to relaunch my own SaaS product – https://ashop.co , it got “sidetracked” by sudden Amazon API update (with months notice). I also added all the features my previous clients asked for. Exciting and nerv-wrecking at the same time.

      1. 18

        bbatsov, thanks for all your hard work on rubocop. I’ve had a few of these heated OSS issues in my time too. Just remember to keep perspective, policing in the USA is a very hot topic right now; there are millions of protesters on the street for a reason. If I was in your shoes: I’d tell everyone to step away from the issue for a month, let me consider the issue and make a decision then. Time often brings clarity.

        1. 27

          Just remember to keep perspective, policing in the USA is a very hot topic right now; there are millions of protesters on the street for a reason

          They are protesting because of police brutality, not because of the term “cop”. This is a bit like saying we should ban the term CO2 because of climate change.

          1. 5

            One of the biggest rallying cries of the current movement is “defund the police”. It is not just police brutality but the concept of policing itself which demonstrators are calling into question. I think that context is missing from this discussion.

          2. 53

            With all due respect, mister Perham.

            You might want to consider the other side of the argument, that a lot of people are not from US and more developers in Europe (and elsewhere) are pissed and tired of American politics.

            I would rather see bbatsov spend time with his friends, family and kids than to spend a another minute on this issue. If he wishes to spend this time on OSS, my guess would be that he can find a way more interesting problems to tackle.

            1. 3

              Stepping away from a month might be a good start, because who knows what riles up folks in July? Probably not the police and in that case nobody will care about the name anymore, at least not the degree that they’re willing to maintain a fork over it. If there’s still interest in having a fork next month, then so be it?

              Asking him to spend any time on preparing the rename he isn’t interested in is, however, intruding in his life.

              1. 2

                This is a well articulated comment. I think your advice is reasonable.

              1. 2

                Is this is a sign of Microsoft not doing so great with GitHub? This basically creates less incentives to pay for a team account? I understand that microsoft has very big pockets… but how on earth do they even plan to make money nowadays?

                1. 9

                  This tweet from the GitHub CEO says that their enterprise product is how they make money:

                  I’ve been excited for this day for nearly 18 months, and it’s great to finally be here.

                  Thanks to our Enterprise customers whose rapidly growing use of GitHub makes this change possible for all the startups and small teams around the world. 🙏

                  1. 2

                    It’s about expanding the user base and getting as much control over the largest number of people possible. The book Surveillance Capitalism goes into this.

                    1. 1

                      This basically creates less incentives to pay for a team account?

                      There are still a bunch of features that are only for public repos with the free tier. Having those available for free is good marketing: everyone learns how they work and then wants them in their work repos. If anything, I’d think it would increase the incentives for buying the teams version. $4/month is basically noise on top of an engineer’s salary (let alone the total cost of employing an engineer). If those engineers are 1% more productive as a result of the features in the paid edition, it’s a clear win.

                    1. 2

                      It usually depends on a project more, some languages fit more than others. But I decided to use Ruby for most of my projects – I can easily re-use most of the stuff I’ve been using in other project, I know library ecosystem well enough and I’m productive with it.

                      But personally, I lean towards Clojure/Elm/Elixir more and more. Just don’t feel that I’m productive enough with those.

                      1. 2

                        What we really need are better databases.

                        1. 3

                          I feel that databases already stepped-up their game, but somehow people are not up to date with all the improvements. A lot of developers I meet have no clue how to optimize database and generally treat it as a black box. A lot of companies would rather hire someone with ReactJS experience, than DBA experience :)

                          1. 2

                            I obviously have no idea what you have in mind but I agree and am intrigued. (Even so, it’s interesting and instructive to see how the whole noSQL cycle went down.)

                            1. 1

                              What I mean is that I have spent some time with PostgreSQL’s views, triggers and row-level-security to glimpse a future where a lot of business logic gets encoded in a non-imperative way very close to the data. We are not there yet, though.

                              It would be nice to be able to store the schema in a git repository and be able to statically check that all your views and procedures are compatible with each other. It would also be nice to have a tool to construct the best migration path from the current schema to the new one where you only instruct it on the missing bits (that is, how did the shape of data changed).

                              I think that a tight type system and some good tooling might be able to combat the complexity much better than service oriented architecture that still needs a lot of attention on coordination and API stability. If a team changed their public views, they should immediately get a type error or a QuickCheck test suite should notify them that they broke something. They could share ownership and modify dependent code themselves more easily.

                              1. 2

                                This is indeed the technical platform I introduced at my last job and am using for my current project!

                                It would be nice to be able to store the schema in a git repository

                                I’m using the excellent setup pioneered (?) by the PostgREST/Subzero project:

                                https://github.com/subzerocloud/subzero-cli

                                It’s very simple actually: build up your schema with idempotent SQL scripts split up into a regular text files according to your taste (you can place them in a hierarchical file structure that fits your software model). Just use \ir path/to/script.sql to run all the scripts in order from a top init.sql file. For example, from init.sql, call one script to set up db users, another to create schemas and set basic permissions on them, then call one script for each schema which in turn calls sub-scripts to set up tables, views, functions… All of this happens in regular text files, under version control. Reloading the entire db strucure + seed data takes about a second, so you can iterate quickly.

                                Now, the great thing that subzero-cli gives you is a way to turn the resulting schema into a migration (using the Sqitch stand-alone migration tool) by automatically diffing your current schema against the last checked in schema. (This involves a little dance of starting up ephemeral Docker containers and running a diffing tool, but you don’t really notice.) So you get a standard way of deploying this to your production system using simple migrations. (Sqitch is a pretty great tool in itself.)

                                be able to statically check that all your views and procedures are compatible with each other

                                Here you’ll have to rely on automated tests, like pgTAP or anything really that you prefer. Python is very well supported as an “in-database” language by Postgres and I’m working on writing tests using the wonderful Hypothesis library and run them directly inside Postgres to thoroughly test functions, views etc.

                                It would also be nice to have a tool to construct the best migration path from the current schema to the new one

                                Again, handled very well by subzero-cli, relying on apgdiff (apgdiff.com, yes it’s “old” but subzero maintain their own fork which gets small tweaks from what I’ve seen).

                                I obviously agree with the rest of what you wrote :) If you put PostgREST, PostGraphile, or Hasura on top of your “smart” postgres system, you can give teams quite a bit of flexibility and autonomy in structuring client-server communication for their use cases, while keeping the core logic locked down in a base schema.

                                1. 1

                                  It would be nice to be able to store the schema in a git repository and be able to statically check that all your views and procedures are compatible with each other. It would also be nice to have a tool to construct the best migration path from the current schema to the new one where you only instruct it on the missing bits (that is, how did the shape of data changed).

                                  Unless I misunderstand you, these tools already exist, at least for MySQL, PostgreSQL, and MSSQL. The compatibility checking does need to happen by deploying the schema, but the rest is there now.

                                  1. 1

                                    The compatibility checking does need to happen by deploying the schema, but the rest is there now.

                                    I am pretty sure that checking of procedure bodies only happens when you run them.

                                    Can you share links for the tools? I am not aware of them.

                                    1. 2

                                      Yeah, stored procs are not statically analyzed in any of the tools I know. SQL Server: https://docs.microsoft.com/en-us/sql/relational-databases/data-tier-applications/deploy-a-database-by-using-a-dac?view=sql-server-ver15 MySQL: https://www.skeema.io/ For Postgres I know I’ve seen one or two tools that functioned in this way but I don’t seem to have saved the link.