Concerns about releasing a project as Open Source [closed] - open-source

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
Community Wiki
I've been working on a fairly large project www.wikipediamaze.com and I initially intended for it to be open source, but as I get closer and closer to "done" I'm getting more and more nervous about releasing the code.
Initially I had hoped to use the project as sort of a "resume", if you will, as well as a learning tool for myself and others that I could blog about. And of course making a buck or two off of ads wouldn't be a bad thing either.
However, after dedicating my life to it for the last few months I'm really concerned about releasing the product as open source before I've reached "Critical Mass". Do I really want to risk putting it out there for someone to rip off the code and put up a competing product that does a better job of SEO and pretty much runs me out of the market? Is there anything I can do to protect myself from this aside from not releasing the code?
There are already competing products out there, but I've put a slightly different spin on it that I think will help make it successful. I'm just afraid I will shoot myself in the foot by releasing it to early.
Any thoughts or suggestions?
BTW the project was built using ASP.Net MVC, C#, Fluent NHibernate and Linq 2 NHibernate, Sql Server 2008, RPX Now (open id / OAuth), and twitter amongst other things.

Michael,
In my opinion these are the reasons that you might open source a project:
The project is a light version. You offer the pro version for a fee on your site.
The project can be used as a library in someone else project. You want to show good will towards other developers.
The project uses cutting edge technology and you want other developers to learn from what you are doing.
You want to do top of mind marketing. By making something open source and distributing through codeplex and robosoft; it might bring people to your site to click on ads.
You are single and have a lot of time on your hands. You want to support your open source product and add features because you are very bored.
The project is based on several open source projects and the licensing prevents you from releasing it as a commercial product.
With those tenants above, I think that unless 3, 4, or 5 apply I would release it as a commercial.

If you do consider releasing it as Open Source, you probably will want to go with a GNU public license. That will drive away most corporations from using the code and anyone who uses your code will also have to use the GPL, so you can always integrate what they've done into your product.
That said, you should still consider registering for a copyright. That way anyone (like a potential employer) who asks "Is this really your code" will be able to receive proof that yes, it really is your code.

I would definitely suggest going open source. People are going to copy your features whether you release the code or not.
If you do open source it, I would suggest using the AGPL (Affero GPL). This will prevent people from taking the code, making modifications and not releasing the code by not distributing it and just running it on there own servers.
By the way, cool site. It's sort of like WikiFighting though.

Related

I've made something that might be useful to the community. Now what? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
If the specifics are important, I made a cruisecontrol.net publisher plugin that notifies a series of phone numbers via voice, announcing the current state of the build. It uses Twilio to do so.
I'd like to avoid getting hung up on the specifics of what it is I've made, as I have this question a lot, with a number of little hobby one-offs. What's the state of the art as far as making my hobby output available to the world at large?
There seem to be a lot of options for open-source project hosting, community features, and what role to take in all of this. It's a little bewildering. What I'm looking for is to put this out into the wild for free and basically take a hands-off approach from there. Is that realistic? Which project hosting service can I use for free to allow developers to at least download the code, report issues and collaborate with each other to improve the product?
What snags have you run into that could make me regret this decision? I'm interested in war stories, advice and guidance on making this little product available to the community where it can be used.
GoogleCode is a decent self repository for open source code. Very easy to use and contains the ability to create a wiki for the project. It also has a very easy to use and understand bug reporting/forum style issue management system.
One easy way to quickly get code on a publicly accessible host is github.com. Hosting is free if everything you host is available to the public. People would be able to grab latest, and notify you when they have updates they think are worth merging.
You would include documentation as a README.
CodeProject is cool, sites like that would allow more community discussion then what I've seen on Github.
If it's just a small example, or a small piece of code, you might think about just posting an ariticle on a site like "Code Project", or a blog.
There's a lot of overhead with releasing an open-source project, and if you want to be hands-off, you might have an easier time just writing an article, and providing a .zip to download the code example.
Take a look at SourceForge.net, which is a website where programmers can create their open-source projects. It allows you to add new users which may have different rights on your project (from just being a contributer to being a full administrator) and it features many tools which you might want to use for your project, such as a bug tracker and SVN.
CodePlex is another good place for posting projects. There's lot's of C#/.NET there. In addition to all the basic project hosting stuff one of the nice things about it is that they support a whole slew of source control clients.

I'm starting an opensource project. Any advice? [closed]

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 7 years ago.
Improve this question
First of all, I reviewed this question, but I think I need a little more information since I've never worked on an opensource project before.
I'm starting an opensource project, currently hosted on Google code. It is a framework for creating flash games in ActionScript3 (programmer oriented). So far, so good, but I want to start building a community around it. The project is 60% finished from it's first official stable release (I am using Scrum to guide the development process, currently we are 3 people on the development team). By the way, the project has the MIT licence.
Do you have any advice on how to guide the development, any tools that I should look at?
Assembla vs Google code vs Trac vs Pivotal tracker?
What are you experiences on this?
If you're looking to build a community, it's not always about the tools, more about the processes you can use to build a community. There are plenty of people who will use whatever tool you give them or will choose (or refuse) to participate in a project based on the tools, but if the community stinks very few people will hang around.
I'd recommend spending some time thinking about how you're going to embrace a community. Are you ready to take the time to respond to bug reports? How will you handle enhancement requests? Are you willing to let something into the code if several people want it, but you don't? These are all critical issues that in the end will be far more important then Assmebla vs Trac.
You may want to check out Karl Fogel's book Producing Open Source Software or Jono Bacon's The Art of Community for more hints on managing and building a community.
First, big obvious download buttons so that a person can download your project, make it just plain easy. Secondly, forums so that people can give you feedback good and bad about the project.
Good luck on your project!
I would suggest checking out this book: http://producingoss.com/
I believe there is a free online and pdf version.
I have messed around with Trac some and it can certainly get the job done but if you are already doing an agile development process I would check out Pivotal Tracker. I use it on a side project and it's pretty slick, not to mention free to use. Pivotal has all the things you would expect: stories, backlog, velocity calculation, a few charts, etc.
Strive for adoption. The more users you get, the more people will contribute back.
Include lots of code samples on the wiki and let users download a sample application.
Make sure your API is well-documented with ASDoc.
Provide a roadmap to so that potential users can see your direction and intentions.
Be diligent about prioritizing feature requests and bugs. You and your team don't have time to do everything.
Make integration as seamless as possible. Hopefully users will be able to simply download a .swc (Flash library) and link it into their application.
Release early, release often. I hate having to download and use the HEAD revision from a repository because a team has only officially released one version of their project and it's a year old.
To me, guiding the development is more a matter of prioritizing what has to be done so I'm tempted to say: why don't you just use Google Code issue tracker as your project is already hosted there? I think it's offering all you need. Customize it to add a Estimates field if you want (for Scrum) and there you go.
Why do you think you would need something else? You already have a source repository, code reviews facilities, a wiki, mailing lists, an issue tracker, secured access for contributors. You don't need much more for collaborative work. What are you missing? Instant Messaging? Use Skype or Gtalk. IRC? You don't need it for now. No, really, I don't think a tool is gonna solve anything more here (even if you can't draw your burndown chart, not a big deal for a non full time project IMO).
So, because any other tool would be less well integrated with other Google Code services (e.g. I like to link my commits to issues using "Issue #ID" in comments which is automatically linked), I'd stick with what you currently have (maybe just add Gtalk/Skype to ease the communication/collaboration) and I'd start creating issues and prioritizing them. Good prioritization of work is the key to a successful project, there is no silver bullet tool that will do this for you. Then, plan fixed date milestones (releases) and assign most important issues to the upcoming milestone. Close as many issues as you can before the deadline. When the release time has come, release what has been done, postpone non implemented issue to the next milestone and start again.
If you need a software to support your scrum project... agile42 offers free Licenses of Agilo for Scrum Pro for open source projects.
Don't host your code on codeplex. I recently started an open source project as the basis of an article series on DotNetSlackers.com to show people how to build a site like SO. I mistakenly hosted this project on CodePlex. My automated build will periodically send me broken build emails as CodePlex will randomly go down for hours at a time. IT DRIVES ME NUTS!
If you plan to develop code that is free to the world but don't plan on letting anyone and everyone submit code to your project...host your own source control (perforce is free for a couple of users) or use something like google to host your code.

How would you migrate a multi-site ClearCase/ClearQuest environment to all Open Source? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I work in an multi-site environment that's currently using Rational ClearCase for source control and Rational ClearQuest for issue tracking (I accept your condolences ahead of time). As a rough estimate I would say this is supporting 200 engineers.
How would you effectively migrate this SCM methodology to a comparative, all Open Source tool suite? Not only would this save literally hundreds of thousands of dollars but I also believe it would improve developer productivity and very little downtime compared to the current system.
Platforms in use include Windows, Linux, UNIX and Solaris.
First, why do you think this would improve developer productivity? I haven't used ClearCase much, and ClearQuest not at all. What about these tools is hindering development?
Once you know what you want, you need to look at various tools. I'm fond of Subversion for SCM, as a general rule, but there are situations it isn't well suited for. I have no strong feelings on specific version tracking systems.
Bear in mind that migration is likely to be a really big project, depending on what you want to bring over from the Rational systems (checking everything out in ClearCase and starting entirely new projects in Subversion will be easy, but any history you want to keep is a lot more work), so there will be no immediate dollar savings. Moreover, switching tools is going to reduce developer productivity for a short time (possibly very short), so this is best seen as a long-term move. Make sure you get the tools you want up front, since you aren't going to want to do migrations very often.
Clearcase is awesome. I use to think like you but then after moving to perforce I realized how great dynamic views are.
I actually asked about this in another question. Basically it is really, really hard and is made much easier if you can live without your revision history.
As for bug tracking my experiences are that open source bug tracking tools are terrible. However using triggers it is usually very easy to integrate them with open source source control. As an example here is how to integrate bugzilla and subversion
Does BasketCase cheer you up any? You might be able to modify, or at least abstract some of the environment you already have...
I've done migration from ClearCase base to Git using Gitcc. Worked like a charm.
As for any tools, ClearCase comes with advantages and drawbacks.
We only use it for lager project with complex merge workflow, where UCM is very useful to visualize in advance the different branches.
Right now, we are evaluating various DVCS open-source solutions, but in my opinion, they cannot handle all kind of projects (like the one with too many files).
Condolences are not required, it seems that if you are working in a large scale development over more than one site, then you have the right tools for the job.
Attempting to make Open Source SCM products work over various sites will be a very interesting challenge - I've not seen something that will work securely, reliably and without a horrendous amount of work (though I'd love to be proved wrong!).
Although your licenses do cost a considerable amount, you also have access to the IBM tech support (who I've found very useful very often). How much would it cost if your open-source environment crashed to it's knees for some reason and your support network consisted of you and your colleagues? 200 developers unable to work effectively? Erk.
I'd be interested to hear why you think it would improve developer productivity. Do they have specific gripes? What do they find is an issue? Could we help you from here work it out with them?
In my humble opinion, Open Source tools are perfect for small to medium sized projects without a relative amount of complexity. I feel what you are attempting to do will be folly.

Resources for getting started with web development? [closed]

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
Let's say I woke up today and wanted to create a clone of StackOverflow.com, and reap the financial windfall of millions $0.02 ad clicks. Where do I start?
My understanding of web technologies are:
HTML is what is ultimately displayed
CSS is a mechanism for making HTML look pleasing
ASP.NET lets you add functionality using .NET(?)
JavaScript does stuff
AJAX does asyncronous stuff
... and the list goes on!
To write a good website to I just need to buy seven books and read them all? Are Web 2.0 sites really the synergy of all these technologies?
Where does someone go to get started down the path to creating professional-looking web sites, and what steps are there along the way.
While I have built my knowledge largely based on using the internet to search out what I want to know (w3schools.com helped a lot, as did A List Apart), a few good books have helped me along the way, though they have been platform/language-specific, so I'll avoid mentioning them unless someone is curious. For me, at least, having a book open so that I don't have to resize windows or switch between them is very valuable.
The first part of your list is ok, but the last few items need tweaking. ASP.NET adds server-side functionality (for the most part) to your application. This lives outside of the browser and is thus quite powerful and easily shared with a variety of end-users.
The problem (some say) with server-side processing is that your application must make a new HTTP request when you ask for an action to be performed. So if you click on a link to a page that yields a new set of data, you don't get instant results. The page reloads, or loads a separate page.
Javascript solves this to a degree--it allows you to respond to user input instantaneously. Do you want to display the sum of two numbers when the user clicks a button? You can do it with Javascript.
The problem with Javascript is that it can't talk directly to databases, or explore your server's file system, or other stuff like that. It lives in the browser--period.
AJAX bridges the gap between your user's browser and your server. With AJAX, Javascript makes the HTTP request without refreshing your page or loading a new one. Javascript talks to a server-side script (not necessarily ASP, either--works with PHP, Rails, Coldfusion, etc.) and sends and receives information. And because Javascript isn't dependent on page loads, a quick, snappy AJAX script can almost give the feeling of a common desktop application, in which you don't have to wait for HTTP requests when performing simple actions on your application's data.
I think that this series of Opera Articles will give you a good idea of web standards and basic concepts of web development.
2014 update: the Opera docs were relocated in 2012 to this section of webplatform.org:
http://docs.webplatform.org/wiki/Main_Page
Ian's answer has a lot of weight. You could buy all those books and read them all and know nothing about web development. What you really need to do is start with something that is not nearly as big as Stack Overflow. Start with your personal site. Read some web dev/css articles on a list apart. Learn about doctypes and why to use them. Add some css and change the colors around. Go over to quirksmode and peruse the site. Add some js. Follow some links on Crockfords site. You will probably stumble across his awesome video lectures, which you should watch. Then after that go back to all the js that you wrote and rewrite it. Then pick a server side language that you want to learn. Python is pretty easy, but it really doesn't matter what you pick. Then come back and integrate all those together in your site. At this point you will at least be getting started with web development and will have worked with several different technologies.
EDIT: I forgot to mention. READ BOOKS.
Many developers that I have worked with in the past have gotten through their career without really advancing after a certain point. I could be totally wrong, but I attribute it to not reading enough books and relying on using their same bad code over and over.
You could go out and buy a bunch of books and start reading them and quickly get overwhelmed in the seemingly massive learning curve it takes to go from nowhere, which is where it appears you are, to a rich internet entrepreneur, which is where you want to be.
Alternatively, and what I would suggest is, you could define a problem you want to solve, and then go about finding the solution to that problem. Start with something small. "I have a problem: I don't have a web site about myself.". Define what you need to do to solve that problem, learn the basics, and do it. Then, define a new problem, which probably relies on the solution to the first problem, find what you need to do, and do it.
This is how all technology professionals evolve. My first website was a personal site with nothing but text. Then I added some jokes and some movie quotes. Then I got tired of man-handling all the updates to I learned how to put them into a database and retrieve them from the database for display. It goes on and on.
Call me when you've got more money from your financial windfall than you know what to do with.
If you really just want to jump in with both feet, I would suggest looking at ColdFusion from Adobe. The developer edition is free and runs on windows, os x and linux. The documentation is authoritative and extensive, there is a very active developer community and only a few books you might want to dig into. The definitive guide is a series of books that can be found on Amazon
The nice thing about ColdFusion is that you can use it as a stepping stone to other languages and remain productive along the way. You can even mix it together with Java since it is itself written in java. There are also lots of goodies built in that you would have to scour the web for or pay more for in other languages. Things like full text indexing, graphing, server monitoring, ajax based controls, flash/flex integration, asynch os calls, etc.
You even have the choice of building object oriented code or procedural code, although some people would not count that as a benefit. Those people rarely agree on which style should win, though.
Cheers!
I think sitepoint is the best resource for learning best practices in web development. They have great articles, good references, and probably one of the best forums. However the people there can be a bit grumpy. ;)
If you are a real nerd, reading the specs for HTML 5 and CSS is also a good way to learn.
I'm with Ian on this one. Reading books is all well and good, but nothing beats getting stuck in. I actually started with a Dummies Guide to ASP (that'd be "classic" ASP), back in 1999.
If I was going to start from scratch today I'd be looking at something that covered a full stack solution, whether Apache/PHP/MySQL, RoR or whatever.
ATM I have no experience of Rails, but it might be a pretty good place to start as it includes a lot of stuff that you'd have to figure out early on otherwise (integration with a Scriptaculous, a JS framework) - you can always learn what going on under the hood at a later date.
.NET is always an option, and if you're comfortable with Visual Studio it may be the way to go, but it's not the easiest thing to pick up otherwise.
If you know a bit of HTML but are basically new to server-side programming you might look at ColdFusion. It's actually extremely powerful and like Rails includes lots of "out of the box" benefits. There's a Swiss company called Railo who are currently in the process of releasing an Open Source ColdFusion engine that is affiliated with JBoss.
Last and not least - don't forget databases! Sooner or later you'll need to get to grips with some pretty serious SQL...
CFML (aka "ColdFusion" even though that's really an Adobe product, not the language) is definitely easy to learn, and if you want FOSS for CFML, in addition to Railo you can use Open BlueDragon which is a GPL CFML engine.
Designing with Web Standards is a great first read!
http://www.zeldman.com/dwws/
I would recommend this book:
http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-528/dp/0735623341/ref=sr_1_1?ie=UTF8&s=books&qid=1218830714&sr=8-1
I have just read it to take the exam, and although I knew the web theory part, I found it to be of great value.
This of course is a ASP.NET specific book, but that is what I would recommend learning anyways.
After you learn all the ASP.NET stuff, I would suggest reading up on JQuery.
Happy coding :)

What is your experience using the TIBCO General Interface? [closed]

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 9 years ago.
Improve this question
It looks interesting and I've played around with it some --- but the development IDE in a web browser seems to be nightmare eventually.
Does anyone have experience using it and what are your thoughts?
We evaluated GI a few months ago for a project but didn't end up selecting it.
The IDE-in-a-browser (which is itself build with GI) actually works surprisingly well, though there are some features you normally expect from an editor that it lacks, most notably (and irritatingly) an Undo command. It's also impossible to do things like subdocument includes (practically a necessity for team development) from the IDE, though you can do them manually in the underlying XML and the IDE will respect them.
In the end the main reason we didn't go with it was that it was difficult to make the resulting web application look as good as the designers really wanted. It was relatively easy to build functionality, but the components were very restrictive in look and feel. The way GI renders its own document model to HTML involves a lot of style attributes which makes skinning in CSS all but impossible. It seems to prefer making web applications that look like applications, instead of web applications that look like websites.
So it would probably be great for building intranet type applications where look and feel isn't a huge issue, but I probably wouldn't use it to make a public facing site.
By the way for those that don't know, TIBCO GI is a completely separate product from the rest of TIBCO's SOA business integration stuff - General Interface was a separate company that was acquired by TIBCO a couple of years ago.
From a coworker who used to work at TIBCO:
TIBCO is a complicated, hard to use system because it's used for complicated, hard to solve problems.
Kieron does a good job of summarizing GI. It's really for enterprise web applications, not consumer-y widgets. The overhead of loading the entire GI framework and waiting a second or two for it to load doesn;t seem like much if you're firing up a call center or an employee provisioning application you're going to use for the next few hours. But, it seems like forever if you're waiting for a widget to load into an existing web page. And, even though, GI supports some nice functional and performance QA tools, they really are overkill unless you're working on something important and complex. So, if all you want is to toss a sexy looking datepicker on screen, use something else for sure.
Yup, couldn't agree more. I have developed a few applications with TIBCO GI and integrated it with TIBCO CIM. I work for TIBCO and GI is something I have been working with quite heavily doing some complicated stuff. Whilst doing it, I came across the odd sides of GI, things you sometimes can't explain but are just the way they are, working with JavaScript and dealing with multithreading issues can be a nightmare etc. It's good to create something quick without being too fussy about the sexiness of the application hence good for internal apps but not for consumers unless you want to get lost in a jungle of crazy CSS styling. The XML Mapping utility is a great feature saving you lots of time to implement SOA applications. The other good part is that deployment is really easy - GI apps use a combination of XML, XSLT, X-Path and JavaScript. In GI 3.8 there are also a couple of testing tools. Unfortunately, development inside GI's editor is slow and painful, so I recommend using an external editor like Notepad++.
you dont need to run tibco-GI from a web-browser, but you need to run the Programfile GI_Builder.exe which is an ActiveX application. just double-click on it and run-it.