Working as an intern for "the spyware corporation"

2019-06-24
#garbage #sophistry

A few notes upfront…

This post was supposed to come out as soon as it was finished. Well it looks complete but for some reason I couldn’t remember, I never made it public. Published 2024-02-17 without further modification.

Original post starts below.

If you are still unaware, the title is just sarcasm. As far as I know, the division I was working for does not work on any spyware.

Also, this article is not approved by the propaganda division whatsoever. Everything is straight up garbage.

The Decision

As I have made up my mind to ‘strategically’ delay my graduation by a year, I initially hoped for taking the following months off and I did not plan for my graduation thesis at all. Therefore I intentionally skipped the subject selection process. All I wanted to do is chill for half an year and maybe make some contributions to several free software projects. Teachers noticed this and managed to persuade me to finish the graduation thesis this year. Only at this time did I realize how stupid I was – I am going to contribute to projects anyway, why don’t I take the chance to finish my thesis?

However, as I have missed the opportunity to work on projects led by professors in my college, I had to look for intern jobs elsewhere. As I am not going to work for unethical companies, many companies my classmates are rushing into are not feasible for me. But actually I already have my choice in my mind: cause I am really interested in spying on how the ‘spyware corporation’ works on a daily basis.

Finally, the choice was made. I tossed in my CV, which was put together in 5 minutes to them. Before long I got a quick reply. With everything settled down rather quickly, off I went.

To sum it up, it was because:

  • I was curious.
  • I had plenty of time to waste.
  • I wanted to get away from the campus I already spent 3 years in.
  • with the additional benefit of finishing my graduation project.

The Workplace, the Colleagues and the Life

The workplace is nothing fancy. Dimly lighted, the work area is fairly cozy, possibly designed specially for us cavern-dwelling programmers. Computing devices are scattered throughout the enormous room, in which 90% of the local employees work.

Co-workers here are competent to say at least (until they started rushing V20, as noted below). To list a few:

  • BLumia: no more elaboration needed.
  • Kirigaya: a little bit mean, a little bit naughty, but still nice guy to chat with.
  • zccrs: damn this guy definitely knows what he is doing when reviewing my shitty code. Rumors has it that he was once a wizard working for Nokia.
  • Hualet: that one who interviewed me. Passionate about free software. We talk quite a lot in private.

Life quality in Wuhan was not a huge degradation compared to that of my university times, I’d put it that way. Commute times weren’t super long, foods here are nice (at least it rids me of the same kind of foods I had to have everyday on the campus), also I could for the first time cook for myself.

Stereotype of the climate in southern China was broken: your clothes will be able to dry within a day, and you couldn’t really squeeze water out of the air.

Public transit in Wuhan was tolerable until you got out of reach of the metro: the bus service was horrendous. There was no indication of where the actual station was, and the bus stops randomly ‘roughly around’. I tried it once and dreaded having to take a bus ever since (fortunately, I didn’t).

I lived in a rental room provided by Ziroom, which is essentially an apartment rental service broker. The apartment was shared by 5 persons, from which formed 2 couples, and … you guessed it, me. The room was relatively small (around 14m2 in area), but super snug compared to my dorm in university. The real reason I find it that way, however, could ultimately be the fact that I was the only one inside and could do what ever I want.

Interactions with roommates were minimal. In fact, I intentionally avoid interactions with my roommates because I was that type of a person.

By the way, cooking is really deep a rabbit hole and I’m just getting down into it.

All in all, it was a freshing experience for ‘an extremely spoiled child’ (as all my family members told me). I had fun, and I came back with every body part intact. I’m content with it.

My work

I mainly worked on the following things:

  • Adding basic optical disc authoring functionality to the file manager.
  • Move network configuration in the control center to the new code base.
  • Giving the computer view in the file manager its new look.
  • Random bug fixes in the file manager.
  • A small portion of utility classes in DTK.

There’s a lot of other miscellaneous stuff I did, some of which involves seizure-inducing programming languages [1]. I’m not going to list those things here.

Actually, I promised to help revamping the infrastructure when I entered Deepin, mainly to improve its transparency (like Debian). However…

  • They didn’t care.
  • I wasn’t given time to do anything about it.
  • I barely learned enough about how the current infrastructure works.

And the promise was thrown straight out of the window.

Payment

Now looking back, I guess I was basically free labor [2] , donating my time to Deepin. I literately don’t care though, because I didn’t came for the money. It could be cringe-inducing to say, but their payment actually exceeded my initial expectation.

By the way I actually even saved up a couple thousand during my time there. (Setting aside the fee ETS charged me for TOEFL and GRE of course. Those are nothing but f*cking cash grabs.) Guess it’s due to my extremely thrifty (stingy even) nature [3].

Final Days & The days after

I made my final commit on November 15th, and ended my internship on the same day.

I stayed in Wuhan for another 30 days intermittently, finishing my final TOEFL test, visiting places, meeting with people, and most frequently of all, chilling in my ‘secret bear den’ (which refers to my rental room, obviously). Quite shockingly, I somehow managed to keep basically the same sleep schedule as the one before my internship ended.

I returned home on January 3rd, and I was as lucky as one can ever be, cause all the coronavirus shenanigans just started to cook up.

Shitty Code

Never have I felt so involved with a programmer humor post until I have to actually deal with an old code base.

pasteFilesV2 also deletes file

When called with some obscene parameters, this function actually delete a file. What the hell.

Even my code is arguably less shitty in this regard.

Practically no coding conventions.

Mixing tabs and spaces. Different indentation conventions. Incompatible naming schemes and even misspelled words in identifiers. You name it.

In fact, deepin does have coding conventions, as listed here and here. [4] Unfortunately, they are actively broken everyday in most projects.

In defense of deepin though, this problem bothers a lot of other open source projects as well. My limited experience working with KDE’s codebase has already exposed that at least parts of KDE (namely libksysguard) suffers from the same problem.

Weirdness, quirks and other strange things

“Developers’ lives matter!”

C’mon. If you have to equip your developers with computers that have inferior specs than your system requirements, don’t expect them to be super productive.

Of course I understand they are currently under a rather tight budget, but they are offering quad core Core i5 to testers and new employees (some of which are quite incompetent, as described in the next section).

Also, they refrain to provide necessary hardware for development. When I was adding optical disc authoring functionality to the file manager, my request to have a dedicated external optical drive was denied for some bizarre reason, and I had to share two optical drives with the testing department and the technical support department. This significantly hindered the development of the said feature, until I found a spare internal drive in the warehouse.

Sometimes my friends there joked about the dessert as promised by the recruiter wasn’t being resupplied in time. For me, the dessert was really a surplus – I just want a computer that takes less than half an hour to build something!

Incompetent coworkers start to pop up

At a certain point of time (around June), I noticed a significant increase of personnel inside deepin. Many of these new employees are improperly trained. They don’t know how to incorporate git into the work flow (some know nothing about basic git concepts, or even about Linux at all), don’t look up documentation when troubled (instead they turn to CSDN [5] for help). As a result, the company had to spend extra time teaching them basic stuff, which to me seems a real waste of time.

These incompetent employees are a major source of pain for project leaders. Some of them spent an entire day trying to figure out the cause of a very simple bug, without any level of success. Fortunately for deepin, most of them can reach some degree of competency after a few weeks of work (although they are still sometimes seen typing git commands from their notebooks).

“Designer-driven” development

This is a truly hilarious one. Here at Deepin (especially the project I’m personally working on, the file manager), product manager doesn’t decide what the program should be capable to do, the artistic designer does. The artistic designer almost has sole dictation on the specification of the product in this regard. We as developers can certainly dispute, but cases in which the designers changed their minds were rather rare, and most effort we made to persuade them was futile.

By the way the current artistic designer is a very dedicated Apple fanboy. Expect some very Apple-ish bullshit in the next release.

Code review, or “code flattery”?

Code review is mandatory for every commit in Deepin. However policy of code review varied from people to people. The only one that really took it seriously was zccrs, who could almost always pick out the code where I screwed up [6].

On the other end of the spectrum was my friend, BLumia. His code review was usually just going through my code once, and seldom demand changes. At first I thought he was just giving me free passes, until I noticed obvious mistakes made by other coworkers that somehow slipped through code review. [7]

Privacy issues?

I didn’t get to work on anything that actively connects to the Internet. So my position basically stayed the same as stated in my last article. To reiterate:

  • They did a poor job dealing with public relationship.
  • Telemetry should be off by default, or the user should be prompted whether they want it on installation.
  • It’s free software though! You can check the code and strip everything unwanted.

However, it’s probably getting even worse for Deepin (the distribution) users. I was told that an identifier of the user’s computer along with its specification might be used in the future. If you want to keep using DDE, but you still value your privacy, maybe consider moving to another distribution and install DDE there [8].

Dick moves

… as taken literally

As the amount of employees increases, space originally designated for everything else was re-purposed into work area. We had to move around while still working. Things were not looking good.

Finally at the end of September, the company moved. This is regarded as the reaction to their increasing demand of workforces (as the old place has become very jam packed due to the sky rocketing number of staff), but it was also a very under-prepared dick move. Formal announcement of the move wasn’t published until the very last day. The new place is in the middle of nowhere and barely furnished. There are also two more completely empty floors, which are the source of later pains.

The new place is much farther away, taking almost an hour by metro, or 40 minutes by commute shuttles. This forces me to get up a lot earlier, which is very disturbing. My overall life quality had definitely taken a punch after that.

The place is actually bought from Huawei, who left a complete mess behind when they withdrew themselves from the place. Soon after we moved in, drilling and hammering sounds could be heard up stairs left and right. It was actually very nerve wrecking.

As the company hasn’t yet settled down completely, many promised treatments are thrown out of the window. These include: desserts served during work hours (which are actually served as usual, but the amount didn’t increase as the number of employee rises. As a result, it’s basically gone.), monthly birthday celebration for employees, showering facilities, etc.

This dick move made some of the coworkers staring to reconsider their life choices seriously.

Rushing V20

V20 is going to be the next major release of Deepin. Initially the planning for this release was rather relaxed: this major overhaul was projected to take about a year to mature, during which another one or two maintenance releases of the current Deepin 15 were planned. However, for some reason unknown to us [9], the deadline was pushed back by a huge margin: now it’s expected to be released somewhere between Q4 2019 and Q1 2020.

Now, suddenly the rapid increase of personnel makes sense. But I have to question the quality of the resulting software – and it’s not looking too good for them either. Many of the new applications suffer from major performance deficiency: one of the development snapshots of Deepin picture viewer takes more than two minutes to startup, and completely blacks out if the window is resized, the new archive manager can cause major lags on the file manager. Hell, even my own creation, the new computer view for Deepin file manager, suffers from some performance issues while resizing. But I simply didn’t have the time to address it completely.

Wheels have been reinvented during the sprint, lots of them. In fact, it seems to be one of their goals to out-source no applications from other desktop environments. They even created a browser (based on the Chromium code base, of course) with the help from Qihoo 360 and an IME with the help from Sougou. I could give Deepin credit for the effort, but the quality of these wheels are questionable at best.

Lacking / bad community interaction

This is more or less the same thing as what I have already wrote in ‘The “Deepin is spyware” problem’. But now that I have more insight, I could write more on this topic.

Deepin is a for-profit company, feature requests from commercial customers always take priority. As the number of employees barely meets the need to develop those features, requests from the community are usually ignored straight away. Such filtering happens before the developers could see the feature requests – we won’t know about them unless we browse the support forum ourselves.

The ‘designer-central’ process is very problematic too. In my opinion, Deepin’s chief designer is extremely self-centric, narcissistic even. This resulted in some very serious uproar in the community such as this one: https://github.com/linuxdeepin/developer-center/issues/1210#issuecomment-496341368 Sometimes even the developers couldn’t put up with these design choices, and added hidden options for switching to something more sensible.

Illegal business practice

Namely, deepin-wine breaking GNU LGPL.

Deepin has been distributing a fork of an outdated branch of wine without releasing the source code for quite some time, which is a very explicit disregard to wine’s license.

They have promised to release the source code, but has yet to do so. In the mean time, wine has made three stable releases. So far they have only came up with a single justification: the fear of their domestic commercial competitors [10]‘stealing’ their hard work. If this bullshit stands for even a second, everybody on this planet would have been a drug dealer ’cause laws don’t do shit.

To be frank, we have dozens of (L)GPL breakers here in China and we never stop producing even more of them. We have Allwinner and XiaoMi, to name a few. FFmpeg’s original hall of shame page would give you a even longer list, and you will find the names of some gargantuan Chinese tech companies in it.

I don’t even think Deepin’s international acceptance has anything to do with its commercial success (or lack thereof). Do they even have any overseas commercial customers? If Deepin has really been a commercial success, I probably wouldn’t have to develop with a computer equipped a shitty Pentium that otherwise would find its home in the dumpster.

Restructure shenanigans

Walking away from “the founders’ spirits”

This is definitely, definitely a huge misstep and a real deal breaker.

IMO Deepin was once among the best meritocracy free software community in China. However with the changes applying to their roadmap since v20, everything started to disintegrate.

Barriers were deliberately added to the community contribution process (the repositories on GitHub are now merely synced with internal repositories). Writing documentation was considered slacking (happened to me a couple of times), making the already terrible documentation situation even worse. They basically stopped even trying to make the development process transparent to the public.

User’s freedom was thrown out of the window. Community edition now requires logging into an online account to enable root access, which is basically the first step to a complete vendor lock down. I imagine many users would resort to other distros and install DDE instead (if they still fancy using DDE in its new look and feel).

Don’t get me wrong. DDE was (and still is) a beautiful desktop environment (even only superficially as some people might thought). It has followers who will use it no matter what. However, it demands a fork. A fork with its founders’ spirits in mind.

Epilogue

I’ve actually tried out the current public beta of Deepin V20 as of writing this section, and the majority of the issues I mentioned above still hold up. Grave performance degradation seems a lot less common though, although my shitty-performing computer view code has barely been touched since I left. A lot of applications are still in dare need of polishing. They’d better keep those commits flowin’.

At this point of time I don’t even know what I was rambling about. It was 1:40 in the morning. Did I just typed over 15000 characters only to diss Deepin? Nope. Dwelling on our past success never makes us progress. It’s the reflection upon the mistakes we made that does.

https://www.zhihu.com/question/344339517/answer/817025546



[1]: vala?
[2]: and definitely not a shitty one that only does repetitive work! In fact while I was once chatting with Hualet, he told me I was probably among the best interns ever here.
[3]: cough cough, RTX 2080, cough cough.
[4]: These were formerly available on a documentation website on one of deepin’s domains, but were somehow taken down later.
[5]: CSDN is a blogging platform and a forum for Chinese developers. We don’t have stackoverflow or a clone of it here in China, so CSDN became the savior of many Chinese programmers. Unfortunately most of the user base of CSDN are equally bad as these new employees.
[6]: His code reviews were sometimes even to a degree of nitpicking, but I’m not really complaining since my code is shit.
[7]: To BLumia: if you are reading this, I’m not trying to be harsh here. It’s just a small reminder that you should probably pay more attention to code review (if you’re still doing it).
[8]: A lot of this stuff is specific to Deepin (the distribution), so you can get rid of most (but not all) of them by doing so.
[9]: everyone has their own speculations, of course. Mine is that they wish to hand out a surprising present to their users, which I don’t feel super positive for.
[10]: Please, don’t mention the ones backed by the government (or in other words, ‘GuanXi’). They are not an excuse for breaking laws or licenses.