📜 ⬆️ ⬇️

Software Freedom Day



Today is a special day for all fans of the ideas of Richard Stallman. This man has been the main ideologue of the free software movement since 1983. And today is the anniversary, the tenth annual day of this very freedom.

Despite the fact that the criteria for free software looks pretty wild in conditions of widespread capitalism, this did not prevent the emergence and successful development of such well-known projects such as GNU / Linux, the Apache web server and MediaWiki engine that Wikipedia runs on. And this is only a small part, but in general, programs that are distributed as free, just a myriad. I myself was an ardent supporter of open source software in the past, in particular, it all started with Mandrake Linux, and ended with Arch Linux and the rampant doping of the Awesome tile window manager configs. At that time, he even turned some of his friends into this religion and put Linux on laptops to his parents. Now the rage has subsided, and I feel comfortable sitting behind a fresh version of Ubuntu. :)
')
The free software movement has become a unique phenomenon. It brings together many programmers around the world who daily create and improve applications created by the community. Hone to perfection and give new opportunities. And thanks to their work, initiative and a disinterested approach, today we have a lot of applications that work no worse and often better than their closed commercial counterparts. Yes, and opportunities often surpass them.

We also have quite a few programmers in the Mail.Ru Group who are involved in creating and improving free software. Literally in the last post in our blog, Alexander Emelin told about his open project Centrifuge. Especially for the holiday, we asked to tell other employees about how OSS helps them in their work, and about some of their works, so the word to the authors.

Vladimir Dubrovin (@ z3apa3a), Head of Mail.Ru Mail Testing Group:

All my life I work with open-source software, on open-source software and under open-source software, so "it helped in the work" does not fit the situation, I can say that I live in it. I myself am developing a project of cross-platform proxy server 3proxy - this is a proxy server that allows you to manage application traffic, that is, take into account, restrict, filter, redirect traffic according to various criteria and application protocols. It enters the ports of FreeBSD, NetBSD, Fedora, Gentoo, AltLinux. For quite a long time, I committed to the FreeRADIUS project, I did an audit of the source code and some patches for Postfix, Sendmail, Courier-IMAP and some other well-known projects.

Artem Vybornov (@vibornoff), leading programmer at Pushkin Studio:

I use open source software every day. Yes, in general, all our infrastructure on SPO is spinning, how can it be without it? And from the projects I have asmCrypto - cryptography for browsers, works many times faster than similar libraries, there are already major implementations, if a little refinement will be the implementation of the W3C Web Crypto API standard.

Edward Iskandarov (@toidi), antispam programmer:

Open source is our everything. We use open source software in many places of our system. Starting from data processing and visualization systems to specific libraries. I myself am an ardent supporter of the idea of ​​global cooperation, where successful ideas and implementations can be widely disseminated at the expense of utility to society, rather than intrusive marketing. On the other hand, software projects developed under the aegis of open-source are very tenacious, which is undoubtedly a huge plus for both the community and business. If the project is really interesting, a community emerges around it, in which, if necessary, new leaders can appear or the project can “bud off” to test or develop new ideas, which is also good.

It is very important that open-source imposes small restrictions on the possibility of using code. By starting to use the open-source experience, you are already becoming part of the community and are making a potential contribution. But, another thing is when you become an active participant. Moreover, it is not necessary to spend a lot of energy and personal time on developing your project, you can start by simply getting tickets for the shortcomings of the projects you encounter.

If the work requires it, you can try to understand the source code yourself and then send the developments to the project. People will be grateful to you, and programming skills are pumped. In addition, it is worth noting that employers are beginning to ask profiles on popular source hosting services, and having a solid profile can make a choice in your favor. And, perhaps, you are organizing a business around an open-source project. By the way, there is a huge field for action. Good for you pool of requests.

Dmitry Korobkin (@Octane), project programmer Answers:

I am a JavaScript programmer, so I use the npm package manager almost every day, which contains many open-source modules. One can say, open-source software helps me in my work every day. I compile projects with Grunt , I use UglifyJS to minify js files, I write styles on Stylus in conjunction with nib . In addition to the above, the current project I'm working on at Mail.Ru Group is based on the following open-source solutions: Backbone , jQuery , Lo-Dash , LMD , Fest , FileAPI , etc.

In the npm-piggy bank there is also my open-source module es6-promises - a polyfill for the Promise constructor from the ECMAScript 6 standard. Unlike other similar polyfiles, my implements only standard methods, there is no Promise.cast or Promise.any, therefore, when all browsers will introduce support for Promise, you can safely remove a polyfil, you will not have to rewrite the code using it. Polyfil can work both in the browser and as a Node.js module. Asynchrony is achieved using setImmediate .

Leander Haliullov (@khaliullov), antispam programmer:

You can talk about using open source software for a long time, the simplest thing is to start with the fact that, for example, Perl I use in many projects is open-source, and has been ported to different platforms. Using nginx, httpd Apache won't surprise anyone either, and in fact many sites work for them. I also use different open-source frameworks on both frontends and backends. In general, it is unthinkable how difficult it would be to live without free software! Of course, I tried to help some projects myself, but not so much that I became a committer, rather sort out some patch / feature: udpxy, Icecast, Asuswrt RT-N56U, etc., little by little. I don’t have my own open-ended projects, so a couple of modules for the cobweb didn’t pay much attention to this before, but I understand more and more how important it is and I will try to follow the principles of open source software.

The last thing that fouled up is the management of EnerGenie EG-PMS-LAN from the device :: Gembird . If everyone tries to make a small contribution to what he is interested in, then these projects will develop faster.

Nikolai Timchenko (@nickynick), My.Com mobile application programmer:

I am developing for iOS. It can be said that a few years ago, the open-source culture was absent as such in this community. Of course, there were some significant projects, but there were not even sensible mechanisms for incorporating third-party code into their projects - many developers stupidly copied the source code and were content with this. But then a dependency manager appeared a la RubyGems / npm, plus developers from other platforms gradually crawled in, accustomed to the normal state of affairs, and spun.

In my projects, I use a sufficiently large number of open-source code, but it is important to understand that each next connected library is a partial loss of control over the project. The truly indispensable things include things related to specific functions, for example, the well-known ffmpeg or local GPUImage (a library for high-performance image processing). There is also a local reincarnation of Rx, ReactiveCocoa, which allows you to elegantly unravel very unpleasant pieces of UI code associated with states and reactions to various user actions.

In a given volume, I have contributed to a fairly large number of projects, but there are two popular projects in which I participate. This is Masonry , a convenient wrapper over AutoLayout (the mechanism for positioning views on the screen), and Mantle is a lightweight framework framework aimed at making life easier and reducing the number of boilerplate codes. Recently I have released a couple of my own projects, which I hope to bring to the state of production-ready in the near future and advertise . For example, ArrayDiff is a small thing that effectively calculates the difference between two arrays in the form of inserts, deletes and updates.

Marat Radchenko (@slonopotamus), lead programmer at Allods Team:

At work, the following situation arose: programmers want Git, designers and artists just want to commit. Tried a few months to live on Git'e - does not work. Constant problems with merges, making a working copy in a strange state, a lot of negativity and the plea "give us back SVN". Googling showed that there is a dumb SubGit project, there is still an abandoned (and fiercely slowing down on python) git_svn_server and support for svn-protocol on github , which they give only as part of GitHub Enterprise for a lot of money.

Scratching a turnip, the men said, "What the hell are we programmers?" And git-as-svn was born, the frontend to the git-repository, pretending that it is svn. Features: checkout / update, log, blame, commit (!), Rename detection, svn: eol-style, git-hooks, LDAP authentication, partial checkout, sparse working copy (svn --depth / - set-depth) , git submodules. On benchmarks we compare (and sometimes even overtake) native svn. In the process, they discovered an unimaginable extravaganza in svn, which is worthy of a separate post.

PS Yes, it is written in Java, the one with the unpredictable GC and loves to eat RAM. Of course, it would have been better for a sishechka, but the hell of a damn thing we would then have nafigachili all this for a month.

Andrei Kutuzov (@dystheist), Mail.Ru Search linguist:

I try to use free software whenever possible. This, firstly, in my opinion, is ethically correct, and, secondly, it is most often more convenient, faster and more flexible than not free.

Our Mail.Ru Search Applied Linguistics Group uses free software in almost all tasks. For example, we really needed a high-quality utility for analyzing and parsing web pages with semantic markup (RDF, microdata, etc.). This is necessary in order to then use this data to form search snippets and other important things. Our choice fell on the free library any23 , developed by the Apache Software Foundation project and, of course, the community. We didn’t regret it at all: any23 was perfectly integrated into our workflow. We understood the logic of her work, and in cases where she did something wrong, there was no problem to slightly correct her code. Now with its help, millions of documents are regularly processed, and search users receive beautiful and informative snippets.

I myself do not consider myself a professional programmer, but if I sometimes write something that may be useful for others, I always post it under free licenses. From the most recently implemented projects, we can recall the system of automatic resolution of anaphora in Russian texts. Anaphora is a linguistic phenomenon, when a word (usually a pronoun) does not matter by itself, but is merely a pointer to another word. For example, in the phrase “The dinosaur was walking down the street. Petya saw him and turned pale, ”the word“ him ”indicates a dinosaur. Defining such links is important for many linguistic tasks. Max Ionov and I built a system that with good accuracy highlights the anaphoric connections in any text in Russian. Presented the project at the conference on computer linguistics "Dialogue", made some improvements and posted on github. Now, as far as we know, this is the only freely available detector of anaphoric connections for the Russian language. You can try it here . We will be very happy comments and commits. :)

Artem Drozdov (@Artyomcool), head of the Mail.Ru Agent development for Android:

It is very difficult to call a "case" We have all the most critical places of the project tied to open source libraries. And, in general, Android. He is a little less than full, and this is very often to hand. Here is a partial list of open-source projects used in the work:

LibPhoneNumber is a google library providing a bunch of possibilities for working with phone numbers, parsing the phone entered by the user from the category, retrieving the country / city code, etc.

GreenDao - ORM for android based on code generation. A bit clumsy, but it works much faster than ORMLite. The developers are somewhat strange. When the fork was made, they didn’t accept pull requests in principle. Now they accept, but on condition that they send the signed signed agreement. In their version, code generation is triggered by hands, which is again a bit strange when the age of assembly systems is outside. I forked from the fork supporting the build at the gradle-plugin level, allowing to generate the corresponding code automatically when building. Sawed the automatic upgrade for most cases of changing the database schema, added the ability to save / load data with custom serializers (which allows Kryo to be used to save / load the serialized data as quickly as possible), well, it expanded the capabilities of gradle-plugin for working with composite indexes.

GSON - here, in general, there is nothing to explain, one of the most used libraries for working with JSON. Not bad optimized in terms of garbage collection, which allows us to recommend it for use in mobile phones, where this is always a problem.

Kryo is the fastest library for serializing / deserializing arbitrary objects. Very comfortable.

Guava is also, in general, nothing to explain, a bunch of utilities, a lot of pieces, which are simply not enough in standard Java.

Gson-XML is a slightly controversial library, but it allows you to quickly (in terms of development time) tuck GSON to deserialize XML.

AndroidAnnotations is just something. A library based on code generation that allows you to get rid of a large amount of absolutely nothing doing code that is so peculiar to Java, and even more so Android, and focus on, in fact, work. An order of magnitude simplifies the creation and support of an adequate architecture for large Android applications, incl. due to the provision of dependency-injection. It greatly facilitates the work with the UI, especially the creation of its own components. In general, it is very hard to live on an android without AndroidAnnotations.

Each one of them is very helpful. Especially AndroidAnnotations, so I relatively often make pull-requests to this project.

Pavel Cherenkov (@pcherenkov), system programmer of My World:

Life example: in 2001, Red Hat 7.3 helped me. There was a crisis, and I was out of work. I had an old, low-power computer and had absolutely no money for a new one. I installed Red Hat and got a completely capable environment for finding work on the Internet, writing resumes, maintaining mail and programming in POSIX-compatible systems, which I then decided to reorient myself professionally.

There is a small open source project within GPLv3, (quite widely) known among IPTV enthusiasts: udpxy is a proxy server of multicast streams. The project started in 2008 as a utility for Asus Wl-500g routers, the application was included in the open firmware "from Oleg". Currently, udpxy is standardly included in various firmwares of “home” wifi routers, used by IPTV users and providers, the server part of many IPTV OTT solutions is based on it. The application was adapted (by the community, in separate branches) to work on virtually all modern operating systems (and hardware platforms) that support the POSIX API for working with the network.

Arseny Zhizhelev (@primetalk), senior programmer at Allods Team:

What does software freedom mean to me?

The possibility of free use of unlimited set of professional software from different areas. Despite the fact that for my main activity I am ready to buy software (OS, accounting software, antivirus), sometimes there are tasks from related areas. And to solve them, I would like to use high-grade professional software, and buying is unprofitable.

Right to use in any way, arbitrary reconfiguration. For system administration purposes, there is a need to configure several isolated containers with a different set of programs. In the case of free software (Ubuntu) this option is available. And what to do with proprietary software? Has the owner of exclusive rights authorized this way of use? Did he foresee it at all?

Clear and standardized license agreements. No obligation to sell the soul to the devil in licensing agreements. Modern open source software is usually accompanied by one of the standard licenses. You can study these licenses once, understand how they differ, and almost never return to this issue. In the case of proprietary software, the owners each time invent a new license containing their pitfalls. There are cases when paragraphs that a sane person would never agree to were intentionally included in license agreements.

Lack of artificial restrictions designed for entry-level users. A version of the product is released, which is technically advanced, and certain uses are prohibited in the license. . , , . , .

. , Jabber, Skype', .

. Skype , . ?

. Ubuntu , . , . .

:

. , , . , . , SynapseGrid , . Functional reactive programming, . , . , API.

, - — , (), «» .

, . patch' , , .

, , .. - . , , , .

(@blackm00n), My.Com:

iOS, . , 20 . - , .

? , libPhoneNumber-iOS . JSON Mantle . , CoreData, mogenerator . Masonry AutoLayout . WebSocket, SocketRocket . , , , cocoapods , . , .

, :
QTree-objc — - Quadtree. : (, ..), . , , , . . .
AKNumericFormatter — , .. .
AKTransliteration — , ru <-> en .

, , ! , IT , . Thank!

?

Source: https://habr.com/ru/post/237025/


All Articles