Microsoft Visual Studio Code license to use - visual-studio-code

I found that the Visual Studio Code FAQ answer says we can use vscode for personal of commercial use (see: https://code.visualstudio.com/docs/supporting/faq#_is-vs-code-free) with link to the product license: https://code.visualstudio.com/license that contains following:
INSTALLATION AND USE RIGHTS
a. General. You may use any number of copies of the software to develop and test your applications, including deployment within your internal network corporate network.
b. Demo use. The uses permitted above include use of the software in demonstrating your applications.
Does item "b. Demo use." limits the item "a. General."? So is it allowed to use Visual Studio Code for DEMO purpose only, without right to develop commercial applications, provide service to create commercial code based on the Visual Studio Code IDE?

Not a lawyer, but I'd say that 1b is specifically singling out using VSCode for demos as a use case that they permit, in addition to the above use cases. If I had to guess what motivated it, I'd assume:
People doing commercial screencasts of demo libraries
Those people who develop apps and publish a fast-forward of them coding it on youtube
Generally anyone using the image (legal term, not executable) of vscode in a commercial way that could be construed as microsoft endorsing their product in any way.
I think they're including this clause because demoing your app to (potential) customers, clients, students, etc. isn't necessarily a development concern, so it's not covered by 1a.
Another thing that makes me think that it's a permissive clause rather than a restrictive one is that they're not using restrictive terms such as "exclusively" or "only". Compare the following:
b. Demo use. The uses permitted above include use of the software in demonstrating your applications.
b. Demo use. The uses permitted above include ONLY use of the software in demonstrating your applications.
The second one is obviously a modifier on "the uses permitted above" that restricts those uses, where the first one clarifies an intended use case.
TLDR
It's probably fine, but if you're really worried, CYA by consulting your company's legal department.

Related

General InkScape, Unity3D (and other free tools) Licencing

I know that this is going to be kind of a silly question (I'm sorry; I tried googling, but I'm still a little confused). Here's what I want to know.
Suppose that I create an asset/game with InkScape/Unity3D (or any other freeware/open source tool). Do I need permission from the organization who made the freeware/open source tool to use the created asset for commercial purposes?
Thanks.
What cjmarsh says is definitely true about software licensing in general. Although, I would not be that insistent on talking to a lawyer (unless the project generates large amounts of money, that is).
Yet, I'd like to add a brief point about the difference in the tools OP is asking about (inkscape and unity):
inkscape
You are not bound by inkscape's license in distributing drawings produced by it. The license is about code distribution, which means the code of inkscape itself. The resulting drawing of an inkscape project is in SVG (or some other format depending on preference).
SVG is a standard on its own, published by the W3C, and does not contain any piece of code from inkscape.
unity
On the other hand, when developing with unity you are using API calls that originate from the unity libraries themselves (possibly wrapped by extra functions for whichever language you're using). Moreover, you project needs to link against the unity libraries in order to work.
Since your project will use pieces of unity code, you're bound by the license obligations from unity.
Software licensing is a complicated topic and to get a definitive answer to your question you'll have to speak to a lawyer. In layman's terms: you can use open source software for commercial purposes but there are often caveats depending on the specific license used. I should also note that Unity3D is not open source, however you can use the personal edition if you gross less than $100k annually. For more details check out their licensing page.
Inkscape on the other hand is free and open source with a good license for content creators: the GNU General Public License so "In short, this means you are free to use and distribute Inkscape for any purpose, commercial or non-commercial, without any restrictions. You are also free to modify the program as you wish, but with the only restriction that if you distribute the modified version, you must provide access to the source code of the distributed version."
There are quite a few different licenses like the most liberal of all CC0 Public Domain, a license that essentially puts your stuff in the public domain, making it completely free for any purpose to everyone, without you needing to be dead for 60 years. Then there are licenses like the LGPL which still lets you use it for commerical purposes but requires you to publicly disclose any changes made to the code that was under the license and if you embed it in your application (statically link it) then you have to release your product under the same license. There's also the kind of license like CC BY 3.0, a Creative Commons license that lets you do whatever you want so long as you give an attribution, include the license, and mention if it was modified. Here's a list of more open source licenses to give you an idea of how many there are.
Without paying the fees to consult a lawyer like everyone will tell you to do and nobody actually does you can check out summaries of the different licenses at sites like tldrlegal.com as well as read through them yourself and check out the licensing page on the individual sites of the software you use. In my opinion the software author's intention for distributing the software is more important to recognize than the legalese. Although you should also recognize the legalese.
Bottom line is you don't need explicit permission from the author because they already give it in the form of an open source license, so long as you satisfy the conditions of the license.

How to use DreamWeaver with a dynamic site or CMS

A client I'm working with has a large CMS installed (Kentico) that they use for various sites. For their intranet they want to downsize to a simpler web system.
The site involves authentication (Active Directory), groups, and potentially some server-side code.
The client's on-staff web designer, who's in charge, really wants to be able to use DreamWeaver to manage/design the intranet. This is almost non-negotiable, and could be considered a requirement.
I'm not really sure what DreamWeaver allows. Being ignorant to DreamWeaver, I always saw it as a web-designer platform for static websites, or in use with php.
How feasible is it to use DreamWeaver to manage an intranet site that requires authentication, groups, etc., along with server-side code? Also, are there any CMS's that easily integrate DreamWeaver? Anything in .NET?
Dreamweaver is mostly a front-end tool that was made for coding HTML, CSS, and JavaScript and being able to preview the design as you wrote your code. As an Adobe product, the real emphasis there is on design: it's made to make visualizing the front-end of a website easy. It's a good starting point for a lot graphic designers to step into web development (it's where I started a few years ago), but you'll rarely find a veteran web designer that still uses it. You'll certainly not find any .NET devs using it who know better.
Now, there's nothing wrong if that's this person's favorite tool. However, Dreamweaver is NOT the right tool for working with .NET applications like Kentico. This would be akin to someone wanting to build a house using nothing but bricks and mortar. Sure, you'll be able make the outside look nice, but there's a lot more to a house than just the siding.
If your client has their heart set on Kentico, then they should look into working with Visual Studio. The community edition is free to use, even for commercial applications. I believe the difference between community and pro editions is that pro editions allow you install plugins and extensions and integrate with other tools whereas community edition is just the vanilla IDE.
Dreamweaver can still be used as their HTML, CSS and JS editor. It may have added support for other languages, but that's irrelevant when we're talking about .NET applications. Visual Studio is Microsoft's IDE built specifically for working with .NET apps, and there's really nothing better (especially if you have a pro license and install Resharper from JetBrains). Many other devs will agree with me on this point.
EDIT: I forgot to address the other part of your question about Dreamweaver and other CMSs.
This series of video tutorials about working with Dreamweaver and WordPress should give you a good idea of what Dreamweaver is capable of. Notice when the narrator is actually using Dreamweaver and what he's using it for.
Jerreck's comments are great, and I'll just add a slightly different spin on them:
NET and Visual Studio live in the realm of developers. We use both for our core, cloud-based application, which is deployed in Microsoft Azure. Think: LEFT brain. I've worked with development teams for a long time. It is a rare developer who is also a strong designer. That's not a complaint; just an observation.
Dreamweaver lives in the realm of the web designer, who needs to manipulate HTML and CSS to achieve the effect they wish. Many of these designers ALSO start their designs in PhotoShop before moving them over to HTML and CSS. Think: RIGHT brain. I've worked with designers of all stripes for a long time as well. It is a rare designer who is also a strong developer. That's not a complaint; just another observation.
The ideal workflow starts with the designer (like the one at your client who needs to use Dreamweaver), who then passes his or her work (along with the HTML and CSS) to the developer, who in our case implements it in .NET -- so this is where Jerreck's comments miss the mark a bit.
While I know nothing of the designer at your client, I can tell you based on my experience very FEW designers ever make the leap to Visual Studio, nor should they. Most will know HTML reasonably well. Some will know CSS -- though too many of them still depend on outdated tables to create their designs. A few can code with JavaScript or PHP -- though many will cut and paste code that will work for them without actually understanding HOW it works.
Now add to this content management. This isn't really for the designer OR the developer; it's for the people who have to maintain the site (who might otherwise design like welders and write code like plumbers; because that is sometimes what they actually do).
The best content management systems are WYSIWYG, and allow the author or editor to easily add or edit content. Most CMS users do not user Dreamweaver OR Visual Studio, and many of them use free (or purchased) templates for their pages (or have a designer and developer build templates).
If your client needs CMS and it must be in .NET, you might check out DNN (formerly known as DotNetNuke). Most CMS also offer a wide range of plugins that can enhance function (such as assuring responsive design, tying in to a shopping cart or providing authentication for users).
I'd say your work ahead is going to be spending some serious time defining requirements.

License restrictions on including a DLL in another repo? [closed]

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
Answered:
They don't allow any kind of redistribution with 2.6, supposedly, unless you have licenses for it. But they don't sell licenses for it. But they give it away free. But, who knows, i think they just want us to buy an overpriced thing we don't need to write a free utility. I guess I'll look at NVelocity or TaHoGen...
I am concerned about placing some DLLs that go with a project, which is also free (on SF.net), but hasn't had a particular license associated with it yet. This is a bit lawerly, but hopefully not so much so that it can't be answered through experience. And there is a lot of that here :)
I think the issues is really with CodeSmith 2.6, since they have their own "custom" eula. To view the "sourcelicense.txt" you need to download the zip and open it, but i've copied the relevant parts into the post (sorry they are so long!)
Edit:
What the app does it use CodeSmith 2.6
dlls, along with a collection of
custom templates, to generate class
files/etc. We don't need the
codesmith source, only the compiled
result. Of course, those dll's will
be distributed with the application in
the .exe. The question is whether or
not stuffing them in to the repo is
somehow different (or legally more
questionable) than putting them into a
.msi/.exe installer.
I'll approach codesmith about this,
but I would like a better
understanding than I have now, is all.
They are currently not in the repo,
but it would ease things for the dev
processess if they were.
End Edit
1 MIT Licensed component (doesn't seem like an issue)
Mysql.Data.dll (not sure of the license)
CodeSmith 2.6 Freeware DLLS
Compiled to DLL form
SchemaExplorer.dll / etc
CodeSmith.Engine.dll
I'd like to be able to make the project self hosting, and not have the user go traipsing around, downloading and/or compiling copies of the source (especially if they find a newer version or older verision, which could easily happen with the MIT/msql components.)
There will be nice instructions if the DLLs can't be included, but life is infinitely simpler if they can, and there are no chances of the project going "dead" if one of them is suddenly yanked.
SOURCE CODE LICENSE (from CodeSmith 2.6 eula/sourcelicense.txt)
The SOURCE CODE is protected by United States copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOURCE CODE is licensed, not sold.
GRANT OF LICENSE. This EULA grants you the following rights:
Source Code. You may install and compile one copy of the SOURCE CODE on a single computer. The primary user of the computer on which the SOURCE CODE is installed may make a second copy for his or her exclusive use on a portable computer.
Storage/Network Use. You may also store or install a copy of the SOURCE CODE on a storage device, such as a network server, used only to install or compile the SOURCE CODE on your other computers over an internal network; however, you must acquire and dedicate a license for each separate computer on which the SOURCE CODE is installed or compiled from the storage device. A license for the SOURCE CODE may not be shared or used concurrently on different computers.
Use and Modification. SMITH grants you the right to use and modify the SOURCE CODE to better fit your needs. You may not distribute the SOURCE CODE, or any modified version of the SOURCE CODE, in any form. Any modifications made to the SOURCE CODE will continue to be subject to the terms and conditions of this EULA. Any modified versions of the SOURCE CODE may only be executed in object form by users also owning a SOURCE CODE LICENSE or by users owning a CodeSmith Professional license.
Use of Generated Output. You may distribute the output of your custom templates or the included templates in any way.
DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
Separation of Components. The SOURCE CODE is licensed as a single product.
Redistribution. The SOURCE CODE may not be redistributed in any way.
Custom Template Distribution. You may distribute your custom templates for the SOURCE CODE only if they are offered free of charge.
No Rental. You may not rent, lease, lend or provide commercial hosting services to third parties with the SOURCE CODE.
Non-Transferable. This license may not be transfered or sold in any way.
Termination. Without prejudice to any other rights, SMITH may terminate this EULA if you fail to comply with the terms and conditions of this EULA. In such event, you must destroy all copies of the SOURCE CODE and all of its component parts.
ADDITIONAL SOFTWARE/SERVICES.
Support Services. SMITH may, but is not obligated to, provide you with support services related to the SOURCE CODE.
Supplements. This EULA applies to additional software and updates of the SOURCE CODE, including without limitation supplements, service packages, hot fixes, or add-on components (collectively "Supplements") that SMITH may provide to you or make available to you after the date you obtain your initial copy of the SOURCE CODE, unless other terms are provided along with such Supplements.
COPYRIGHT. All title and copyrights in and to the SOURCE CODE (including but not limited to any images, photographs, animations, video, audio, music, text, SAMPLE CODE, and "applets" incorporated into the SOURCE CODE) and any copies of the SOURCE CODE are owned by SMITH. The SOURCE CODE is protected by copyright laws and international treaty provisions. Therefore, you must treat the SOURCE CODE like any other copyrighted material except that you may install the SOURCE CODE.
First: Stackoverflow is not a lawyer and can not provide legal advice. Take any legal information here with a grain of salt, and ask a lawyer if it matters.
Umm, that isn't anything close to a free software license, so I don't think it follows sf.net rules.
It doesn't grant you any permission to redistribute, either. In fact, it bars it:
2.2 Redistribution. The SOURCE CODE may not be redistributed in any way.
Possibly, your DLL is a "custom template", in which case it must be distributed free of charge, which violates clause 1 of the Open Source Definition
Custom Template Distribution. You may distribute your custom templates for the SOURCE CODE only if they are offered free of charge.
Other than that, you definitely need to clarify what you're doing.
I'm not familiar with what CodeSmith does, and I don't know exactly what you're doing with it. Obviously, you aren't going to redistribute source code, but they don't seem all that concerned with what you might redistribute.
There's that "Use of Generated Output" clause; are you going to be distributing template output only? Were you going to change their source code for this project? Without knowing the answers to questions like these, I can't advise you.
You could clarify what you're doing, or ask CodeSmith. I'm not sure that finding a lawyer who can answer your specific questions is going to be easy, as there's a lot of technical stuff going on in that license.

Technologies for centrally storing and publishing perl scripts and "small tools"?

My problem:
There are numerous (>100) tools the development teams use which are "home" written. They are sometimes a perl script, or a "web page", or just something that does a couple of small functions. I need to find a way (as part of my "Middle Manager in charge of tools" job) to collect these into a single catalogue. None of these tools are "productised" in any way.
I need to be able to somehow measure usage of each tool. Uploading or submitting a tool should be a trivial exercise, as should downloading the tool. Must have version management and control.
Is there a technology for centrally storing and publishing these small tools?
Does anyone have experience of such quixotic ventures in other companies?
Supplementary question...
What sort of process checks are appropriate? Do you have a review board for tools going up on the server?
I want to ensure we don't have unintentional consequences from scripts. I also want to ensure that the "Business Critical" set are identified and maintained.
We use a web-accessible front-end to SVN for 'field-developed' scripts, customizations, and small tools.
addition
What I use now is an instance of trac tied to svn on my web server. I don't know if trac handles checking-in code as well - the version I'm running does not.
The front-end I referred to previously was in use where I used to work, and I don't know what it was exactly.

What should I propose for a reusable code library organization?

My organization has begun slowly repurposing itself to a less product-oriented business model and more contract-oriented business model over the last year or two. During the past year, I was shifted into the new contracting business to help put out fires and fill orders. While the year as a whole was profitable (and therefore, by at least one measure, successful, we had a couple projects that really dinged our numbers for the year back around June.
I was talking with my manager before the Christmas holiday, and he mentioned that, while he doesn't like the term "post-mortem" (I have no idea what's wrong with the term, any business folks or managers out there know?), he did want to hold a meeting sometime mid-January where the entire contract group would review the year and try to figure out what went right, what went wrong, and what initiatives we can perform to try to improve profitability.
For various reasons (I'll go into more detail if it's requested), I believe that one thing our team, and indeed the organization as a whole, would benefit from is some form of organized code-sharing. The same things get done again and again by different people and they end up getting done (and broken) in different ways. I'd like to at least establish a repository where people can grab code that performs a certain task and include (or, realistically, copy/paste) that code in their own projects.
What should I propose as a workable common source repository for a team of at least 10-12 full-time devs, plus anywhere from 5-50 (very) part time developers who are temporarily loaned to the contract group for specialized work?
The answer required some cultural information for any chance at a reasonable answer, so I'll provide it here, along with some of my thoughts on the topic:
Developers will not be forced to use this repository. The barrier to
entry must be as low as possible to
encourage participation, or it will
be ignored. Sadly, this means
that anything which requires an
additional software client to be
installed and run will likely fail.
ClickOnce deployment's about as
close as we can get, and that's awfully iffy.
We are a risk-averse, Microsoft shop. I may be able to sell open-source solutions, but they'll be looked upon with suspicion. All devs have VSS, the corporate director has declared that VSTS is not viable going forward. If it isn't too difficult a setup and the license is liberal, I could still try to ninja a VSTS server into the lab.
Some of my fellow devs care about writing quality, reliable software, some don't. I'd like to protect any shared code written by those who care from those who don't. Common configuration management practices (like checking out code while it's being worked on) are completely ignored by at least a fifth of my colleagues on the contract team.
We're better at writing processes than following them. I will pretty much have to have some form of written process to be able to sell this to my manager. I believe it will have to be lightweight, flexible, and enforced by the tools to be remotely relevant because my manager is the only person who will ever read it.
Don't assume best practices. I would very much like to include things like mandatory code reviews to enforce use of static analysis tools (FxCop, StyleCop) on common code. This raises the bar, however, because no such practices are currently performed in a consistent manner.
I will be happy to provide any additional requested information. :)
EDIT: (Responsing to questions)
Perhaps contracting isn't the correct term. We absolutely own our own code assets. A significant part of the business model on paper (though not, yet, in practice) is that we own the code/projects we write and we can re-sell them to other customers. Our projects typically take the form of adding some special functionality to one of the company's many existing software products.
From the sounds of it you have a opportunity during the "post-mortem"to present some solutions. I would create a presentation outlining your ideas and present them at this meeting. Before that I would recommend that you set up some solutions and demonstrate it during your presentation. Some things to do -
Evangelize component based programming (A good read is Programming .NET Components - Jubal Lowy). Advocate the DRY (Don't Repeat Yourself) principle of coding.
Set up a central common location in you repository for all your re-usable code libraries. This should have the reference implementation of your re-usable code library.
Make it easy for people to use your code libraries by providing project templates for common scenarios with the code libraries already baked in. This way your colleagues will have a consistent template to work from. You can leverage the VS.NET project template capabilities to this - check out the following links VSX Project System (VS.Net 2008), Code Project article on creating Project Templates
Use a build automation tool like MSBuild (which is bundled in VS2005 and up) to copy over just the components needed for a particular project. Make this part of your build setup in the IDE (VS.NET 2005 and up have nifty ways to set up pre-compile and post-compile tasks using MSBuild)
I know there is resistance for open source solutions but I would still recommend setting up and using a continuous automation system like CruiseControl.NET so that you can leverage it to compile and test your projects on a regular basis from a central repository where the re-usable code library is maintained. This way any changes to the code library can be quickly checked to make sure it does not break anything, It also helps bring out version issues with the various projects.
If you can set this up on a machine and show it during your post-mortem as part of the steps that can be taken to improve, you should get better buy since you are showing something already working that can be scaled up easily.
Hope this helps and best of luck with your evangelism :-)
I came across this set of frameworks recently called the Chuck Norris Frameworks - They are available on NuGet at http://nuget.org/packages/chucknorris . You should definitely check them out, as they have some nice templates for your ASP.NET projects. Also definitely checkout Nuget.
organize by topic, require unit tests (feature-level) for check-in/acceptance into library; add a wiki to explain what/why and for searching
One question: You say this is a consulting group. What code assets do you have? I would think most of your teams' coding efforts would be owned by your clients as part of your work-for-hire contract. If you are going to do this you need to make absolutely certain that your contracts grant you rights to your employees' work.
Maven has solved code reuse in the Java community - you should go check it out.
I have a .NET developer that's devised something similar for our internal use for .NET assemblies. Because there's no comparable .NET Internet community, this tool will just access an internal repository in our corporate network. Otherwise will work rather much the way Maven does.
Maven could really be used to manage .NET assemblies directly (we use it with our Flex .swf and .swc code modules) is just .NET folk would have to get over using a Java tool and would probably have to write a Maven plugin to drive msbuild.
First of all for code organization check out Microsoft Framework Design Guidelines at http://msdn.microsoft.com/en-us/library/ms229042.aspx and then create a central Location source control for the new framework that your going to create. Set up some default namespaces, assemblies for cleaner seperation and make sure everyone gets a daily build.
Just an additional point, since we have "shared code" in my shop as well.
We found out this is very much a packaging issue:
Whatever code your are producing or tool you are using, what you should have is a common build tool able to package your sources into a "delivery component", with everything used to actually execute the code, but also the documentation (compressed), and the source (compressed).
The main interest into having a such a "delivery package unit" is to have as less files to deploy as possible, in order to ease the download of those units.
The build process can very well be managed by Maven or any other (ant/nant) tool you want.
When some audit team want to examine all our projects, we just deploy on their post the same packages we deploy on a production machine, except they will un-compressed the source files and do their work.
Since our source files also includes whatever files are needed to compile them (like for instance eclipse files), they even can re-compile those projects in their development environment).
That way:
Developers will not be forced to use this repository. The barrier to entry must be as low as possible to encourage participation, or it will be ignored: it is just a script to execute to get the "delivery module" with everything in it they need (a maven repository can be used for that too)
We are a risk-averse, Microsoft shop: you can use any repository you want
Some of my fellow devs care about writing quality, reliable software, some don't: this has nothing to do with the quality of code written in these packages modules
We're better at writing processes than following them: the only process involved in this is the packaging process, and it can be fairly automated
Don't assume best practices: you are not forced to apply any kind of static code analysis before packaging executable and source files.