GNU/Free Software Question

Hey guys

Watched a decent about of Richard Stallman interviews today (I expected him to have deeper voice :slight_smile:) on my dive in to linux have heard his name quite a bit and became interested in him and learning about GNU and the free software movement.

As someone that is looking into Linux (switch/switching to Linux) and wants to become a software developer, how would this effect me? I enjoy coding and learning computer science, but it takes a time to learn like any occupation. How do developers of free software make money? Only though adds or companies or what?

I am unknowing of the subject and am trying to see where I personally stand on the matter. I am completely agonist the current invasion of privacy from government agencies (and companies) and I think if you buy a product you should be able to do what ever you want to it, but I do see why ( in my current understanding of how things work) DVD and CD as well as online media have things like DRMs so that people don't steal a artist work.

I know this is controversial topic so feel free to delete it if gets out of hand. Also my options are subject to change and have a better chance to with explanation of points.

1 Like

I'm not an expert, not even somewhat knowledgeable.
From what I've seen, some make money by selling services for whatever free software IE: teaching how to use or fixing bugs, remote installs. Some charge for packaging.

A large part of security is auditing. Having source code freely available for so much software helps to expose vulnerabilities as well as improve the overall quality of the software itself.

As far as sustainability, consider Red Hat. Paid support for an otherwise free and open system. It's the expertise and the time that big enterprise clients pay for. The tools are there for everyone. Little guys like us home users were never going to pay big bucks for enterprise support, so the software may as well be free for us to use and improve. Having free software makes the system about accomplishing a task and educating others to accomplish more. I'm fine with proprietary software- sometimes you have to protect your ideas, although it's taken advantage of by big companies like ms and nvidia sucking data upstream. Free software eliminates this, and allows things like VPN companies to spring up and use the openvpn protocol as a paid service; i.e., the protocol has been audited and used and is reasonably hardened, but the servers and keys belong to the private companies. No respectable VPN provider would set up an endpoint using closed source software that another company made.

I see the benefit of this and understand how that can make software better as a whole.

I can see how the software can be free, but the service isn't that is a great concept. Things like data collection should just be flat out illegal or be able to be turned off, even if they are on by default.( I can see how some reporting can help people that are non technical and improve the usability of the software). Under an free software model how do things like phone apps/app stores fit, I mean Ad(s) are still a form of payment( in my eyes, if i have to take 30sec to watch an ad i am paying with my time. A much more valuable resource than my money . If I have billions or i am penny less time i can not afford to waste. ). So how would a developer make money? I really want to like the idea, but it feels so non profitable for people that work there ass off on a project ya know.

Bountysource is one place where someone with coding experience could go to make a few bucks while contributing to open source projects. I haven't seen anything else quite like it, and seems like an interesting concept.

I kind of like the idea that people can practice and get their feet wet with some small open source projects, and then use that as a stepping stone to either cash in on bounties, do kickstarters, or get involved in other projects that make decent money through donations. But I really like the idea that people fund bounties and get what they want fixed vs supporting the largest groups (big foundations and distros) and just hoping they make what the community wants.

Ubuntu would be a good example. I wonder how many dollars were donated in hopes of getting Mir, or an Ubuntu phone, or other large projects that fell flat. If the bounty thing took off, it would create more software and bug fixes, which could bring more donation dollars, which could attract more talented programmers.

There is nothing that says you can't sell free software on the App store. I have at least one app I have paid for on my phone. The risk you run however is that someone forks your code and gives it away for free. Another popular method is donations, but it is hard for me to say how much money that typically bring

Mobile is harder I think for free software. Its so saturated with junk and 50 programs of the same thing, add on top that what people are willing to pay is already absolutely minuscule, you have to offer something others don't have.

You can make a free software program on android and sell it and make money, if you can offer something others cant. People can still go get the code and compile it themselves and run it without paying you but that's free software you'll always get people like that (you'll get people like that even with proprietary software), though they cant use the same name.

What are you basing your idea of a profit model on? It's unprofitable is you use the wrong model. Its already not very profitable in mobile in the first place.

I see the point. Don't see a free model working for everything things is all i am saying, phones are just an easy one because it is a mine field of rip off of other software anyway .

I was using it just as an example, since it is a large market that is already like you said saturated with junk, What I was really trying to say was what is the point of creating software if you can sell it, then some random person forks it for free? I mean phone market no one wants to pay for apps I get that, but with proprietary software and at least having the name and copyrights of assets you can spread it, like if games like clash of clans were forked (I know tons of rip offs) and people could just name it clash of clans add a cheaper pay model then the original developer can no longer make money off there work, when the person that forked clash of clans now makes money for not nearly the same work. ( this would happen till it is free and then dies due to severs cost money). I am all for Open source projects and ideas, but I do not see how it will be profitable if all software is free. I really like open source software and try to use them and donate when I can, but I don' t think other people will that are around me. I am unknowing about this topic like I said looking for answers to how all this works ya know.

That would depend on who you ask.

There are two main classifications of reasoning.

The first are the four freedoms, and generally regarded as what is required at minimum for a program to be considered free and to give the user the essential freedom to control the program on their device.

https://www.gnu.org/philosophy/free-sw.en.html

A program is free software if the program's users have the four essential freedoms:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

The other is open source, broadly speaking is somewhat similar to the free software definition but less specific about user freedom and more about the code being open.

https://opensource.org/osd

  1. Free Redistribution
    The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

  2. Source Code
    The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost, preferably downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.

  3. Derived Works
    The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

  4. Integrity of The Author's Source Code
    The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

  5. No Discrimination Against Persons or Groups
    The license must not discriminate against any person or group of persons.

  6. No Discrimination Against Fields of Endeavor
    The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

  7. Distribution of License
    The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

  8. License Must Not Be Specific to a Product
    The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.

  9. License Must Not Restrict Other Software
    The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

  10. License Must Be Technology-Neutral
    No provision of the license may be predicated on any individual technology or style of interface.

The thing here (I think) is that your mindset isn't focused on the correct thing. You are thinking in a similar fashion of 'how can I make the most money out of people and remove any competition' leading to the conclusion that you cant let people see your code because then people could run it without paying you and the competition could use your code.

But the mind set is completely wrong.

Humans by their very nature are social and sharing, at least within their communities. and by that nature, your always going to get people "sharing" or "pirating" your software, becuase people want people to have things even if they dont have the monetary means to do so. And some people are just greedy.

The same is true for open code. Except the infrastructure around open code and open works allows for the share and share alike mentality.

People might take your code, but in doing so, you also get their code (unless you use a license that allows them to not contribute back). It encourages sharing and contribution, do it right and you can have people translate your program in many languages, QA and test your code, bug report and submit patches on systems you've never had.

Open source encouraged correctly can provide you with vast resources for minimal cost because the cost is that you share with the community what the community is sharing with you.

Can you just straight up make an open source program then sell it as a product? Probably not, traditional methods don't necessarily work, but traditional methods aren't necessarily good. Even Microsoft cant sell Windows these days as is evident with the change of direction with Windows 10.

So what other methods are there? It depends on the type of software.

Red Hat sells services and support. In doing so they hire many developers and consultants to work on open source products from the kernel, to GNOME, systemd, and a bunch of other things.

Discourse (this forum software) sells instances of the forum with and without support, with the ability to have features developed for paying customers that in turn become open source.

Blender sells books, movies, training, among other things, and I imaging may have paid develops from other companies.

Some people work as developers for companies and through those companies publish open code, through various means of showing the benefits of doing so, having a "20%" type of work environment for working on other projects of their choice, to the company simply having a stance on encouraging open code.

I do agree with the fact though that a lot of end users are just stingy people who have never paid for or gave money to a developer not contributed in any way. You'' always get people like that, but I wish we had a nice unifying effort to better encourage contribution either monetary or through contribution of skills.

that is my mind set currently, I am open to that changing. Except competition, nothing stops you from making a competing software right?

I agree, if someone is staving i see why they would steal, but people also steal because they think it is fun.

Sharing is a good thing helping people.

This is where you first start to loss me, not everyone codes. Like not everyone is a doctor and I definitely am not an artist. No doctor would use there skills to help me for free ( except by random acts of kindness). So why should I not charge the doctor for the program he wants to uses on his computer? I am just using my skills like he is to make money like he is.

I agree it dose help find problems and helps with testing as well as moving it into other languages.

I can see that, in a strong community. But to the general public (out side of that community) they really don't seem to care and they befit from others hard work for free. While the people that work in the community get nothing from the general community. If I had something that broke in an application and it happen on my brothers computer, he would never report it. most people would not take time from there day to, a decent amount of people think that it should just work and when it breaks they get mad(even if it is free) and skip the bug report page. Then when you build in telemetry to report the errors then your breaking privacy ( i do not support personal data, but crash reports i can see the need of).

I can see that. Makes perfect since, people don't to pay for software I understand that. That is why i am desperately wanting to understand the Free software model so that when it has to be free or people want use it I understand how it all works.

I see that as a good idea for a company like Red Hat and i very much like the idea of it.

But if they have to pay for the development of features then isn't that non free? (honest question)

I can see that working for some companies.

I really like that it can lead to advances in tech really quickly like openVPN.

I like the quote, but we don't have that, I know open source is the answer, but how does it encourage contributions?

I really want to get behind this for the reasons of it being a great idea and over all helping the world become a better place in a perfect society it would be amazing, but in our kind of screwed up world I don' think It would work well. I really want it to. The problem I see is that, if people want even pay $1.29 for a song why would they actively donate even for a good cause? Also how would vidya games work? I mean Free to plays? but I really don't see games like LOL as a free games I mean i have spent more on that game than I have on normal games, not forced to, but I mean if it was free then all the content would be right? so what service could they provide? Servers? I mean that still would be paying them for the game wouldn't it? If a story game like Skyrim came out for money wouldn't people just wait for the free forked versions? From my understanding games like that take an extreme amount of work how would they even pay the people that built it? Also for games like Mario how would that work would the accents of the game like the character Mario be free to use, how would companies market it if they didn't own Mario? i know I am missing something that is what this post is all about really am enjoying the conversion(s) and ideas that i am learning about.

Right now i think i agree in free software as in freedom., but not as in free beer.

They are paying for the time for a person to fix and/or upgrade and/or make better, the free software they want to use. They are not paying for the software. And after that the fix/upgrade/better software is also free for anyone to use. But the one spending the money has it first and didn't have to use their own time learning/developing/testing the new software. This might be where the doctor contributes, by using his money to create a feature previously lacking.

Okay I guess I can see that and i can see how that is a good idea. Would companies really go for it though? I mean why would companies pay for a feature that there competitor would use as well? how realistic is it is what I am asking? I want it succeed as the standard, but I don't see it really working no matter how much i want it to. People that are into programming i can see going for it, but I don't see average people going for it ya know.

In the context of your example of someone taking your code and making a competing product, those people would likely be programmers or another company. And would depending on the license be agreeing to release any changes they make, or may even directly contribute back to your codebase.

The next point you quote is the not all people are developers part.

This is a problem, in part I think our fault, and in part the end users fault.

There's many things that can be done to make this better. The first being to encourage participation. You'll never get everyone to take part, but if you inform your users, make it easy for them to help, and make it easy for them to know they actually have something to contribute (its almost always forgotten that open source/free software isn't just code. Good documentation, translation, testing, and just simple bug reporting is desperately needed)

This is really true for anything. You need to inform your users well, and make it easy for them. Bug reporting is an easy one, gnome for example has automatic bug reporting you can enable which for example on Fedora pushes crash reports to a server that records them for triage. Things like that lets users help with one click and gets out of the way unless they want to help further.

Your never going to get away from people who are self entitled assholes. It's unfortunate but always true, but most people aren't like that. And most people if you can correctly inform them will go out of there way to help at the very least in a small way because they like your software and want it to work.

I sent an email to a Debian developer the other day because they had talked about not receiving feedback. Took two minutes, i got a thank you and the feedback was sent off to the relevant people. Sometimes its that simple, but you have to show people that its that simple and that its rewarding in the long run. It's not a simple task.

No, its more like prioritisation. The discourse developers have their own road map, but if a much of the people paying for discourse hosting are asking for a feature they put that feature in (that is how it looks like they do it from what ive seen). The new feature is part of the open source code. It is free software.

I've seen a few features where they've said its a nice idea but not a priority unless a lot of their paid customers are wanting it or someone else has time to make it.

It also wouldn't stop one of they're customers or user of the software a 3rd party company or organisation for example, making a new feature and submitting a pull request to have it included. In both of those cases there is a monetary incentive for its creation, the former being your current paid customers have asked for a feature, the latter being a 3rd party paying one of their own employees to make something and submit it for inclusion.

Why would they buy your program if is was closed source and paid? Theres no difference. Propriatory is just slightly harder to get an initial copy of.

And you're spot on. Free software is freedom and not free beer. You can charge what you like.

Remember as well, it isnt just about the code that makes you money.

Why do people go to Red Hat? It's not for the code, necessarily. Your organisation needs a big Linux environment Red Hat is bound to come up, you could roll your own take all the Red Hat code and just use CentOS (sponsored by Red Hat btw, what does that tell you?), but you have to suffer all the costs and support yourself. Get a contract with Red Hat and you have support down to troubleshooting, fixing and pushing out a bug fix discovered in your environment depending on the case.

Look are the Linux kernel. It's an excellent example of this, and excellent example of both sides.

AMD and Intel for the most part now contribute directly to the Linux kernel in doing so there code is open and people can see how it works, the fear in the past has been oh what if our competitor would use this to gain some advantage? Well Its never been an Issue, Intel has done it for years, and now AMD are as well on their GPUs.

(Valve have developers working on the Linux graphics stack.. Valve don't sell GPUs, they have develops working on code for another companies hardware. Why? because it benefits them even if it benefits others)

The open code for them is beneficial in a number of ways, two of them for example are 3rd party contributions and tight integration into the kernel, it "just works" on everything.

In contrast you have Nvidia and ARM manufactures (phones for example) who frequently make binary closed drivers that plug into the kernel. The code its self might be fine, no one can see it, a "win" for them apparently, but its leaves everyone else at a disadvantage. You cant upgrade your kernel because your driver hasn't been updated, you cant build your own kernel because your ARM driver is specific to their version, you can flash a new OS because the drivers are closed source and incompatible.

This is where you start to see why the FSF freedoms become so important. The closed nature of the drivers alone without even considering any other things like security, bugs, etc. limit the users freedom to use their device how they want to use it. Not to mention there no indication that it give them any commercial benefit.

Look at something like Qt maybe. That gets contributions from many companies, what benefit do that have from giving away their contributions? Why do they do it? There's loads of reasons, but the collective contributions benefit everyone. If you were to horde your contributions there would be a fragmented horrible eco system that no one wants to use with a 100 different frameworks no one can work in. Instead they contribute to a single project for the collective benefit for all the companies who contribute and all those who don't.

People don't do this out of the goodness of their hearts. they do it because it benefits them, for some they gain money and thats their main benefit, for others they get software freedom, for others they benefit in the long run from a larger ecosystem, and so on.

Alright so re-cap, On the money issue that I have had, companies would succeed based on services provided not the tools. The code is free, but support isn't. I can see that working. Selling things like products( books and stuff) and using code as a tool to sale things not as a product it's self. So what makes people not 'steal' your code isn't your lock and key but your service that you provide being better than other that provide the same service. So a VPN it isn't about who made openVPN, but about who can provide the best service around that tool?

So in theory we could take Red Hat Linux code, create our own service for it and charge less then them and have decent service, but not have to maintain the code or anything? I feel Like i am missing something there. That would feel wrong to do.

I see how it works for somethings, but not how it works for others like video games?

I can see that, I think I see how it can be profitable and can help the world at once. I think I support the whole free software ideal. It is just scary to think about as someone that is learning programming and being ignorant the topic. It still feels a bit strange not charging for something I see as a product, but I can see how companies really wouldn't need to pay as much as they do now, i mean if there is an army of developers, you throw money at for new things in software is would cost less then the same software produced in house. I can see it possibly making more money than non free software. I mean companies like apple, Microsoft and other software giants would die or have to adapt quickly, but it happens.

And probably one of the protections we have. It feels back because it is, it goes against general social nature.

but there's always those people who don't have feelings, for those we have licenses.

The GPL for example exists to ensure those freedoms i mentioned, and as part of that means anyone who takes the code and adds to it must also make that code available under the same license. Which license you use depends on your needs.

What if one of your users finds a bug, and asks you to help fix it as part of your service? Say you have those resources and do fix it, say even that the piece of code its was under was under the MIT license so you don't have to release the fix as open source if you don't want to. Well now you have another issue, you have two code bases, your closed additions and the upstream code. In most cases it just makes financial sense to give the code upstream, it gets incorporated into the main code base and maintenance is easier. Everyone else benefits but so do you, and your company provided the fix. Reputation remember is also valuable, if your keeping code back, everyones going to know.

I will read into the license, to learn about how they work.

AHHHHHH shit that is what keeps people form the normal IRL "stealing" if they use your code they pretty much work for you, you get free code back and everything is good, one day they may have as much code as you do, but still have to pass it up stream meaning even though now it only 30% your code you can do what ever you want to it. No one can really take advantage of that, that is really nice. It creates competition in services while providing the absolute best code imaginable. The Licenses really bring it together for me. What are the consequences for breaking the licenses same as any thing else jail? or less extreme?

I am completely for this, a week ago I thought it was kind of dumb and after watching Richard Stallman interviews I thought it was way to radical. Only thing I really don't like about it now it the whole DRM thing with Music and DVD's I mean i really dont see how that could really work. And what is the consistence on ads? Are they open-source friendly or paying how i see it?

Keep an eye out for Elementary OS. They are the most recent distro to realease an App store for Linux in the hopes of getting people to pay for FOSS on the desktop side. They are using a 'Pay What You Want' model where you can get anything on the store for free but but encourage you to pay an amount of your choice if you enjoy the software and think its worth paying for. They just released it and have a reasonable community following so it will be interesting to see how they fair out with app sales.

This is a different side of the "can free software make money" question. FOSS has made a lot of money in the enterprise market but the professional/home desktop market has yet to crack that nut.