As I was an open source ...

    Once upon a time, in one distant, faraway Galaxy ...


    It all started quite prosaically ... there was a desire to finalize the software product, but there was not the slightest idea how it was arranged there ... and it was a long time ago, a long time ago ...

      Probably in 2003 ...By that time, I had been a user of the Slackware distribution for quite some time, so I already knew pretty well how to build software, but I really lacked the knowledge of "C" (looking ahead, I admit that I don’t know it very well: ) Nevertheless, I really wanted to add one feature useful to me in Midnight Commander. Namely, the option of sorting files when the first are “executable files”, as is done for example in far. With the help of ICQ, stupid questions for buddies-sishniks and perseverance worthy of a better application, poorly poorly managed to do what I wanted ... albeit crookedly ... But the main thing it worked! (what a buzz to ditch 2 days but to do what I wanted)
    I didn’t touch more on mc stopping at what had been achieved ... Years passed ... :)

    ASUS wl-500gP


      At some point in time, about 2-3 years ago, I became the happy owner of a funny white box, with a proud name - Asus WL500g Premium. Because Since my mother mc from the oleo repository was completely “not very”, I had to sit down and saw it so that it was possible poorly able to work with names in UTF-8 ... I had to cut pretty because with UTF-8 patches from Debian and FC mc was going to mc on flatly refused the box, it was not easy, but I still assilated ... (I was in shock :)). Given the practically zero knowledge of si, the process was somewhat delayed. But when everything was finished, the result in the form of a ready-made package I posted on the appropriate forum, for the same suffering UTF in mc on the "box".

      As a result of picking, I certainly did not learn si, I just realized that, in principle, a little perseverance and patience is enough to make small patches. The main thing is not to break the system too much and use XP ( Extreme Programming ) tricks such as Continuous code working, etc. So I decided to take up the first project under the “box”, it is an easy DC ++ client that could work on completely dead hardware, had good support for national languages ​​and could distribute and receive files in parts and from different sources. The approach of the wget utility was chosen as a concept, i.e. We give the link to the utility, and then it does everything by itself and exits when the job is done. So the idea of ​​the console DC ++ dcget client was born. After looking at a lot of lightweight open source projects, I foundShakesPeer , which is a client-server implementation of DC ++ client, which is based on communication through UI sockets and the engine itself, which is engaged in downloading and distributing content.
    So I decided to fork it by adding the missing functionality to me. The task was not so difficult, but navigating through someone else's code was a lot of inconvenience, it needed a suitable editor. I really lacked an editor similar to the far editor with similar keyboard shortcuts, and its ability to work with source code, such as switching to defining functions and other pleasant things inherent in convenient editors. In order not to be misery at all, I set up the necessary tools in vim that turned it into an IDE and slowly used it. But it’s hard to retrain an old dog with new tricks. To remember 3 sets of hot keys on the machine turned out to be an overwhelming task for me, and it happened that when I worked at far, I automatically ported the text to vim and vice versa ... it happened that I could not do without a mat (somewhere I already said that ... :).

    Midnight commander


      In the meantime, I came across news on opennet that a new version of mc appeared with additional patches, such as coloring files and other useful little things (many of which, by the way, were already in my assembly under the “box”) and decided to contact a team in terms of "share experience" and give a couple of their minor patches from the assembly under WL500gP. As it turned out, the guys were “a friendly young, promising team” () :) with which it’s easy to find a common language and understanding. All that had to be done in order to join the team was to make a private and public key and send the received public key to Patrick Wienertz so that I would be registered on the Midnight Commander's website and I would have access to write to the git repository. So it all started ...

      So, what was the bottom line: inability to use git, lack of knowledge of the C language, programming experience in many languages ​​and a great desire to make mcedit more convenient to use with an editor that has the same set of features as far. My first adopted patch was just a patch that displays executable files at the top of the list. This time the patch was implemented ideologically true and was not a dirty hack. Fortunately, the team included those who looked at my patches and did a great job of revising my code without them, I probably would not have mastered a tenth of what was written. As a result, I got an editor that fully meets my needs in terms of using it as an IDE. And what’s most interesting - almost everything that I needed there was already there, only buried so deep that I couldn’t get there, or in a slightly "unfinished" state. In general, the more I dribbled with the editor’s text, the more I found unrealized features, sometimes it was funny that after completing the next patch I found a similar implementation, in a very unexpected place, after which I deleted my own and finalized what I had to the right condition ... The approach is basically it was like this - to make your code simple and understandable for further maintenance, and to the maximum fit into the overall concept and style of the project.

    So I became a typical red-eyed open source :), in the evening coding for the soul, in the afternoon writing reports and forms in the company where I work.

    Conclusions :)


      By the way, writing open source code is just a freebie from the programmer’s point of view :), everything you need is usually written before you, and you just need to find the code you need and successfully copy it :) I understand of course that everything sooner or later bothers ends ... even the most interesting things. And there are also quite uninteresting ones, such as searching and fixing not obvious and difficult-to-repeat bugs, but what can you do when you get into a sect so it’s not easy to get out of it :)) But I hope this happens, not before fixing the last critical problem, as it’s not I want to let the guys down ...

      Teamwork is, of course, a separate topic ... an interesting experience from the point of view of the programmer - code revisions, pair programming, discussion of tasks and ways of possible implementation, and other, other ...

    fin


    PS: so, having received the necessary and convenient tool for working on my craft - dcget, I lost almost complete interest in it ... ce la vie :)

    PPS: although if someone is interested in the console DC ++ client under * nix, I beg you.

    Sorry for some crumpled narration, freaking T9 :)

    Also popular now: