The purpose of this post is to convey information about how to protect IT solutions in Russia - patents, copyright, know-how. Protesters against intellectual property - please do not come here. We will not plant debates, hundreds of them ...
First of all, let's start from the beginning to build a terminology that we will use in the future. Our first task is to understand the relationship between the algorithm and the computer program.
Task
Suppose we have a task that was given to the programmer Valera, whose intellectual work we are going to protect.
There is a sequence of integers:
1, 4, 0, 3, 7, 11
It is required to sort the numbers in ascending order, i.e. bring them to mind
0, 1, 3, 4, 7, 11
To solve this problem it is necessary to develop an algorithm.
The algorithm is a method for solving computational and other problems , which precisely prescribes how and in what sequence to obtain a result that is uniquely determined by the source data .
Valera has developed an algorithm that solves the problem. To simplify, he “developed / invented” bubble sorting, the flowchart of which looks like this:

And he wrote several implementations of this algorithm in the form of computer programs.
Computer program - presented in an objective form, a set of data and commands intended for the operation of a computer and other computer devices in order to obtain a certain result , including preparatory materials obtained during the development of a computer program and the audiovisual displays generated by it (article 1261 of the Civil Code of the Russian Federation).
Those. he wrote one program in C:
#define SWAP(A, B) { int t = A; A = B; B = t; } void bubblesort(int *a, int n) { int i, j; for (i = n - 1; i > 0; i--) { for (j = 0; j < i; j++) { if (a[j] > a[j + 1]) SWAP( a[j], a[j + 1] ); } } }
')
Second in Python:
def swap(arr, i, j): arr[i], arr[j] = arr[j], arr[i] def bubble_sort(arr): i = len(arr) while i > 1: for j in xrange(i - 1): if arr[j] > arr[j + 1]: swap(arr, j, j + 1) i -= 1
And the third is in assembler:
mov bx, offset array mov cx, n for_i: dec cx xor dx, dx for_j: cmp dx, cx jae exit_for_j jbe no_swap mov ah, byte ptr bx[di] mov byte ptr bx[di], al mov byte ptr bx[si], ah no_swap: inc dx jmp for_j exit_for_j: loop for_i
Hence the following statement, rather banal:
A single
algorithm can have
many implementations , both within a single programming language, and
in different programming languages . And, on the contrary,
in any
computer program (we do not take degenerate cases) there
is always some kind of
algorithm .
And now the question arises: "How and what of this, and in what way, can we protect within the law?"
Algorithm protection
Patents

The algorithm of the computer program, you can get a patent for the invention (method), subject to all the conditions for inventions:
- Presence of novelty;
- Inventive step;
- Industrial Applicability.
And the presence of a technical result.
Examples of technical results can be:
- speeding up access to relevant information
Patent RU2456661 “EFFECTIVE NAVIGATION OF SEARCH RESULTS”, MICROSOFT CORPORATION (US) - improving the quality of search
Patent RU2460131 “EQUIPMENT OF A USER INTERFACE BY EXPANSION OF SEARCH REQUESTS”, HUGL INC. (US)
Pros of patents:
- Protect the algorithm and any of its implementations in any programming language;
- Valid for 20 years.
Cons of patents:
- National / regional in nature - protection is valid only in the countries where the patent application was filed;
- Quite perceptibly "hit the pocket" in the case of patenting abroad;
- Long term of obtaining a patent (1.5 years in the Russian Federation, 3-4 years in the USA, more than 4 years in Europe).

What are the costs of a patent (prices are approximately, for evaluation):
- Fees:
- RF - ~ 10 000 rub .;
- USA - ~ 3,000 USD;
- Europe from April 1, 2014 (unitary patent) - ~ 4750 Euro (filing fee);
- Patent Attorneys (for filing an application in another state) - ~ 2000 Euro for each country;
- Translation of an application into another language - from 20,000 rubles;
- Consulting services - a wide range of prices from 20,000 to 200,000 rubles. (if you do in foreign companies, it is even more expensive).
Know-how or trade secret

Also, if there is no money, then you can enter a trade secret mode in the enterprise / organization.
It does not make sense to dwell in detail, because This topic is widely painted on the Internet.
Know-how advantages:
- Low cost implementation
- Protection against leakage of ideas from the team
Know-how has several minuses:
- No protection against reverse engineering;
- There is no protection from the development of your analogue by another company;
- The ability to "get" under the patent disassembly, if someone cleverly patents similar to your decision.
Mixed Type - Know-how + Patents
A very common solution. Patents protect the main part of the system, and all implementation details, “tweaks” are protected in the know-how mode.
Pros:
- Saving money compared to pure patent protection;
- No one can completely repeat your decision (by legal means), since the details are hidden from outsiders, but the main functionality is covered by patents.
Minuses:
- Combined minuses - the part protected by know-how, has minuses as at know-how, the part protected by patents - minuses of patent protection.
Computer security program

Computer programs are protected as literary works by copyright, and therefore protect the specific implementation of the algorithm, and not the algorithm itself.
To declare your authorship, you can use, as a simple option, send a letter from the series with a printout of the source to yourself through the Russian post, and you can register the computer program with Rospatent (deposition), but not more than 70 pages, however break into pieces. Also, when registering with Rospatent, you can attach audiovisual displays to the computer program, and simply screenshots of the program, which you can later use to protect the interface from fakes or direct copying.
Pros:
- Protection of the program from the "leakage" of sources;
- Protection from copying the interface (within reasonable limits).
Minuses:
- Protecting a specific implementation, not an algorithm (it’s not possible to protect a registered Python program from implementation in an assembler);
- Frequently changing the source code requires frequent “gestures”.
Putting it all together in the form of a FAQ
I want to protect my idea from implementation by competitors:
I want to "stake out" my algorithm for myself:
I developed unique algorithms that can steal:
I am afraid that my idea will be stolen using the reverse engineering method:
What to do so that the idea is not stolen:
What to do so that the idea does not flow away from the company along with the employees:
- Introducing Commercial Secret
How to protect against source leakage:
How to stake out the authorship of the program for yourself:
How to protect the interface from fakes
- Registration (deposit) of the computer program
Instead of an afterword

While our developers are sleeping ... Large corporations are moving to the national phase in Russia. According to statistics, Microsoft files applications in the Russian Federation for more than 100 patents annually. Among the software patents noted the same: VISA, AVG, MOTOROLA, FORD (see
patent ), GOOGLE, FACEBOOK, INTEL ... thousands of them.
And what about us?
Most Russian software companies ignore intellectual property. Of those who managed to light up in the field of intellectual property - Abbyy (about 17 patents of the Russian Federation), Kaspersky Lab (43 patents), and some of our research institutes. This alignment is a bit sad for several factors - no one is immune from patent lawsuits from the above listed companies, patent trolls, and all of this can come back to pressure at any stage of the project.
Used literature and sources
www.uspto.gov - US Patent Office website
www1.fips.ru - Russian Patent Office website
epo.org - European Patent Office website
Questions / Wishes / Updates?