Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I'm in the beginning of starting a small open source project. When cloning the main repository one gets a complete build environment with all the libraries and all the tools needed to make an official installer file, with correct version numbers.
I like the fact that anyone who wants to contribute can clone the repository and get started with anything they want. But I'm thinking this makes it to easy for Evil People to create malicious installers and release into the wild.
How should it be structured? What do you recommend including in the repository, versus keeping on the build server only?
Leaving out your support libraries and build tools makes it a huge pain for:
anybody who just wants to try out the software, perhaps on a platform for which you haven't provided an installer, or from a newer version that you've already released
anybody who wants to contribute or hack on your project.
These are the people that you need to pull out all the stops to cater to in a project that won't have a marketing department pimping it out and won't have a full-time paid team developing new features and fixing bugs (aka, personal/open-source/hobby projects).
Nobody is going to play around with or hack on your project if its a huge pain in the ass to even get it to build, and they'll just move on to the next thing. Somebody who, for whatever reason, has an interest in spoofing your software with malicious intentions, is already going to be putting in much more effort than it would take to hunt down a few other packages to put an installer together, so you're deterring the wrong subset of users for no appreciable gain. (Consider it a form of security through obscurity. Which never works.)
Focus on making your repository accessible to users and other developers.
As an aside, people who are downloading and building software should be in the habit of checking the code anyways, or at the very least deciding whether or not they trust the distributor before installing and running stuff locally.
What you seem to be looking for is a directory layout. You tagged your question language-agnostic, but it does depend on the language(s)/framework/build tool you want to use. To give you some examples
Standard directory layout if you build with maven
For mixed languages
django and ruby can create a default layout for you
It won't stop Evil People do evil things, but it will help your potential contributors.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
This may seem like an odd request, but as a computer science student, I'm always running into apps that make doing a development task easier than the way I was doing it before. Unfortunately, I tend to discover these apps long after doing things the hard way for far too long. I'm only on mac, but I figured I'd include both Mac and PC for future reference (if I ever have both systems).
For me, a student of C++ programming, I'm currently religiously using just a few pieces of software on Mac:
XCODE - IDE
Atom - Text Editing, HTML, and a few other things
Cyberduck - SFTP into my school's Linux system.
Terminal - (Haven't tried iTerm2 yet or any other Terminal
alternative)
Go2Shell - quick folder navigation for Terminal
What other utilitarian apps do you guys find particularly helpful for you as developers? Feel free to mention any software you may use to help your workflow.
I hope this question isn't too broad of a topic for S.O. If so, please feel free to remove it.
Also I didn't know what tag to use for this topic, so if the mods need to move this thread to a more appropriate area, that would be great.
Well, your list does not look bad at all ;)
Most developers will have a basic set of tools such as:
An IDE (Integrated development environment,e.g. phpStorm, Aptana,etc..) - where you write your code.
Various Compilers (e.g. C\CPP compiler for a C\CPP developer, or a LESS compiler for a web developer, whatever you use in your daily work) - to compile your raw code\markup into an executable\usable format.
A Debugger - to debug your code.
A Local development stack (e.g. LAMP, used mainly by web developers) - to execute your code and see how it works, debug, etc..
A Dependency management tool - optional: if you have a big project with many dependencies.
A Version control system (such as Git, SVN, etc..) - to maintain your project as a proper code repository.
An FTP client (if you upload files to a server)
That is generally what you need to write software\applications, anything in addition to that is considered helpful but you don't really need it.
There are some fancy tools for lazy people, those tools can save you some time but the huge disadvantage is when you start to rely on those tools and then you stop understanding how things actually are constructed and work - which will make the maintaining of your software a nightmare.
The best thing is to know when to use "helper" tools, but not many of them, use them only if you have to, and do not get to the situation where you rely on them - because then if they have a bug or a mysterious flaw, you will be dead in the water until the next hotfix or patch comes out.
Good luck !
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
This is a point that has always confused me about open source software. Normally, I write everything from scratch. What I'm trying to find out is what licenses allows me to do this?
Stay away from the GPL (LGPL is okay) and you won't have any problems. If you want to include GPLed packages in your application, things get tricky. BSD and MIT style licenses will get you the fewest obligations. In general, find the software package you want to use and read the license. They're usually pretty straightforward about what is and is not acceptable to do.
Why would you want to do more work? Of course you should. All you have to do is redistribute the OS technology source with your app (I am not a lawyer, but thats how I understand it).
The assumes
1) You are talking about an established open source solution, like hibernate, that you can reasonably assume works well.
2) The product you are developing is not using the open source technology as the 'secret sauce' that is going to make you money. Else you might have to open source that special part of your app.
If the software actually fits what you're trying to do, then yes it does cut down on development time. If the software mostly fits what you're trying to do you may end up spending more time trying to work with it rather than solving the problem it's meant to solve.
I am not a lawyer, so be sure to run a license past legal council if in doubt
As far as licensing goes, there are a number of licenses that allow you to incorporate the software into your commercial application. Most of the time as long as the license isn't a Copyleft type license (i.e. GPL) you can distribute the software as is. If you have to make changes that get distributed with your application, some licenses will requires the source also be distributed with it and an indication of what's different from the core project.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I have some projects for which I have ceased development a long time ago but still get code access requests for. I'm currently providing zipped packages from my personal web site. I think zipped packages are far from being useful (e.g. can't read code right away, can't provide URLs to individual source files, can't fork easily, lifetime is dependent on my own web page's).
I want that archaic code to be present on the net whether I keep my web page up or not. I saw the question "What's the best open source hosting site?". However, most sites request the project "to be active", Codeplex for instance. I didn't go through EULA's of all providers to see if they allow abandoned projects.
Are there elephants' graveyards for old code without activity restrictions? Which one would you pick, why?
UPDATE:
I tried both Google Code Hg and GitHub to see which is easier to use. Although GitHub required SSH key setup and additional steps, it was still much easier to get going. On Google Code even finding "create a project" page was a hassle in itself, every time I had to navigate through FAQ. Hg authentication did not work for some reason (yes I tried both encoding # to %%40 and removing gmail suffix completely, didn't work).
On GitHub, creating/forking a project is a breeze, supports syntax highlighting for Pascal source files which was also a plus for those archaic code.
Github would be a good choice. I don't think they have such a requirement and it would be simple for someone else to take over as the maintainer with no action necessary on your part.
I don't think code.google.com has such requirement.
You can host your project active or not for how long as you wish, and perhaps if a community will form around it grant someone the admin role to take the lead.
-- EDIT (based on ndp answer) --
You would obviously want to set your repository type to Mercurial, to allow easy cloning / branching for people interested in hacking on the code.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am going to create my first open source project and I am trying to decide where to host it google code or codeplex. It seems to me codeplex has a better set of community features and google code has real svn and a version diff tool. What has been a deciding factor for where to host your project?
For me the number one feature is getting my code in and out of the repositories, which is super easy with google code, and even assembla (altho I'm not up to date with what the latest terms of usage with assembla are). Codeplex leans towards TFS which is hard to use, but you can make it work with SVNBridge and tortoise, which is easier.
Once you worked out getting code in and out, it really comes down to personal preference.
Do you want a Wiki?
Do you want an issue tracker?
Do you want to have automated builds?
Do you need integration with third party tools (like fogbugz or trac)?
For Task Coach, I started with Sourceforge and Yahoo groups for mailinglists. When we added translations for Task Coach, we also started using Launchpad because of its support for editing translations via the web. I considered moving Task Coach to Launchpad completely (I like Bazaar) but Launchpad does not offer website hosting, while Sourceforge does. Also, Sourceforge offers multiple version control systems these days, including Bazaar. At the moment, I'm considering to use Uservoice to allow Task Coach users to vote for new features.
I guess these are the features I have been/are looking for in open source hosts:
Project website hosting
Support for end-user downloads
Source code version control
Bug/feature request/support request tracker
Support for editing translations
Mailinglists
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Can I make a difference at an open source project?
I haven't gotten a degree or anything but I am really interested in computer science and I have most of the fundamentals down.
Is there a project I can make a difference at? If not, any sites where I can further my knowledge and review the fundamentals (advanced concepts as well) of computer programming?
Scour around GitHub for projects, there are plenty that could use some help.
At the very least, write tests for untested code and submit them back. Even the littlest of contributions are appreciated.
Newcomers to an active Open Source project often feel like they are walking into a busy kitchen. A lot of different things going on and you feel like you are just in the way.
But often its not the case.
I can't point you to a specific project since i do not know your skillset or what you want to focus on.
Getting into an Open Source project can take time, its mostly based on the size of the project but usually its trying to see what is needed.
What i recommend is the same most people do, find a project that inspires you to make it better (even though its good to begin with), since that will make you want to stick around during the harder times.
Absolutely. Writing documentation and unit tests is good advice, but I'd suggest instead you find something you're particularly interested in, perhaps a piece of open source software you already use, and add a feature that you yourself want to use. It'll be more difficult, but it'll actually keep your interest and get you real world experience. Worst case your patch won't be accepted, but if it's a decent project they'll tell you why and what you need to do to make it acceptable.
Or, pick a small problem you want to see solved, and write an open source solution for it. The key is actually be interested in the problem you're solving.
Open source software is not magically high quality code; in fact it's not unusual to find sloppy code and practices. Don't be intimidated, jump in and give it a try. My first piece of open source still has a few users over 10 years later, but the code quality makes me cringe everytime I look at it.
You can visit Sourceforge.net and look for projects that need help.