http://grossmeier.net/about & http://blog.grossmeier.net
489 stories
·
34 followers

Decentralia

1 Share

It’s been a few years since I’ve seen an interview with Jack Dorsey that didn’t read like he’d just smoked an entire copy of Atlas Shrugged, so when he announced that he was willing to fund “up to five” people to wash his hands a lot of people were a little suspicious, including me:

Twitter doesn’t exactly have a history of doing the reading before coming to class, so it wasn’t a surprise that there wasn’t so much as a nod to existing work in the space. I also wasn’t surprised to see so much criticism emerge from a fundamental mistrust of both Twitter’s intent and execution; ambulance-chaser to the world’s worst ideas is definitely in-character for that company. That said, it’s definitely a testament to the fundamental optimism of the open source world that so many people offered to help at all.

It’s Twitter, so there’s plenty of healthy pessimism around – as one example, Diaspora developer Sean Tilley said that “the pessimistic interpretation is that Twitter wants this, but also wants to control the standard” – but even seeing that and a lot like it the “real why” question still nagged at me. Ok, you don’t want to control the client anymore. Great. You don’t necessarily want to control the infrastructure, also great, so… what’s left? We know who you are, we know what you are: what do you want to control here and to what end?

To me this smells like a cryptocurrency play. A clever one, admittedly, but still.

The general shape of that corner of the law is very strange to me; it’s illegal to create your own currency, for example, entirely legal to issue non-voting shares of stock in your company, we’re apparently undecided about cryptocoinage, and it’s not clear to me what makes any of those things different. That aside, my concern is this: if some financial services company manages to finagle enough control over, say, the wheat futures market and the bread futures market then the people who own and operate the bread-making plant in the middle wind up having very little agency over their fates beyond the decision of whether or not to operate the machinery at all.

With that model in mind, if this is a cryptocurrency play and Twitter manages to turn themselves in to the First National Bank of the Fediverse – by which I mean, if they can open up the application or storage layer while maintaining control over a separate value-exchange layer – then they can effectively meet the letter of the law as far as “open” is concerned (Readable code! Data migration!) while completely subverting open source’s ideological goals of user agency, safety and real, informed choice. If my suspicions are correct, the end play for this Twitter thing is not more agency or meaningful freedom for the participants, but simply dumping of the costs of operating the machinery of openness on an unsuspecting and ideologically-blinded audience. Or in the classic phrasing: socializing the costs and privatizing the profits. The only new twist here is the audience.

For my own part, beyond updating my sarcastic comments about the blockchain to sarcastic comments about “up to five open source architects, engineers, and designers” I’m going to ignore it. We’ve got a better future to build here, and if Twitter wants to be a part of that they can clean their own house first before wiring themselves up to everyone else’s.

Read the whole story
greggrossmeier
35 days ago
reply
SF, US
Share this story
Delete

Reese the Cat

1 Comment and 2 Shares
Reese the Cat (Jan 2018)
Reese the Cat (Jan 2018)

My good friend Reese the Cat died on the last day of May 2019. She was 13 years old – still a young cat, by cat standards. She had a tumor on her tongue and couldn’t swallow and couldn’t eat or drink. We took her to a vet clinic within walking distance of our house on a sunny Friday morning to have her put to sleep – there were few options remaining for us and this seemed like the right one. We stayed with her the whole time.

I’ve worked from home for about 4.5 years now. I’ve spent much of that time alone in my home office – furiously hammering at my keyboard and sighing loudly. Reese the Cat has been there, too. Walking across my desk; threatening to take down production servers by flopping down on my keyboard to get my attention.

She spent much of her time alerting me of the activity of various animals she tracked outside our house. This meant running from the window in my office to the laundry room upstairs to get a wider view of the neighborhood cats, birds, and squirrels in the backyard. I’ve since made the assertion that there seem to be fewer cats wandering around the neighborhood, but that’s probably not true.

A blurry Reese sitting in my office chair (Sep 2016)
A blurry Reese sitting in my office chair (Sep 2016)

Whenever I closed a door in the house Reese took exception. She’d sit outside the door caterwauling, scratching at the carpet, generally making herself a nuisance. She often made a point of darting through doors as soon as they were opened – without regard for why a door had been shut or what may be on the other side. I’ve come to expect Reese to be behind doors. The past few days I keep opening doors expecting her to be there.

Reese (Jul 2017)
Reese (Jul 2017)

I call her, “Reese the Cat” as that’s her proper name. When we first moved to Colorado we lived in an apartment building and one of our neighbors was a woman named “Reese”. One day Blazey casually mentioned that Reese had been in the closet all day. I was confused. Are there locks on the closet? Did she not have a phone? She lived with her partner: where was he during all of this? We realized we needed to disambiguate: Reese the Cat and Reese the Person. It started as a subtle joke, and then it became her name. When I talked to her (as I frequently did when working from home) I called her “Reese the Cat” and often addressed her by her longer title: “My good friend Reese the Cat”.

Me & Reese playing (Jun 2013)
Me & Reese playing (Jun 2013)

I wrote most of the above on the 5th of June. Now it’s the 14th of October and I still haven’t actually published it. I have excuses: I wanted to amalgamate some photos; I wanted to re-read after some time had passed; overall, this post was just too sad to complete.

Reese on a bench (May 2017)
Reese on a bench (May 2017)

It’s been a while. We’ve given her expensive, uneaten food to the humane society. I’ve stopped expecting to see her around the house. I still miss Reese.

Read the whole story
greggrossmeier
94 days ago
reply
<3
SF, US
brennen
95 days ago
reply
Boulder, CO
Share this story
Delete

Changes and improvements to PHPUnit testing in MediaWiki

2 Comments

Building off the work done at the Prague Hackathon (T216260), we're happy to announce some significant changes and improvements to the PHP testing tools included with MediaWiki.

PHP unit tests can now be run statically, without installing MediaWiki

You can now download MediaWiki, run composer install, and then composer phpunit:unit to run core's unit test suite (T89432).

The standard PHPUnit entrypoint can be used, instead of the PHPUnit Maintenance class

You can now use the plain PHPUnit entrypoint at vendor/bin/phpunit instead of the MediaWiki maintenance class which wraps PHPUnit (tests/phpunit/phpunit.php).

Both the unit tests and integration tests can be executed with the standard phpunit entrypoint (vendor/bin/phpunit) or if you prefer, with the composer scripts defined in composer.json (e.g. composer phpunit:unit). We accomplished this by writing a new bootstrap.php file (the old one which the maintenance class uses was moved to tests/phpunit/bootstrap.maintenance.php) which executes the minimal amount of code necessary to make core, extension and skin classes discoverable by test classes.

Tests should be placed in tests/phpunit/{integration,unit}

Integration tests should be placed in tests/phpunit/integration while unit tests go in tests/phpunit/unit, these are discoverable by the new test suites (T87781). It sounds obvious now to write this, but a nice side effect is that by organizing tests into these directories it's immediately clear to authors and reviewers what type of test one is looking at.

Introducing MediaWikiUnitTestCase

A new base test case, MediaWikiUnitTestCase has been introduced with a minimal amount of boilerplate (@covers validator, ensuring the globals are disabled, and that the tests are in the proper directory, the default PHPUnit 4 and 6 compatibility layer). The MediaWikiTestCase has been renamed to MediaWikiIntegrationTestCase for clarity.

Please migrate tests to be unit tests where appropriate

A significant portion of core's unit tests have been ported to use MediaWikiUnitTestCase, approximately 50% of the total. We have also worked on porting extension tests to the unit/integration directories. @Ladsgroup wrote a helpful script to assist with automating the identification and moving of unit tests, see P8702. Migrating tests from MediaWikiIntegrationTestCase to MediaWikiUnitTestCase makes them faster.

Note that unit tests in CI are still run with the PHPUnit maintenance class (tests/phpunit/phpunit.php), so when reviewing unit test patches please execute them locally with vendor/bin/phpunit /path/to/tests/phpunit/unit or composer phpunit -- /path/to/tests/phpunit/unit.

Generating code coverage is now faster

The PHPUnit configuration file now resides at the root of the repository, and is called phpunit.xml.dist. (As an aside, you can copy this to phpunit.xml and make local changes, as that file is git-ignored, although you should not need to do that.) We made a modification (T192078) to the PHPUnit configuration inside MediaWiki to speed up code coverage generation. This makes it feasible to have a split window in your IDE (e.g. PhpStorm), run "Debug with coverage", and see the results in your editor fairly quickly after running the tests.

Debug coverage in PhpStorm

What is next?

Things we are working on:

  • Porting core tests to integration/unit
  • Porting extension tests to integration/unit.
  • Removing legacy testsuites or ensuring they can be run in a different way (passing the directory name for example).
  • Switching CI to use new entrypoint for unit tests, then for unit and integration tests

Help is wanted in all areas of the above! We can be found in the #wikimedia-codehealth channel and via the phab issues linked in this post.

Credits

The above work has been done and supported by Máté (@TK-999), Amir (@Ladsgroup), Kosta (@kostajh), James (@Jdforrester-WMF), Timo (@Krinkle), Leszek (@WMDE-leszek), Kunal (@Legoktm), Daniel (@daniel), Michael Große (@Michael), Adam (@awight), Antoine (@hashar), JR (@Jrbranaa) and Greg (@greg) along with several others. Thank you!

thanks for reading, and happy testing!

Amir, Kosta, & Máté

Read the whole story
thcipriani
176 days ago
reply
\o/
greggrossmeier
185 days ago
reply
Great work to improve code health at Wikimedia.
SF, US
Share this story
Delete

Why Don’t You Just

2 Shares

This is a rough transcript of short talk I gave at a meeting I was in a few years ago. Enough time has passed that I don’t feel like I’m airing out any dirty laundry, and nothing’s brought this on but the periodic requests I get to publish it. No, I won’t be taking questions. I hope it’s useful to someone.

Can I get a show of hands here? Raise your hands if your job is hard. Raise your hand if there are a lot of difficult trade-offs, weird constraints and complicated edge-cases in it, that aren’t intuitively obvious until you’ve spent a lot of time deep in the guts of the problems you’re working on.

[everyone raises hands]

OK, now keep your hand up if you’re only here for the paycheck and the stickers.

[everyone lowers hands]

I’d like to try to convince you that there’s a negative space around every conversation we have that’s made up of all the assumptions we’ve made, of all the opinions we hold that led us to make whatever claim we’re making. Of all the things that we don’t say out loud that are just as much a part of that conversation as the things we do.

Whenever you look at a problem somebody’s been working on for a week or a month or maybe years and propose a simple, obvious solution that just happens to be the first thing that comes into your head, then you’re also making it crystal clear to people what you think of them and their work.

“I assume your job is simple and obvious.”

“Maybe if you’ve been working on a problem this simple for this long, you’re not that smart.”

“Maybe if it’s taken you this long to solve this simple, obvious problem, maybe the team you’re working with is incompetent?”

“Why has your manager, why has your whole management chain had you working on this problem for so long, when the answer is so simple and obvious?”

“And even if I’m wrong about that, your job doesn’t matter enough for me to be the least bit curious about it.”

There’s not a single person in this room who’d ever say something like this to one of their colleagues’ faces, I hope. But somehow we have a lot of conversations here that involve the phrase “why don’t you just”.

One of the great burdens on us as leaders is that humans have feelings and words mean things. Our effectiveness rests on our ability and willingness to collaborate, and the easiest way to convey that you respect somebody’s work is to have enough curiosity and humility to open conversations with the assumption that maybe the other person’s job is just as challenging and complicated and important as yours.

This “why don’t you just” thing is bullshit. Our people deserve better and I want it to stop.

Thank you.

Read the whole story
thcipriani
244 days ago
reply
greggrossmeier
245 days ago
reply
SF, US
Share this story
Delete

Four Wikipedias to ‘black out’ over EU Copyright Directive

1 Share

Volunteer editor communities in four language Wikipedias—German, Czech, Danish, and Slovak—have decided to black out the sites on 21 March in opposition to the current version of the proposed EU Copyright Directive.

Those language editions of Wikipedia will redirect all visitors to a banner about the directive, blocking access to content on Wikipedia for 24 hours. A final vote on the directive is expected on 26 March.

These independent language communities decided to black out in the same way most decisions are made on Wikipedia—through discussion and consensus, something summarized in a statement from the German Wikipedia volunteer community: “Each of these independent Wikipedia communities has been engaging in public online discussions as to their course of action, and voting on whether and how to protest. They have done this according to their own rules of governance.”

• • •

This is not the first time volunteer editors have decided to take a stand on policy issues that may impact Wikipedia and the broader free and open internet.* However, it is something that happens rarely and with clear intention, and for good reason: Wikipedia’s volunteer communities recognize the importance that any one Wikipedia plays in the world, and its authority as a collection of knowledge, relies upon the neutrality of its content. And as we said in another community-led civic engagement seven years ago, “Wikipedia’s articles are neutral, [but] its existence is not.”

The Wikimedia Foundation supports decisions from our community about how they choose to include the Wikimedia projects in policy issues that directly impact our mission and values. We also recognize that our community is often in the best position to understand the local policy context and make decisions about how the site gets involved.  The Wikimedia Foundation’s role is to respect each community’s decision and work to ensure that their action is supported.

This community governance is a part of what makes Wikipedia and the Wikimedia projects so robust and so unique. These sites are not just about millions of people compiling information, but about providing knowledge equity: ensuring that people everywhere have a say in contributing knowledge and how that knowledge is used.

That’s why the Wikimedia Foundation’s role in these black outs is supportive, focused on ensuring that each community’s decisions are heard, respected, and not disrupted.

Sherwin Siy, Senior Public Policy Manager
Jan Gerlach, Senior Public Policy Manager
Wikimedia Foundation

*In 2011 and 2012, the Italian, English, and Russian Wikipedias went dark in opposition to proposed laws in Italy, the United States, and Russia (respectively).

• • •

The Wikimedia Foundation’s position on the EU Copyright Directive, separate from the opinions of the communities who edit Wikimedia sites, is clear: it would be a net loss for free knowledge in the world. To learn more and find out how to get involved, visit fixcopyright.wikimedia.org.

Read the whole story
greggrossmeier
301 days ago
reply
SF, US
Share this story
Delete

Understanding LF's New “Community Bridge”

1 Share

Yesterday, the Linux Foundation launched a new service, called “Community Bridge” — an ambitious platform that promises a self-service system to handle finances, address security issues, manage CLAs and license compliance, and also bring mentorship to projects. These tasks are difficult work that typically require human intervention, so we understand the allure of automating them; we and our peer organizations have long welcomed newcomers to this field and have together sought collaborative assistance for these issues. Indeed, Community Bridge's offerings bear some similarity to the work of organizations like Apache Software Foundation, the Free Software Foundation, the GNOME Foundation, Open Source Initiative, Software in the Public Interest and Conservancy. People have already begun to ask us to compare this initiative to our work and the work of our peer organizations. This blog post hopefully answers those questions and anticipated similar questions.

Read the whole story
greggrossmeier
309 days ago
reply
SF, US
Share this story
Delete
Next Page of Stories