Blog

  • Topic 4 – Versioning systems

    Informal thoughts

    I do agree that github is basically the backbone of the whole open source community because it is very important to have a solid way to read and make modifications to code. It makes it easy to debug, revert back to old code if an update is unsuccessful, mark releases and fork code completely to make it your own which is why it is the most commonly used versioning system. However, I do think there is a barrier to entry that makes non-code contributions from people specialising in non-coding fields less likely.

    Although I do think it is quite complicated, I don’t see a solution to this problem because obviously things do need to be complex in some ways to work. It would be interesting to see some kind of non-code-centred versioning systems and how they would work.

    GitHub and Git

    I used GitHub for my project because it is the most common versioning system however I was new to using it collaboratively. The most I’ve used GitHub collaboratively was looking at Ken’s code in our class repository last year. GitHub is so widely used because;

    • you can access your code offline – if you have git downloaded you will just have a copy on your computer so you can access the code locally
    • branching – easily handles changed made to the project so that merges can be approved
    • integration with other applications – because it is so popular, it can be easily integrated with other coding applications e.g. vs code
    • free open source – it is free to upload open source code therefore there is more incentive to upload code as open source as it comes at no cost to the user

    Other Forms of Versioning

    • subversion – its actually less complicated than github in my opinion but code cannot be accessed offline because it is all stored on one centralised server. It has similar functions to GitHub like merging and system tracking. There is an extremely high level of control.
    • Mercurial – commands are more simple however there is less version control because it doesn’t let you rewrite history. Old projects such as some game development studios used mercurial in the past.
    • communication – things like pull requests can take longer when sent solely on GitHub so many projects choose to use a separate messaging system to streamline the collaborative development process. I have seen this personally and one project even require you to message the founder on twitter if you find a bug.

  • Topic 7 – FLOSS Futures

    Informal thoughts

    I think that in the future, the more open a project is, the more likely it is to be picked up by a company and misused. For example, Joseph Redmon’s software was used by the government and he couldn’t really do much about it even thought he was ethically opposed to their use he could only stop working on it. This is a quite pessimistic view of how things are going but I do think that there are many case studies of companies taking over an open source project and kind of missing the point of the project.

    For example, Reddis was originally open source but then changed their licence to limit companies like amazon from using the software. Then someone from Amazon made a fork without this restrictive licence and all big companies such as Amazon used it. It could be argued that at least the big companies aren’t directly stealing, as they paid a developer to code the fork however it would’ve been much more ethical to just pay the original developer for the licence to begin with.

    New Licences

    Server Side Public Licence

    Many projects are changing from a GPL to a SSPL because it is useful to software as a service projects to make it so that all derivative works are completely open or the company has to pay them. This stops companies from using software and not reimbursing the creator. SSPL is essentially the same as GPL, just with a small stipulation that derivative works must be completely open or a licence has to be paid for. Therefore it could be argued that although this licence provides more safety for the developer, it isn’t ‘true’ open source.

    Ethical source licences

    Unlike traditional licences, they prohibit use based on ethical and moral restrictions. For example, as I discussed before the Hippocratic licence just requires derivative works to adhere to the promise of not being used to harm others. However, as I said, these sorts of licences are hard to enforce without a lot of money, as in the Joseph Redmon case, unless you are prepared to sue a whole government, it is hard to actually enforce these licences.

  • Topic 6 – Contributing Beyond Code

    Informal Thoughts

    It is important to be clear to a community that non-code contributions are welcomed and useful. If non-code contributions aren’t made, a project won’t be very useful because (no offence(to me)) people who are good at coding usually aren’t good at communiting so things like documentation, tutorials, the licence etc. won’t be as good as if someone more experieinced in that field contributed that.

    Without non-code contributions, a project is basically just some code and maybe some small instructions for how to use it and it is very unlikely that the project will last long outside of the founder updating it. When there is a lot of documentation, a forum to speak in, tutorials and legal help, it will often have a long life and code contributions are more likely as possible contributors can easily identify the needs of the community therefore make the most efficient contributions.

    Finally, when there is a lot of effort put into the accessibility the project can encourage a wide range of opinions therefore have the best contributions.

    Non-code contributions

    Community

    Contributions to a project can also be related to the community, which doesn’t have to be in github. Many open source projects have their own messaging community outside of github e.g. discord. Therefore, it is useful to the community to have someone to manage these messaging systems. This is also made more important because these forums of dicussion can be used by community members to discuss all sorts of things related to the project, including possible bugs or even ideas for where to take the projects.

    Documentation

    This is related to tutorials but not the same, it is important to include documentation for a project for accesibiliy. When first using a project, you need to know how it works and how to use/download it therefore good documentation can make a project more popular.

    Translation of said doumentation is also important for acessibility. If good translation is provided, not only will the project have a wider range of users but it will also have a higher quality of code contributions for obvious reasons.

    Tutorials

    Tutorials are important to projects, especially when most of the work is done by the user e.g. p5.js. A large community of tutorials create a lower barrier to entry and encourage users to explore all features of the software. Tutorials can also communicate to the founder features that are most commonly used and possible pain points with the user that they might not have seen. By making more advanced features more accessible, tutorials further foster community as well as sustained engagement of the user-base.

    Legal

    Although the legal issues that the average project runs into may not be extremely complicated, the knowlage of even what licence to use is a very useful non-code contribution. As mentioned, the average coder might not be knowlagable about what licence will be most appropriate for a specific project (because that isn’t their proffession so it can be expected that they won’t have any legal knowlage) so to have someone who udnerstand the project to give advice about this will be extremely valuable. Adding on to the documentation part, it is also useful to have someone familiar with ‘legalise’ to write the legal documentation, especially if stipulations are made that differ from the normal licences.

  • Topic 2 – Open-source collaboration

    Informal thoughts

    For my own projects, maybe its a self esteem issue, but I can never imagine having a BDL governance model. The model that makes the most sense to me is a more loose model that requires people to contribute to have a say in the direction a project goes hwoever I know that this is difficult to enforce

    It is interesting to see the way other projects have done things and just looking for projects I would like to contribute to, I have come across a lot of interesting governance models. For instance, a project I found on githup help-wanted that I was initially interested in, required contributers to be active in the community and contributing for at least 30 days before any of their contributions would be considered, as well as some sort of informal interview. I understand the need for these things when there is a project that you worked so hard on, but this just seems like a non-benevolent dictatiorship to me, it makes me think that my contributions probably aren’t welcome there and I think thats how other people felt also.

    Therefore, it is also important to consider the way in which contribution is encouraged in a project and how much respect is given to contributers consiering you aren’t paying them. It is important to communicate with the community in a way that is respecful to them while also keeping the chosen govenance model in place.

    Project Governance

    Users

    Projects can be adressed to a specific community, meaning it is that to up to that community to maintain therefore if that community is very active the project will thrive or if it isn’t active the project will remain stagnent e.g. blender. They can also be for contributers only i.e. a personal project that is posted to github so allows users to fork and add their own code however there is no community fostered. There are also projects addressed to a wider community e.g. an accessibility project that can’t maintain it themselves.

    Contributors

    If it is public contribution, people may break things if anyone is allowed to contribute. Common practice is a verification process for any contributers to the code so that only working code is being merged. Also, do contributers get to decide how the project progresses or any updates in the future?

    Project Lifespan

    One way to make projects is to accept that ideas come and go quickly or ’embrace death’. This is more related to personal projects as once a comunity is fostered, it is impossible to know if people will continue contributing or not whereas if you are just coding yourself, you can accept when an idea has been tried. Another way to make a project is to embrace longevity, usually when a community is behind a project, even if things break technologically it is still valuable to keep things up to date.

    Governance Models

    Benevolent Dictator for life/founder leader

    The author (or maybe not) who started the project have the final say in all major decisions, in the context of creative software where there is strong creative direction. The danger is that everything relies on that one person to engage in the project to get anything done

    Meritocracy

    There are roles given to community members based on senority and how familiar they are with the code and then these roles can vote for changes.

    Consensus Board

    All members have equal votes, equal responsibility and equal liablity. Anything the members vote on has to be agreed upon by all members of this ‘board’.Both of these 2 are hard to do with a larger number of users as the meritocracy requires roles to be distributed between possibly a large number of people and the consensus requires possibly a large number of people to agree on a direction for the project which obviously gets less likely the more people there are on the board.

    Formal structure

    Usually if a project is backed by a business, a more formal approach will be taken with rigid roles and less equal liability between roles e.g. blender foundation. Because they are business backed, it allows for developers to be paid which also highers the likelyhood of the project being kept up to date.

    Case Studies

    OpenFoam

    Their governance model allows for community members and contributers to pay if they want something to be implimented to help with project maintainance.

    Nudel

    Anyone is allowed to contribute to the code in any way, you are allowed to break the code if you want. Their philisophy is that if you have read the readme you are already a community member.

  • Topic 1 – Licences

    Informal thoughts

    In terms of how licences relate to my own work, the lectures related to licences have made me consider what sorts of licences I should be putting on my work when I publish it to git and whatnot. I think there are very little reasons for me to be so protective over some software that I make it completely closed source unless maybe I’m selling the licence to a company. I would probably used the licence chooser that Ken showed (hah) or choose a licence where if someone modifies my software they have to pay me if they make any money from it because I think that is the most fair way to do it (obviously depending on how useful my software it, I’m not going to copyright my pac man game)

    Licences

    General Public Licence

    GPL is a copyleft licence that allows users to have access to the source code and do with it however they want. However, anything created from software using this licence must also have this licence i.e. you can’t sell a modified version of software using this licence. It was the first copyleft licence avaliable for general use.

    MIT Licence

    This is a licence that also allows unrestricted use of the software and modification of the software. If you want to modify the software and make it closed source, you must include the mit copyright licence. So basically its different to GPL becuase you can make any modifications to the code you make closed source, as long as you specifiy where it came from whereas when using GPL software you cannot make money off of any modifications. This is probably better for the world overall but I can imagine its frustrating for someone who put a lot of time into modification of source code and would like to profit off of that.

    Collective conditions for re-use Licence

    This is also a copyleft licence but it has a different sentiment to the ownership of software. People are allowed to modify the origial software/code/database but if they are using it to make money, they may be required to give back to the original author. The modified work must also not ‘contribute to oppressive arrangements of power, privilege and difference’ as judged by the author.

    Hyppocratic licence

    Like the hyppocratic oath, the software can be used and modified in any way, as long as it is not used to harm anyone. In all of these licences, there is stipulation about how the software can be used however I think it would be almost impossible to enforce this when put into practice. If a government is using your facial recognition software to target people to kill, how would you even know to sue them? And how would you get the money to sure them?

    Public Domain

    This describes anything that has no specific licence or rules that apply to the use of this thing. Also applies to things that are made before copyright exsited (although that is uncommon with software)

  • Contribution 1

    Picking contribution

    I have some inspiration for what to contribute to however when choosing I would like to find something that I have an interest in to contribute to.

    Ideas

    • translation (I speak chinese xD)
    • stackoverflow fixing problems
    • coollab
    • hydra
    • find smaller open source project that needs debugging help (on help-wanted)
    • contribute to coding (or other) wiki
    • shadps4 documentation (I’m extremely familiar with this emulator)

    I can narrow it down because I don’t know C++ (coollab), hydra and shadps4 seem too complicated for me and I don’t really know coding terms iin chinese so don’t feel confident translating anthing coding related.

    The most viable idea is probably looking on github help-wanted or elsewhere for a small project that needs help with documentation or adding to a wiki.