Skip to content

JechoJekov/volunteer-software-development

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Volunteer (free) software development

About me

I am a Senior Software Engineer with over 20 years of professional experience. Please refer to my LinkedIn for information about my skills and work experience.

Contact

You can contact me on LinkedIn, Reddit, or via Google Forms.

Services

Volunteer (free) software development.

Types of software

I can work on any kind of project in which I decide to be involved. This includes the following:

  • Web, desktop and mobile applications
  • Console applications
  • Cloud-native applications
  • Server-side software (including for cloud infrastructure)
  • Firmware and low-level programming

Projects I do not work on:

  • Software that can be used for illegal or harmful purposes
  • Gambling-related software
  • Marketing-related software
  • Websites
  • E-commerce (I can make exceptions depending on the project)

Technologies

I have experience with the technologies mentioned below (amount others). However, I do not limit myself to these technologies and I choose the most appropriate technologies (including technologies I do not have experience with) for each project based on my research and experience. I am always interested to learn new technologies and broaden my perspective and skills.

I use the latest stable versions of programming languages, frameworks, components and third-party software (e.g. databases) unless a project requires otherwise.

The sections below include only more substantial technologies. A typical project requires using dozens of frameworks, components and tools.

  • Languages: C#, Java, C/C++, TypeScript, Assembly
  • Databases: MS SQL, MySQL, PostgreSQL
  • NoSQL databases: Elasticsearch, OpenSearch, Redis
  • Clouds: AWS, Azure
  • Frameworks: .NET/.NET Core/ASP.NET, Spring, Spring Boot, Node.js
  • Web frontend: Angular, TypeScript, JavaScript, HTML5, CSS, SASS, LESS
  • Desktop frontend: WPF
  • OS: Linux, Windows
  • Other: Concurrency, Security, Cryptography, TCP/IP and network protocols
  • Other: Cloud-native architecture, REST API, Microservices
  • Other: Docker
  • Other: CI/CD, DevOps

Technologies I enjoy using:

  • C# and the latest .NET-related frameworks, APIs and components
  • Java and the latest Java-related frameworks, APIs and components
  • TypeScript (as necessary)

Technologies I would like to learn:

  • Rust (language) and related frameworks, APIs, components and tools
  • ARM architecture and software development
  • RISC V architecture and software development
  • Firmware development
  • FPGA, ASIC, CPLD and other PLDs
  • .NET MAUI and any other frontend and UI technologies as necessary

UI development

I can develop decently looking and fully-functional UI for web, desktop and mobile applications. However, I am not an UI/UX expert. If the UI is complex or needs a custom design you need to engage an UI/UX expert.

Why do you offer your services as a volunteer?

There are countless open source projects developed by highly skilled individuals and teams. I can contribute to existing open source projects, however, I do not currently have a particular interest contributing to any specific project apart from the occasional bug report, bugfix or minor contribution.

At the same time there potentially are a lot of people and organizations that may have an idea for software that will help them improve their lives or the lives of others. Yet, they may not have the necessary resources to develop such software themselves or pay for software development. Since I do not have my own ideas for developing useful software I decided to leave it to people to tell me what they need and I to do what I am skilled in - developing software.

I have several objectives as a volunteer:

  • Assist individuals and organizations in developing software that they do not have the resources to develop by themselves.
  • Work on new, interesting and diverse projects that help broaden my perspective and establish new contacts and relations.
  • Keep my skills up-to-date as programming languages and frameworks evolve.
  • Acquire new skills and experience.

What kind of projects can you work on?

By scale

I can work on a project of any size as a single engineer or as a part of a team.

As a single engineer I can estimate the effort the project requires and the duration based on my availability. The estimated duration should be acceptable to both you and me. I would not engage with unrealistically complex projects that require a team effort.

As a part of a team - the scale depends on estimated effort, team size, time each member can dedicate, etc.

By granularity

I can work on both an entire project or a part of a project. This includes:

  • Developing entirely new software
  • Developing new features as part of an existing software or otherwise improving existing software
  • Developing various parts and components of new or existing software (especially as a part of a team)

How much time can you allocate for a project?

I work as a (paid) contractor typically full time, therefore, I can work on side projects only in my spare time and at my discretion.

Do you have any conditions for working as a volunteer?

The conditions depend on who you represent.

Individuals and for-profit organizations

The source code of the software must be published as FOSS (Free and open-source software) and publicly downloadable ( software) license which allows anyone to use and modify the software.

Non-profit organizations

The software can be either open-source or closed source. If it is closed source I may have additional conditions.

I am a non-technical person. What can I expect if I want to engage you as a volunteer?

Note

The process described in this section presumes development of new software.

A project is developed in several phases as outlined below.

Preparation

During this phase we discuss your idea and/or requirements. I provide feedback, recommendations and, if necessary, I can also expand on your idea and/or requirements. If the idea is too broad and we can discuss a scaled-down version of the idea that can be developed initially.

The outcome of this phase includes:

  • A list of the major parts of the software, for example, mobile/desktop/web apps and corresponding backend.
  • A list of features included in each part.
  • How the software will be deployed (e.g. on your personal PC, on premises, on rented servers, on cloud infrastructure).
  • Timeframe estimation.
  • Technologies that are going to be used.

Planning

During this phase I prepare an overall development plan and update the timeframe estimation.

Development

Software is developed using agile methodology. This means that features are planned and developed in one to two weeks long iterations. Newly developed features, improvements and bugfixes are made available for review and testing as soon as they are developed. After a certain point it can also be used for its intended purpose even if not all features have been fully developed.

You as the client is expected to be readily available to answer questions, assist in feature prioritization, provide feedback on completed work as well as testing as necessary.

FAQ

I am working on an open source software and I need assistance. Can you become a contributor?

Sure. Please contact me.

I have an idea for an open source software that requires a team. Can you be a part of the team?

Sure. Please contact me.

I found an open source software that fit my needs, however, it needs some customization. Can I engage you as a volunteer?

Sure. Please contact me.

I have a closed source software. Can I engage you as a volunteer to develop only a part of the software?

Subject to negotiation. At the minimum, the part I am developing must be open source and covered by a permissive license unencumbered by the license of the closed part of the software.

I am a computer science student. Can you help me with my project?

Only if the project is large enough to require multiple people to work on it. In addition, your own contribution to the project must be substantial.

Can software you developed for free be used for commercial purposes?

Yes. The software is published as FOSS (Free and open-source software) under a permissive license that allows the software to be used for any purpose, including:

  • Further developing the software (possibly under a different license)
  • Commercial purposes

However, please keep in mind that the software may contain open source third-party components that may restrict commercial use. Therefore, it is best to let me know from the beginning that the software will be used commercially so that I avoid using such components.

Can I hire you as a contractor or somebody else to further develop software that you initially developed for free?

Yes. Since the software is published as open source under a permissive license it can be used by anyone for any purpose, including further developing and expanding the software. Depending on the initial license additions made to the software can be closed source or open source published under a different open source license.

I really like the free software you have developed for me. Can I pay you for it?

Subject to negotiation. Please keep in mind that even if you pay me for software I developed for free the software will remain FOSS (Free and open-source software).

Can I hire you as a contractor?

Sure. Please contact me.

About

Volunteer (free) software development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published