More

Are there any OpenSource ArcObjects Projects?

Are there any OpenSource ArcObjects Projects?


One of the major benefits of developing GIS applications based on opensource libraries, is that many projects spring up on top of them which are also opensource.

Well designed opensource projects are great for seeing:

  • which coding patterns should be used
  • what coding styles to follow
  • how to structure larger projects
  • what unit tests to include
  • autodocumentation tools and procedures
  • sourcecontrol workflows

The ArcObjects Code Gallery seems the best place to look, but most examples I've looked at are very small pieces of functionality or single tools, rather than full applications.

The SharpGIS project is a nice .NET example to follow, but are there any ArcObjects specific projects?


Updated with Examples:

http://eagl.codeplex.com/

Easy ArcGIS Library is a set of C# .net classes that wrap the common functionality of ArcObjects, that help ArcGIS developers do a lot of common functions in less time and direct way.

And from the same developer:

http://arcgisslcontrols.codeplex.com/

ArcGISSLControls is a set of ArcGIS Silverlight controls that is built on top of the ArcGIS Silverlight SDK, it is developed in C# programming language.


GDAL has an ArcObjects driver and you can see the source code in SVN the tree. The Ziggis project is ArcObject's based and open source. I know they have a newer version that is also open source, but I cannot find the source location.

Otherwise, ESRI's Arcscript's site is another place to look at.


Hy, I created a Java Print SOE for high quality printouts with a Flex widget.

The code is available in the CodeGallery:

http://www.arcgis.com/home/item.html?id=6809086326ea4c76bf026a32bb9dd698

Tom


I haven't had a chance to play with Earthworm - An ORM for Esri Geodatabase (via ArcObjects), but it looks good.


Are there any open source projects written in APL? [closed]

Want to improve this question? Update the question so it's on-topic for Stack Overflow.

I'm trying to learn APL (Kona), and I'm looking for example projects so I can get an understanding of how an experienced APL'er would organize his/her code.

Any open source projects would be helpful but, non-financial or anything lacking heavy math would be awesome.


5 Answers 5

There is an open source ransomware called Hidden Tear. The code encrypts files with the following extensions: ".txt", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".jpg", ".png", ".csv", ".sql", ".mdb", ".sln", ".php", ".asp", ".aspx", ".html", ".xml", ".psd" by default with AES 256 bit encryption.

It is open source so it could be easily customized to not only look for additional files but also the way encryption is done.

I doubt you'll find ransomware source code floating around in the general public. I'd guess there is code out there somewhere but I wouldn't risk visiting shady sites on the "Darknet" (I really hate that term).

(Un)fortunately, ransomware is not very complex. For a university project, simply encrypting and replacing files in

/Documents is probably good enough. The trick is making the decryption key only obtainable through you.

  1. Generate Symmetric Key K
  2. Encrypt all files in

Obtain K from server.

Decrypt files with K

I know that notorious ransomware use Asymmetric Encryption, but it actually isn't necessary at all. For example, improperly implemented RSA by CryptoDefense actually made it easier to write automated decryption tools, because they didn't realize that a Windows Crypto API keeps local copies of generated RSA Private Keys. Putting blind faith in a crypto system won't make it secure. What's important is that the decryption key is not recoverable on the system. Whether or not this is done by zero'ing memory or encrypting K with an RSA Public Key really does not matter.

No. There is not and I am quite sure there will never be: imagine nuclear weapons are available to buy in the shop.

The spirit of the Open Source community is luckily investing positive efforts to develop tools that protect users ranging from anti viruses such as ClamAV to web vulnerability scanners such as Grabber, passing by tools that are rather intended to assess users' systems such as those you can find in Kali Linux used for pentesting (of course, you can always use the knife to kill someone instead).

But it is true that there are some open source nefarious tools such as ZombieBrowserPack which is a plugin can be manipulated remotely to steal authentication credentials and even bypass two-factor authentication mechanisms such as the ones implemented by Yahoo and Google, or simply hijack your Facebook account and much more. However, this must not lead to misunderstanding: this plugin is developed by Zoltan Balazs as a POC for academic purposes as similar other tools in the same context: virus code is present freely on Internet but it is intended for academic purposes and it can not harm because any malware which code is released its life is ended as anti-virus companies conceive a protection against it.


Short answer: No. The Java (JRE and JDK) binaries provided by Oracle come so many strings attached that they are practically unfit for any usage or redistribution with proprietary or open source-licensed software including GPL-licensed software.

The only sane alternative is to consider the OpenJDK which is using a combo of licenses and is primarily under the GPL 2.0 with Classpath exception which is typically considered suitable for any open source or proprietary usage. See below for some pointers to OpenJDK pre-built binaries or build it yourself.

The Oracle JREs and JDKs (i.e. NOT the OpenJDK) are released under a proprietary license called the Oracle Binary Code License Agreement.

This license has evolved quite a bit over the years from its start at Sun to the point that it is barely usable for internal development and probably not much more. Oracle wants you to buy a commercial license instead for most usages.

In particular as one of the many issues in this license, the field of use restrictions have evolved to be so vague and far reaching as to make you wonder if any usage is allowed (emphasis is mine):

"General Purpose Desktop Computers and Servers" means computers, including desktop and laptop computers, or servers, used for general computing functions under end user control (such as but not specifically limited to email, general purpose Internet browsing, and office suite productivity tools). The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: Software embedded in or bundled with industrial control systems, wireless mobile telephones, wireless handheld devices, kiosks, TV/STB, Blu-ray Disc devices, telematics and network control switching equipment, printers and storage management systems, and other related systems are excluded from this definition and not licensed under this Agreement.

These kind of restrictions would not fly much with any open source redistribution and with the GPL in particular.

This makes essentially any "LICENSE TO DISTRIBUTE" grants in section C and D moot in most cases. You may have a very narrow use case that may fit in these restrictions but all the lawyers I have consulted with on this license are quite uncomfortable with its terms for most practical cases.

The only sane alternative is to consider the OpenJDK whether for use in conjunction with FOSS or proprietary software. This is weirdly enough essentially the same codebase.

The OpenJDK project itself does not redistribute binaries and building an OpenJDK can be a rather engaged process. Linux distros have packages for this. For other OSes, there are some pre-built available for instance from Azul.

Update 2016-12: Actually the latest news is that Oracle is now enforcing commercial licensing and commercial audits if you do not use an OpenJDK.


3 Answers 3

Open source projects are very diverse. There are some where a Scrum-like approach can work, but not in the general case.

Scrum timeboxes work into fixed-sized sprints. There are many open source projects with a fixed release schedule. But usually, this schedule is about integrating work that has already been done, not about doing the development.

Scrum expects the team to commit to a sprint goal. But most open source projects are driven by volunteers. Contribution is voluntary and fluctuating. It would be toxic for these projects to feel entitled to a repeated dependable commitment from volunteers. The project cannot tell volunteers what to do. It can of course refuse to accept contributions that are not part of the sprint backlog, but that's an idiotic waste of goodwill and development resources. Speaking as an open source maintainers, one-off pull requests with a bugfix are tremendously valuable. But this contribution is in no way planable.

There are of course scenarios where this would not be a problem. E.g some development may be paid for through grants. These grants may specify a goal and/or timebox. But grants are typically given to a single person, not a team. Sometimes projects are led by paid contributors, e.g. for a project that was started by a company. The company can of course use Scrum to plan their contributions.

I assume by open source project you do not refer to projects that are worked on by paid employees. "By the book" Scrum usually won't work, because there's some difficulties:

  • Sprints require firm time commitments, and benefit a lot from regular and repeated firm time commitments.
  • Scrum benefits from frequent team interaction, which is easier if most of the team is in the same office or at least in a similar time zone.
  • Based on my experience, Product Owners - on average - tend to be significantly better if they are not actively writing code for the project.
  • Quite a few contributors have a specific interest in specific features they want to develop, few to no interest in some other features, and no incentive to listen to anyone who wants to tell them which features to work on.
  • Different time commitments create difficulties in arranging a daily stand up meeting

The issues can be worked around, and with the right project and the right people Scrum may work anyway. But even then, there are probably better processes.

I recommend you break down Scrum and take the stuff you need, then implement in a way that fits the project and the team:

  • Have a clear project vision that is known and accepted by all.
  • Have a shared prioritized list of things that should be done sooner than others.
  • Make sure people know who's currently working on what.
  • Have regular short to medium term shared goals, and reviews after they have been reached.

Saying Scrum can't work because of those arguments is like saying that Scrum can't work in a company, because they are currently using waterfall. While Scrum and waterfall don't play well with each other (or rather contradict each other) it does not mean that you cannot establish Scrum there, if everyone goes along. Likewise I would not state that Scrum can't work in an open source project per se, but it comes with its own straits.

People tend not to work on Open Source projects full time

While this is true, Scrum embraces this kind of uncertainties, too. Given we have a very short cycle of one week, everyone that wants to contribute will have to commit for at least that one week and plan how much time they will be able to spend on the project. Based on how much time every contributor can afford, it's possible to plan the stories to work on. Anyway, doing Scrum won't be really possible, if the contributors tend to stay away from the mandatory meetings.

Of course this is not restricted to weekly sprint cycles.

While some projects have a group of core contributors many pull requests are ad-hoc with people submitting pull requests which most likely won't contribute to any agreed sprint goal

Open source does not necessarily mean that everyone can contribute like they want to. There are open source projects with very strict rules on how to contribute (Linux for example). People planning to contribute to the project will be required to attend the sprint planning, etc. You can make this a requirement to contribute to the project. Of course people disliking this may create a fork and work on this how they like, but this will be another project, then.

Communities are often run via messaging systems, blogs, and forums rather than formal meetings like plannings sessions, retrospectives, and sprint reviews

You can have the formal meetings via telephone- or rather videoconferences. While this does not make Scrum easier, it's well possible. Just because it is not done in the projects it does not mean that it can't be done.

The direction of projects is often more of a democracy (or whoever contributes the most) rather than being focused by a Product Owner

Yes, you will have to have someone who acts as a product owner. Again, the usual practice does not keep you from doing it differently. Furthermore, there are examples of single persons driving a project an steering it in one direction (again, think Linux).

Long story short, while you are probably correct that it's anything but the rule, I don't think it is impossible. If you have a competent owner chosing and prioritizing the user stories and contributors that are willing to contribute that way, nothing will keep you from doing Scrum.

Anyway - as was pointed out by the commentors - it's quite likely to be a mess and probably not a good idea. Just to mention some points why it might fail:

  • It'll be hard to get a hard core of contributors - without it, Scrum won't play its strengths
    • Without a very stable team you could roll a dice to estimate story points - it might work equally well

    (Side note: A Kanban-like approach might work better if you'd like to give some structure to your OSS project. It does not depend on roles, the buy-in is way lower and it's much more time-flexible, but still gives you a good overview of the WiP.)


    Zubra builds custom GIS applications and solutions that allow customers to interact with and analyze spatial information, edit data, maps, and view the results of all these operations in order to solve strategic business needs. From large AM/FM systems to locating the nearest point of interest, Zubra offers a whole range of services. We provide expert GIS technical support and mapping services, offering a cost-effective, reliable alternative to implementing or expanding your own GIS capabilities

    • Create Open-source Web and Data Maps using Leaflet, PostgreSQL and other open-source technologies
    • Map and Route Creation Services: Custom maps designed from client supplied materials, databases, and/or existing spatial datasets. Maps are frequently created for marketing, real-estate development, energy exploration, or publication. Customer locations, custom sales territories, and route maps are tailored to your needs
    • Data Creation: Create GIS ready datasets from AutoCAD files, demographic data, addresses, GPS collected data points, etc.
    • Georeferencing: Rectifying images and vector data to a real-world coordinate system
    • Data Integration: Data acquisition, Linking data from multiple systems
    • Digitizing
    • Data Conversion/Migration: Convert data from one or more disparate formats
    • Geocoding/Reverse-Geocoding
    • Database Design: Create customized databases for your specific application
    • Application requirements and design
    • Custom App Development: Build custom geo-enabled applications to automate workflows and increase business efficiency
    • GIS system integration
    • Training
    • Operational support

    1 Answer 1

    There are various options, but I would recommend you to go with Redmine.

    Redmine is a flexible project management web application. Written using the Ruby on Rails framework, it is cross-platform and cross-database.

    Redmine is open source and released under the terms of the GNU General Public License v2 (GPL).

    It has the features you request and is very scalable, it can easily cope with large organisations and multiple projects, but is largely seamless for small teams. Some of the features that might interest you:


    6 Answers 6

    Whether or not you can make money with an open source project, depends on many things. Based on experience, I see three factors that are important:

    1. Which license did you choose? Take a look at the schema in this answer and you'll see that on one end, you have permissive licenses and on the other hand you have licenses with a strong copyleft.
    2. Which type of product are you offering? There's a huge difference between offering a tool for consumers (something they can just download, run and use) and offering a library in a B2B context, for instance: a piece of software that parses XML, but that doesn't work unless you write some code around it.
    3. What is your business? Are you in the business of selling software (e.g. you sell a game that can be downloaded and that can be played off line) or are you in the business of selling a service (e.g. a game that can't be downloaded and that is played on line).

    When to use a license with strong copyleft?

    Although it was different in the past, I see that small "developer-driven" companies, wanting to create a software business in a B2B context, often benefit from a license such as the AGPL.

    Warning: the original authors of the AGPL consider what I am going to write next as nefarious use of the AGPL, but this is the way companies such as MongoDB, SugarCRM, and others make money.

    I have my open source project of my own, and in the past 15 years I have tried making money in the following ways:

    • Donations: In the early years, users of my software would buy my kids Lego. I would receive books for my birth day. Somebody even sent me cookies. While this was certainly appreciated. That doesn't make a business. Also: I live in Belgium: when somebody sent me a DVD from the US, (1) I had to pay taxes on it (customs could be excessive), (2) I couldn't play it because the DVD could not be played in my region (unless I fiddled with my DVD player).
    • Making money with ads: I was an early adopter of Google AdSense. In 2004, I made $8,900 with ads, in 2005 $14,500, but the revenue dropped to $6,200 in 2006, $2,350 in 2007 and $1,900. I had more content, more clicks, but less revenue. I noticed two things: (1) most of the people advertising on my site, were competitors, (2) if you want to make money with ads, you need to specialize in making money with ads. As a result, I removed all ads. Ads as a business model are dead. See for instance what Codehaus wrote when they shut down their business: the hosting cost was exceeding the cost of the revenue from ads. You can also see that SourceForge has taken the wrong path
    • Writing documentation: I wrote two books for Manning Publications about my project. Manning sold about 11,600 copies of the first edition and almost 9,200 of the second edition. Illegal copies of the book were already available before FedEx had the chance to deliver me my first paper copies. As an author, I received 10% on the profits. I made approximately $33K with the first book and approximately $30K with the second book. I used this money as seed funding for my company. Writing documentation is hard work and when you compare the time you spend on writing such a book versus the money you make selling the book, you soon understand that this is not a sustainable source of money.
    • Selling support and maintenance: this works, but it's hard. It's not something you can do on your own, because it's not scalable: the more customers you have, the more employees you need to answer support tickets. Also: you face competition of professional players who offer support for a stack of open source products. By supporting more than one product, such a company can afford hiring more employees. In my case: I couldn't compete with OpenLogic when I first started doing business with my product. I had to find a different business model.
    • Offering professional services: you offer the software for free, but you sell professional services to install the software and to integrate your product into a tailor-made project. This is even harder than offering support, because you have to compete against all the large software integrators who have more money, more employees, more everything than you. Your business will even be less scalable than support and worse: all the time you spend on projects for customers is time you don't spend on further developing your product. The Heartbleed disaster is an example of how that can go wrong.

    If you are a single developer looking to start a business, making money with open source software, your best chance at being successful, is by offering the software under a dual license.

    Which license? Well, you have to avoid Being forked into oblivion by a more powerful contributor, so only a license with a strong copyleft makes sense. You'll understand what this means when you read the Eat me section of the ZeroMQ guide. I quote:

    In the software industry, there are friends, foes, and food. BSD makes most people see us as lunch. Closed source makes most people see us as enemies. GPL, however, makes most people our allies.

    How does one make money with a copyleft license? That's explained in this video. You offer the software as free, open source software free of charge for every one who obeys the rules of the license. Companies who don't want to follow those rules, can still use the software, provided that they buy the software under another, commercial license. This model is called dual licensing. The weaker the copyleft of the license, the harder it will be to sell your product.

    When to use open source with a permissive license?

    If you are not a developer and you want to start a business offering a service. Or if you work a large corporation (say Google, Amazon. ), then you probably won't like what I wrote in the previous section.

    You want to use software and do whatever you want with it. You don't like GPL-style licenses, because those limit what you can do with the software. You may even have to pay for the software you're using! The horror!

    In this case, it is in your best interest to brainwash developers into thinking that open source software should be free as in free beer, that the GPL is bad and that open source software should not be offered commercially. You'll sponsor the most radical zealots that are popular among developers looking for a role model. As a result, these developers will start producing software under a permissive license that you can use any way you want to.

    Your task will be to make choices: to separate the wheat from the chaff. It is not your business to sell software:

    • You are offering software as a service (e.g. Google)
    • You have a totally different business that relies on software (e.g. Amazon)
    • You sell closed source, proprietary products and you make a lot of money in professional services (e.g. IBM or Wipro)
    • Your main business is ads your users are your product (e.g. Facebook)

    Once you are successful enough in one of the above, you can afford giving away your software for free (as in free beer). As you have gained a monopoly, it doesn't matter if competitors can also use your software. If they are peers, they may improve the code and redistribute it, in which case you benefit too. If they are contenders just starting a new business, you either crush them (because your brand is king and your marketing budget is bigger) or buy them (and possibly kill them afterwards).

    This is a great way to make money with open source software, but I see some disadvantages. The moment a large corporation decides that the value created by a project doesn't justify the investment, the "charity" will stop. Oracle dropped GlassFish, IBM backed away from Geronimo, Pivotal left Groovy. Only when disaster strikes (like was the case with Heartbleed), these companies suddenly start raising money to "save the developers."

    That's not a sustainable model for open source, is it?

    I don't know if there are any numbers about this, but it wouldn't surprise me if you'd see that most of the software distributed under a permissive license is written by employees (people working for a large corporation), whereas most of the software distributed under a copyleft license is written by entrepreneurs (people owning or working for a small to medium-sized company).

    Has it always been this way?

    No, free and open source software has undergone an enormous change. Large companies used to distribute FUD about software that was offered for free. Often these are the same companies who are now claiming that open source software should be free as in free beer. If you want to know how it was in the early days, I recommend watching OS Revolution.

    How am I making money today?

    If you want to read more about my history in open source, I recommend reading the 1M/1M blog by Sramana Mitra. I founded my first open source company in 2008, 8 years after the first open source release of my product. In 2014, the group was profitable with a revenue of 5 million euro and an EBITDA of 43%. The company ranked 28th place in Deloitte's Technology Fast 500 in the EMEA region and it won first place as the fastest growing technology company in Belgium in the period 2009-2014.

    Update 2021

    In the meantime, I realized an exit. Right after I left the company, I wrote a book sharing my experience: Entreprenerd: Building a Multi-Million-Dollar Business with Open Source Software.


    2 Answers 2

    If one has an open source project that is deployed somewhere in the cloud via a continuous delivery pipeline, how can the programmatic credentials needed for the CI/CD to deploy the application remains private?

    It really depends on which CI/CD you use.

    For instance, I use Travis and Appveyor. Both support to encrypt "secrets" in their manifests.

    For instance in this build loop I build Python wheels on Appveyor and they get uploaded to bintray, which would be a minimal Ci/CD-like pipeline of sorts. The same applies here with Travis (for Linux and Mac).

    This other loop has the same approach but also uses Docker and things end in bintray too.

    If I were to deploy for instance a web app to a live server, I would likely use exactly the same approach. e.g.:

    1. if my build is successful and is for a tag .
    2. . encrypt as secrets the deployment credentials as shown above .
    3. and have my CI handle the decryption and do the actual deployment proper.

    But the point is that in order to have those hidden credentials on your CI/CD build machine, you have to somehow give your build machine a way to get to them. Meaning giving it creds that will end up in the repo again.

    The thing here is that my regular credentials to the Ci (which are NOT in the repo) are what is used by the Ci tool to encrypt and decrypt at build time my encrypted secrets.

    So yes, the Ci knows how to decrypt these credentials. But an attacker would need to have control of the Ci/CD and of their eventually also encrypted auth DB to compromise my "secrets".

    If you use a home grown or internally deployed Ci/Cd such as a Jenkins of sorts, you could use the same approach. For instance, use a GPG key or some other mechanism and give the Ci/CD the way to decrypt at runtime. In all cases, at some level you need to trust some of the machines in the pipeline. You could make it more complex by adding intermediaries each with their own credentials too for making it harder.


    We found at least 10 Websites Listing below when search with easy gis projects on Search Engine

    Free Simple GIS Projects and Data

    • SimpleUSA Project & Dataset is a comprehensive data set of US state boundaries, cities, roadways, waterways, and more including a full geocoding and street routing database, available for free download below
    • The SimpleUSA project is a free project to use with the Simple GIS Client application
    • Download Simple USA Project and Dataset

    Looking for fun (and relatively simple) GIS project idea : gis

    Reddit.com DA: 14 PA: 50 MOZ Rank: 65

    • Looking for fun (and relatively simple) GIS project idea
    • I am looking for a fun topic to do a GIS project on for my intro to GIS class, keeping in mind I am looking for good, free data to use
    • New comments cannot be posted and votes cannot be cast

    What are the interesting project topics using GIS

    Quora.com DA: 13 PA: 50 MOZ Rank: 65

    • This is a very difficult procedure infact through out the M
    • For choosing your thesis topic, firstly you should go through your theory subjects and should find the one which is more interesting and more feasible to be done(wi

    Top 25 Coolest GIS Visualizations StateScoop

    Statescoop.com DA: 14 PA: 35 MOZ Rank: 52

    • Serving as the hub for transportation andinfrastructure projects, the Utah Department of Transportation (UDOT)Data Portal is one of the most comprehensive GIS-enabled data portals in the country
    • Combined with the state’s economic development map and crash mapping portal, Utah’s GISefforts are impressive for their breadth with projects

    What Should I Do For My GIS Project

    • Hello Joseph! I found this blog post while looking for ideas to come up with a GIS project in my 300-level GIS class at Montclair University
    • I am a member of the Society of Conservation GIS that you are a part of and realized that you are the author of this blog post (and several others!).

    Mapping and GIS for Absolute Beginners Mango

    Mangomap.com DA: 12 PA: 45 MOZ Rank: 62

    • The term GIS is a catch all term for any system that can store, manipulate and display digital map data, they range from powerful desktop systems such as QGIS and Esri’s ArcGIS through to web based systems such as Mango
    • The two main types of data used in a GIS system are vector and raster.

    Independent GIS Projects and How to Start Them

    Gislounge.com DA: 17 PA: 32 MOZ Rank: 55

    Independent GIS Projects and How to Start Them When the topic is independent GIS work, ArcGIS Online is a great option for those looking to create maps to help their communities – without having to spend exorbitant amounts on licensing fees.

    How to Build a Simple GIS Project

    Youtube.com DA: 15 PA: 6 MOZ Rank: 28

    How to Build a Simple GIS Project for planning and development of a given rural settlement using free GIS software - QGIS AND Google EarthAfter watching this

    What should I do for my GIS project

    These goals that address poverty, health, education, and other topics (1) can benefit by the spatial perspective and spatial analysis that GIS enables and (2) provide one way for you to anchor your project in "what really matters." Don't get discouraged and think that your project might not be "big picture enough", but may be focused on water

    GIS projects GIS applications GIS and Watershed GIS

    Nchse.org DA: 13 PA: 23 MOZ Rank: 45

    • Get here guidance on GIS applications with case studoes and examples
    • Village level MIS on GIS is a right tool to Planning and effective implementation
    • Site selection, land/water conservation planning easily
    • GIS MIS on Health also makes it easy to identify areas of need and further scope of providing services
    • GIS application techniques with proven examples.

    GIS Project Ideas topics Collection For Engineering

    As a project, students can develop a GIS application or tool that allow users to create interactive queries (user-created searches), analyze spatial information, edit …